这个错误的产生一般是因为你在设置了这个参数:
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的分桶机制。