当前位置: 首页 > 知识库问答 >
问题:

配置单元查询在配置单元客户端和JDBC中的不同执行方式

葛成济
2023-03-14

下面的查询是我通过配置单元客户端、Java程序JDBC和Beeline执行的。

SELECT
*
FROM
    TABLE_ONE AS t1
    JOIN TABLE_TWO t2 ON t2.p_id = t1.p_id 
        AND t2.p_n_id = t1.p_n_id 
        AND t2.d_id = t1.d_id
    JOIN TABLE_THREE t3 ON t3.d_m_id = t1.d_m_id
        AND t3.d_p_id = t1.d_p_id
    JOIN TABLE_FOUR t4 ON t4.c_id = t1.c_id
    JOIN TABLE_FIVE t5 ON t5.a_n_id = t1.a_n_id
    JOIN TABLE_SIX t6 ON t6.d_p_p_s_id = t1.d_p_p_s_id
        AND t6.a_v_id = t1.a_v_id
        AND t6.p_f_id = t1.p_f_id

在Hive cilent上执行时,只需21s就完成了,而Java程序JDBC和beeline分别需要110s和200s。

DriverManager.getConnection("jdbc:hive2://<ip address of hive gateway server>:10000/default?zeroDateTimeBehavior=round").
  • 配置单元客户端仅使用一个映射器就完成了此操作。
  • Java JDBC和beeline执行了5个MR作业。每个MR作业需要2个映射器和1个还原器。

下面是每个表的行计数。

  • table_one有44981条记录。
  • table_two有2173条记录。
  • table_three有1415条记录。
  • table_four有249条记录。
  • table_five有168条记录。
  • table_six有255条记录。
  • 输出有33362条记录。

共有1个答案

封瑞
2023-03-14

一些可以帮助您调试的建议:

从beeline客户端运行时设置的属性&通过JDBC。

我怀疑属性hive.auto.convert.join导致了此行为。

赫特。

 类似资料:
  • 我使用Hortonworks Hadoop HDP-2.3.2.0-2950 Hive over Tez引擎 下面2个查询来自Java代码。 ——运行良好 ——失败并出现错误 我的代码:

  • 当我运行以下配置单元命令时 hive-e‘选择msg,将(*)从表中计数为cnt,其中像“%abcd%”这样的msg按msg排序按cnt desc;’sed的/[\t]/,/g'>table.csv 失败:ParseException第1:89行无法识别表达式规范中“like”“%”“password”附近的输入 我知道在指定字符串“%abcd%”时有问题。该命令在配置单元环境中工作正常,但这里我

  • 低于范围的查询与连接工作正常lap,但不是在Hiveserver2/Hive. CLI。 请建议如何在Hive中使用范围连接查询。 配置单元版本:1.2.1.2.6 HDP版本:2.6.0.3 查询: 下面是在配置单元CLI或配置单元服务器2中运行时引发的错误: 错误:编译语句时出错:失败:SemanticException行0:-1在联接“obsv_stop_ts”(状态=42000,代码=40

  • 我们有配置了FreeIPA的HDP-2.2集群。但当我们试图通过knox访问HiveJDBC时,我们面临着一个问题。以下是我们正在使用的JDBC URI: jdbc: hive2://xxxxxxxxx: 8443/; ssl=true; sslTrustStore=/var/lib/Knox/data/Security/keystore/gateway.jks; Trust StorePassw

  • 我正在使用twitter cloudera示例创建一个表,虽然我已经成功地创建了表并获得了数据,但我遇到了一个问题。 我可以执行并返回数据,但当我进行更深入的操作(如)时,我会收到一个错误。 以下是错误和堆栈跟踪: hive>从tweets中选择计数(*);MapReduce作业总数=1启动作业1编译时确定的1个reduce任务中的1个:1为了更改还原器的平均负载(以字节为单位):set hive