创建表后却无法写入数据? 报错内容:== Exception in thread “main” org.apache.spark.SparkException: Dynamic partition strict mode requires at least one static partition column. To turn this off set hive.exec.dynamic.partition.mode=nonstrict at org.apache.spark.sql.hive.execution.InsertIntoHiveTable.processInsert(InsertIntoHiveTable.scala:157) ==

原因:hive使用了分区,并且是动态分区

动态分区:比如以时间作为分区,那么分区就是每天都在增加,即是动态分区

因为要做动态分区, 所以要先设定partition参数 由于default是false, 需要额外下指令打开这个开关 default是strick, 表示不允许动态分区, 所以要改成nostrick

解决:设置代码中的参数

// 做动态分区, 所以要先设定partition参数

// default是false, 需要额外下指令打开这个开关

ss.sqlContext.setConf("hive.exec.dynamic.partition;","true");

ss.sqlContext.setConf("hive.exec.dynamic.partition.mode","nonstrict");

Tips:在获取连接时指定config,或者连接后设置setConf均可。

好文阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: