Hadoop-Hive-Impala-重写性能查询

用户1024962

我有下面两列的表格

表格1

col1   col2   col3     val
11     221    38       10
null   90     null     989
78     90     null     77

表2

col1   col2   col3  
12     221    78
23     null   67 
78     90     null

我想如果值匹配则首先在col1上连接这2个表,如果匹配则停止,如果在col2上不连接则停止,否则在col3上连接,并在col3上的任何列匹配时填充val,否则任何null匹配,然后在matchcol列中填充该列。因此,输出应如下所示:

col1   col2   col3     val     matchingcol
11     221    38       10      col2
null   90     null     null    null
78     90     null     77      col1

我可以使用下面的查询来执行此操作,但是性能非常慢。请让我知道下面是否有更好的书写方式来提高性能

select *
from table1 t1 left join
     table2 t2_1
     on t2_1.col1 = t1.col1 left join
     table2 t2_2
     on t2_2.col2 = t1.col2 and t2_1.col1 
     left join table2 t2_3 on t2_3.col3 = t1.col3 and t2_2.col2 is null

ps:我之前问过同样的问题,但是没有更好的答案

戈登·利诺夫

您描述的是:

select t1.col1, t1.col2, t1.col3, 
       (case when t2_1.col1 is not null or t2_2.col1 is not null or t2_3.col1 is not null then t1.val end) as val
       (case when t2_1.col1 is not null then 'col1'
             when t2_2.col2 is not null then 'col2'
             when t2_3.col3 is not null then 'col3'
        end) as matching
from table1 t1 left join
     table2 t2_1
     on t2_1.col1 = t1.col1 left join
     table2 t2_2
     on t2_2.col2 = t1.col2 and t2_1.col1 is null left join
     table2 t2_3
     on t2_3.col3 = t1.col3 and t2_2.col2 is null;

这可能是最好的方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Hadoop / Hive升级性能

来自分类Dev

Hadoop Hive查询优化

来自分类Dev

Impala可以查询存储在Hadoop / HDFS中的XML文件

来自分类Dev

Hadoop HIVE-如何查询部分行

来自分类Dev

Hadoop 和 Hive 中的位级查询

来自分类Dev

在Impala / Hive中重组使用子查询在表中创建新列的查询

来自分类Dev

镶木地板支持的Hive表:在Impala中不可查询的数组列

来自分类Dev

嵌入“添加 Jar”时,通过 impala.dbapi 运行 Hive 查询失败

来自分类Dev

Hadoop Hive查询选择和分组来自不同的表

来自分类Dev

Hadoop-Hive子查询-不在条款中

来自分类Dev

Impala创建外部表,由Hive存储

来自分类Dev

如何摆脱Hive / Impala中的重复计数

来自分类Dev

连接集群外部的Cloudera Impala / Hive

来自分类Dev

Hive 和 Impala 及其与 HDFS 的交互

来自分类Dev

没有CDH的Hadoop 2.2.0上的Impala?

来自分类Dev

查询移植到Impala

来自分类Dev

查询移植到Impala

来自分类Dev

使用 Impala 的联合查询

来自分类Dev

Hive是否依赖/需要Hadoop?

来自分类Dev

连接到Hortonworks Hadoop / Hive

来自分类Dev

一旦安装了Hive,是否可以运行Hadoop查询?

来自分类Dev

无法在HDP的Hive查询中使用mongo-hadoop连接器

来自分类Dev

在Impala中使用Hive UDF在Impala 1.2.4中给出错误结果

来自分类Dev

从Spark作业中调用JDBC进行impala / hive并创建表

来自分类Dev

使用HIve / Impala中的加载数据加载数据

来自分类Dev

Impala时间戳与Hive不匹配-时区问题?

来自分类Dev

Cloudera-Hive / Impala显示创建表-语法错误

来自分类Dev

DataFrame.write.parquet-HIVE或Impala无法读取Parquet文件

来自分类Dev

方括号内的Impala / Hive字符串提取