gpt4 book ai didi

apache-spark - 通过 sparkSQL 进行 Hive 分桶

转载 作者:行者123 更新时间:2023-12-03 15:57:19 28 4
gpt4 key购买 nike

我对 hive 中的分桶有一个疑问。我创建了一个临时表,该表存储在列键上。

通过 spark SQL,我将数据插入到这个临时表中。我已在 spark session 中启用 hive.enforce.bucketing 为 true。

当我检查这个表的基本目录时,它显示了以 part_* 为前缀的文件名。

但是,当我通过另一个表手动将数据插入该表时,我看到了前缀为 00000_* 的文件。

我不确定 spark sql 是否将数据写入桶中。

有人可以帮忙吗。

谢谢,

最佳答案

一个困惑的领域。

我前段时间发现了这个:

但是,从 Spark 2.3 开始支持 Hive 分桶表。 Spark 通常不允许用户将输出写入 Hive Bucketed 表。设置 hive.enforce.bucketing=falsehive.enforce.sorting=false将允许您保存到 Hive Bucketed 表。

In Spark's JIRA: https://issues.apache.org/jira/browse/SPARK-17729



Hive 允许将数据插入到分桶表中,但不保证基于这两个配置的分桶和排序: hive.enforce.bucketinghive.enforce.sorting .

使用这个 jira,Spark 仍然不会按照 Hive 的分桶保证生成分桶数据,但允许写入 IFF 用户希望这样做而无需关心分桶保证。创建分桶表的能力将能够在将部分添加到 Spark 时将测试用例添加到 Spark 使其支持配置单元分桶(例如 https://github.com/apache/spark/pull/15229 )

But from the definitive source https://spark.apache.org/docs/latest/sql-migration-guide-hive-compatibility.html#unsupported-hive-functionality the following:



不受支持的 Hive 功能
以下是我们尚不支持的 Hive 功能列表。大多数这些功能很少用于 Hive 部署。
主要 Hive 功能
带桶的表:桶是 Hive 表分区内的哈希分区。 Spark SQL 尚不支持存储桶。

所以要回答你的问题:你得到了 Hive Bucketing 的 Spark 方法,这是一个近似值,因此并不是真正的一回事。

关于apache-spark - 通过 sparkSQL 进行 Hive 分桶,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51654842/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com