从 spark 插入到集群配置单元表

Posted

技术标签:

【中文标题】从 spark 插入到集群配置单元表【英文标题】:Insert to clustered hive table from spark 【发布时间】:2018-02-27 09:55:13 【问题描述】:

我正在尝试对数据存储进行一些性能优化。这个想法是使用 hive 的分桶/集群来分桶可用设备(基于列 id)。我目前的方法是将基于镶木地板文件的外部表中的数据插入表中。结果,它应用了分桶。

INSERT INTO TABLE bucketed_table PARTITION (year, month, day)
SELECT id, feature, value, year, month, day
FROM parquet_table ;

我想通过直接从 PySpark 2.1 将数据直接摄取到该表中来摆脱这一步。 使用 SparkSQL 执行相同的语句会导致不同的结果。通过子句添加集群

 INSERT INTO TABLE bucketed_table PARTITION (year, month, day)
    SELECT id, feature, value, year, month, day
    FROM parquet_table cluster by id ;

仍然会导致不同的输出文件。

这导致两个问题: 1)从火花插入集群蜂巢表的正确方法是什么? 2) 使用 clustered by 语句编写是否可以使 hive 元存储对数据产生好处?

【问题讨论】:

【参考方案1】:

我认为目前尚不支持它。我目前使用的是 Spark 2.3,但它失败了,而不是成功并破坏了您的数据存储。

如果您想跟踪其进度,请查看 jira 票 here

【讨论】:

以上是关于从 spark 插入到集群配置单元表的主要内容,如果未能解决你的问题,请参考以下文章

从 spark sql 插入配置单元表

在 emr 集群中使用 spark 从 oracle 中获取数据并进行处理

数据存储在对象存储中时从 Spark SQL 访问 Hive 表

无法从 spark sql 插入配置单元分区表

将火花数据框附加到具有不同列顺序的配置单元表

如何将位于 HDFS 上的类型安全配置文件添加到 spark-submit(集群模式)?