我有一个外部hive表,该表在源系统上进行了分区,这意味着数据将来自多个源系统。数据目录的结构如下:
/app/hadoop/MyProject/SchemaName/TableName/PartitionColumn=SoruceSystem1
/app/hadoop/MyProject/SchemaName/TableName/PartitionColumn=SoruceSystem2
/app/hadoop/MyProject/SchemaName/TableName/PartitionColumn=SoruceSystem3
...
/app/hadoop/MyProject/SchemaName/TableName/PartitionColumn=SoruceSystemN
所有进入SourceSystem文件夹的数据都是流式数据,因此在每个源系统下我们会得到很多文件 :)
我正在考虑每天合并所有这些文件,例如:将SourceSystem1中的所有文件合并,合并后的文件留在SoruceSystem1文件夹中,对其他文件夹也是这样。
通常情况下:当只有一个文件夹时,可以使用alter table schema.table PARTITION(PartitionColumn={SourceSystemName}) CONCATENATE;
正常运行,但我需要同时操作所有文件夹。
解决办法是编写一个shell脚本循环遍历所有分区,并为每个源系统名称重复执行该语句,但我正在寻找一些开箱即用的东西来解决这个问题。
非常感谢您在这里提供的任何帮助。