当hive使用分桶时,报错:is bucketed but Spark currently does NOT populate bucketed output which is ....

本文探讨了在使用Spark时,开启`sethive.exec.dynamic.partition=true`导致的错误,分析了可能是由于Spark版本过低无法支持分桶机制。通过将参数改为`sethive.enforce.bucketing=false`进行验证,并给出了版本兼容性问题的解决建议。
摘要由CSDN通过智能技术生成

这个错误的产生一般是因为你在设置了这个参数:

set hive.exec.dynamic.partition =true;

这个参数的含义是:开启强制分桶;是实现分桶,能够根据你设置的规则,把数据分配到指定位置的桶中,方便后期的抽样。

出现标题上的错误的原因有可能是:spark的版本问题,spark版本过低不兼容等。
验证spark版本问题
你把上面的参数改为:
注意:下面的 4 是要跟你创建的表时,设置的桶数一致;

set hive.enforce.bucketing =false;
set hive.enforce.sorting =false;
set mapred.reduce.tasks =4;

然后再次执行就会发现,分桶创建完成,但是里面的数据存放的规则不是你定义的规则,这是因为 以上的参数,也就验证了 以上spark 版本不兼容的问题: 无法 启动hive的分桶机制。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值