我使用Spark生成了一些分区拼花数据,我想知道如何将它映射到Impala表...遗憾的是,我还没有找到任何解决方案。
镶木地板的架构如下:
{ key: long,
value: string,
date: long }
我用key
和date
对它进行了分区,这给了我在hdfs上的这种目录:
/data/key=1/date=20170101/files.parquet
/data/key=1/date=20170102/files.parquet
/data/key=2/date=20170101/files.parquet
/data/key=2/date=20170102/files.parquet
...
你知道我怎么能告诉Impala从这个数据集创建一个带有相应分区的表(并且不必像我读过的那样在每个分区上循环)?有可能吗?
提前谢谢
答案 0 :(得分:0)
假设通过镶木地板的模式,您意味着数据集的模式,然后使用列进行分区,您将只有实际files.parquet
文件中的密钥列。现在您可以按照以下步骤进行操作
解决方案是使用impala外部表。
create external table mytable (key BIGINT) partitioned by (value String ,
date BIGINT) stored as parquet location '....../data/'
请注意,在上面的语句中,您必须提供路径直到数据文件夹
alter table mytable recover partitions'
refresh mytable;
以上2个命令将根据表的架构自动检测分区,并了解子目录中存在的镶木地板文件。
现在,您可以开始查询数据了。
希望有所帮助