Hive 如何在配置单元中连接小拼花文件
当下面的文件就位时,如何在蜂巢中连接小拼花文件Hive 如何在配置单元中连接小拼花文件,hive,concatenation,parquet,partition,Hive,Concatenation,Parquet,Partition,当下面的文件就位时,如何在蜂巢中连接小拼花文件 分区是在配置单元表上动态创建的 表是外部的 到目前为止,已尝试解决方案,但用于存在错误的ORC文件: 对于ORC文件,我在循环中对所有分区值使用了下面的命令,它运行良好。但数据在连接完成后丢失,这是配置单元中的错误 我正在使用Hive2.3.3的EMR集群上运行HiveQuery,直到Hive3.0.0才修复 用于实现此目的的命令,但使用ORC文件。我需要这样做的拼花文件 ALTER TABLE HIVE_DB.HIVE_TABLE_NM P
- 分区是在配置单元表上动态创建的
- 表是外部的
ALTER TABLE HIVE_DB.HIVE_TABLE_NM PARTITION(partition_field_nm ='${partition_value}') CONCATENATE;
这用于ORC文件
需要将小拼花文件连接成更大的文件。据我所知,目前无法通过配置单元合并拼花文件。此外,不建议使用“拼花工具合并”,因为它可能会导致数据/模式出现问题 然而,这可以在黑斑羚的帮助下实现 如果要按分区合并表中的文件,则可以创建一个新表,其中只包含HDFS中包含更多文件的现有表中的分区数据,然后从中删除分区。步骤如下: 比如说,
CREATE TABLE tabA LIKE tabB;
INSERT INTO tabB SELECT * FROM tabA WHERE partition_key=1;
ALTER TABLE tabA DROP PARTITION (partition_key=1);
INSERT INTO tabA PARTITION(partition_key=1) select * from tabB;
DROP TABLE tabB;
在哪里,,
tabA-原始桌子,HDFS中有更多拼花文件,
tabB-创建用于合并tabA拼花文件的中间表我每周安排一次类似的内容,用于由于频繁添加小数据而变得支离破碎的表
CREATE TABLE tabB LIKE tabA;
INSERT INTO tabB PARTITION (colX = tabA.colX) SELECT col1, col2, colX FROM tabA;
ALTER TABLE tabA RENAME TO tabA_tmp;
ALTER TABLE tabB RENAME TO tabA;
DROP TABLE tabA_tmp;
请注意,当您对碎片整理脚本建立信心时,tabA_tmp操作可以由单个
DROP TABLE tabA
代替。尝试按此处描述的解决方案合并和分发:作为解决方案提供的链接主要说明作业是否在基于MAP-R和ORC文件上运行。我正在寻找连接分区中存在的小拼花文件。在我的例子中,执行引擎是TEZ。也描述了TEZ的解决方案。使用这些设置进行插入覆盖选择,它应该可以工作。感谢您在这方面的帮助。我曾考虑使用拼花工具合并,但不会继续进行,因为有缺点。我将了解如何在动态分区中使用第二种合并方式。