我在hdfs中的表单目录下有一堆gzip文件 /home/myuser/salesdata/some_date/ALL/<country>.gz
例如 /home/myuser/salesdata/20180925/ALL/us.gz
数据的格式如下
<country> \t count1,count2,count3
所以本质上,它首先是制表符分隔的,然后我需要将逗号分隔的值提取到单独的列中
我想创建一个外部表,按国家、年、月和日对此进行分区。数据的大小非常大,可能有100 tb,因此我希望有一个外部表本身,而不是必须通过将数据导入标准表来复制数据。
是否可以仅使用外部表来实现这一点?
1条答案
按热度按时间jjhzyzn01#
考虑到你的国家被
tab '\t'
其他字段之间用,
这就是你能做的。您可以创建一个临时表,其中第一列为字符串,其余列为数组。
现在如果你把文件放到
/apps/temp/table
位置您应该能够选择如下所述的数据。现在要创建分区,请创建另一个表,如下所述。
并将临时表中的数据加载到此表中。
我把这个国家看作是动态的分区,因为它来自文件,而其他国家则不是,所以它是静态的。