火花分区镶木地板文件的Impala表

时间:2017-06-09 13:23:38

标签: apache-spark parquet impala partition

我使用Spark生成了一些分区拼花数据,我想知道如何将它映射到Impala表...遗憾的是,我还没有找到任何解决方案。

镶木地板的架构如下:

{ key: long,
value: string,
date: long }

我用keydate对它进行了分区,这给了我在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从这个数据集创建一个带有相应分区的表(并且不必像我读过的那样在每个分区上循环)?有可能吗?

提前谢谢

1 个答案:

答案 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个命令将根据表的架构自动检测分区,并了解子目录中存在的镶木地板文件。

现在,您可以开始查询数据了。

希望有所帮助