创建表后却无法写入数据? 报错内容:== 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均可。
好文阅读
发表评论