我已经使用 Spark 生成了一些分区的 parquet 数据,我想知道如何将它映射到 Impala 表...遗憾的是,我还没有找到任何解决方案。
Parquet 的模式是这样的:
{ 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 从这个数据集创建一个具有相应分区的表(并且不必像我读到的那样在每个分区上循环)吗?可能吗?
提前致谢
最佳答案
假设 parquet 的架构,您指的是数据集的架构,然后使用列进行分区,您将只有实际 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 个命令将根据表的模式自动检测分区,并了解子目录中存在的 parquet 文件。
现在,您可以开始查询数据了。
希望对你有帮助
关于apache-spark - 来自 spark 分区 Parquet 文件的 Impala 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44459001/