apache-spark - 来自 spark 分区 Parquet 文件的 Impala 表

标签 apache-spark parquet impala partition

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

Parquet 的模式是这样的:

{ 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 从这个数据集创建一个具有相应分区的表(并且不必像我读到的那样在每个分区上循环)吗?可能吗?

提前致谢

最佳答案

假设 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/

相关文章:

hadoop - Spark Avro 到 Parquet Writer

apache-spark - 如何复制 parquet 文件并覆盖 HDFS 上的旧文件

mysql - SQL 从表 1 中查找不在表 2 中或在表 2 中的记录(带条件)

hadoop - 具有制表符分隔值和字段名称的 Impala 外部表

apache-spark - Spark AFTSurvivalRegression 参数

scala - 从Spark将地理数据插入Elasticsearch

sql - 尝试将数据从 Impala Parquet 表复制到非 Parquet 表

apache-spark - 从另一个应用程序以编程方式提交和终止 Spark 应用程序

scala - 使用Spark访问数据框中的列

mysql - Impala 中 SELECT 语句的算术运算