hadoop - 是否需要有关 hive 中的交叉连接的建议以从具有1.6亿行的大表中获取通配符单词?

标签 hadoop hive hiveql

我有一个巨大的表,该表具有1.6亿行(诸如家装,廉价住房改善,廉价房屋等字眼)和一个具有约2万行(家装改善)的小表,我试图在大表中查找诸如'%homeimprovement%'之类的词表。所以我想要的输出会把我还给我

homeimprovment homeimprovement
homeimprovement cheaphomeimprovement
homeimprovement homeimprovementcheap

这是我当前的查询,这是一个交叉联接!
zd.domain给了我“家装”
lt.domain给了我类似的域名
create table tmp_val_words
as 
select /*+ MAPJOIN(zd) */ 
zd.domain, lt.domain as zdd_domain,
from large_table lt, small_table zd 
where 
lt.sld like 
concat('%', zd.sld ,'%');

当子集很小(例如100〜)时,这非常有用,但是当我尝试以3K或4K运行它时,它达到约99%并停留在HOURS位置,最终我将其杀死了。
有没有办法通过一次取100个名字来循环?

最佳答案

您正在交叉连接两个表。你为什么要那样做请显示表格结构,以便我们提供更多帮助。

索引 lt.sld 也会减少时间,但由于它是大表的一部分,因此会占用巨大的空间,但仍然有很大的改进。
另一件事,例如子句很慢,如果您知道任何特定的模式,请尝试使用该模式而不是在完整的句子中搜索。

关于hadoop - 是否需要有关 hive 中的交叉连接的建议以从具有1.6亿行的大表中获取通配符单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34243130/

相关文章:

python - 使用 Python 和 Hadoop Streaming 查找 Top-K

hadoop - HIve配置中发生错误

Hadoop 从属文件配置

hadoop - 如何在 Hive 中透视数据

hadoop - 插入覆盖本地目录启动 map reduce 作业以进行简单查询

java - 安装 HDFS/HBase 客户端库

hadoop - 每个文件一个 hive 分区

azure - 如何对Hive进行基准测试(Azure交互式查询HDI 4.0)

hadoop - 在Hadoop中按时间和日期过滤

hadoop - 配置单元 0.14.0.2.2.4.10-1 : Multi Insert - Empty partition