从Spark分割Parquet文件 Impala 表

rks48beu  于 2021-06-26  发布在  Impala
关注(0)|答案(1)|浏览(371)

我已经使用spark生成了一些分区的Parquet数据,我想知道如何将其Map到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从这个数据集中创建一个表,其中包含相应的分区(而且不必像我读到的那样在每个分区上循环)?有可能吗?
先谢谢你

svujldwt

svujldwt1#

假设parquet的schema是指数据集的schema,然后使用列进行分区,则实际数据集中只有key列 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;

以上两个命令将根据表的模式自动检测分区,并了解子目录中存在的Parquet文件。
现在,您可以开始查询数据了。
希望有帮助

相关问题