Sum*_*t D 5 hive data-processing apache-spark apache-spark-sql
我对蜂巢中的分桶有一个疑问。我创建了一个临时表,该表存储在列键上。
通过 spark SQL 我将数据插入到这个临时表中。我已在 spark 会话中启用 hive.enforce.bucketing 为 true。
当我检查这个表的基本目录时,它显示了以 part_* 为前缀的文件名。
但是,当我通过另一个表手动将数据插入该表时,我看到了前缀为 00000_* 的文件。
我不确定 spark sql 是否将数据写入桶中。
有人可以帮忙吗。
谢谢,
一个混乱的领域。
我前段时间发现了这个:
但是,从 Spark 2.3 开始支持 Hive 分桶表。Spark 通常不允许用户将输出写入 Hive Bucketed 表。设置hive.enforce.bucketing=false并hive.enforce.sorting=false允许您保存到 Hive Bucketed 表。
在 Spark 的 JIRA 中:https : //issues.apache.org/jira/browse/SPARK-17729
Hive 允许将数据插入到分桶表中,而无需保证基于这两个配置的分桶和排序:hive.enforce.bucketing和hive.enforce.sorting。
使用这个 jira,Spark 仍然不会按照 Hive 的分桶保证生成分桶数据,但允许写入 IFF 用户希望这样做而无需关心分桶保证。创建分桶表的能力将能够在向 Spark 添加测试用例的同时,将部分添加到 Spark 使其支持 hive 分桶(例如https://github.com/apache/spark/pull/15229)
不支持的 Hive 功能 以下是我们尚不支持的 Hive 功能列表。大多数这些功能很少用于 Hive 部署。带桶的主要 Hive 功能表:桶是 Hive 表分区内的哈希分区。Spark SQL 尚不支持存储桶。
所以要回答你的问题:你得到了 Hive Bucketing 的 Spark 方法,这是一个近似值,因此并不是真正的一回事。
| 归档时间: |
|
| 查看次数: |
3350 次 |
| 最近记录: |