spark 调用sql插入hive 失败 ,执行语句如下

spark.sql("INSERT INTO default.test_table_partition partition(province,city) SELECT xxx,xxx md5(province),md5(city)  FROM test_table")

报错如下,需动态插入分区


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=nonstrictat org.apache.spark.sql.hive.execution.InsertIntoHiveTable.run(InsertIntoHiveTable.scala:314)at org.apache.spark.sql.execution.command.ExecutedCommandExec.sideEffectResult$lzycompute(commands.scala:66)at org.apache.spark.sql.execution.command.ExecutedCommandExec.sideEffectResult(commands.scala:61)at org.apache.spark.sql.execution.command.ExecutedCommandExec.executeCollect(commands.scala:77)at org.apache.spark.sql.Dataset$$anonfun$6.apply(Dataset.scala:183)at org.apache.spark.sql.Dataset$$anonfun$6.apply(Dataset.scala:183)at org.apache.spark.sql.Dataset$$anonfun$54.apply(Dataset.scala:2841)at org.apache.spark.sql.execution.SQLExecution$.withNewExecutionId(SQLExecution.scala:77)at org.apache.spark.sql.Dataset.withAction(Dataset.scala:2840)at org.apache.spark.sql.Dataset.<init>(Dataset.scala:183)at org.apache.spark.sql.Dataset$.ofRows(Dataset.scala:68)at org.apache.spark.sql.SparkSession.sql(SparkSession.scala:632)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:775)at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:180)at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:205)at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:119)at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

在spark配置中加入:

.config("hive.exec.dynamici.partition",true)
.config("hive.exec.dynamic.partition.mode","nonstrict")

 val spark = SparkSession.builder()//      .master("local[2]").appName("WeiBoAccount-Verified").config("spark.serializer","org.apache.spark.serializer.KryoSerializer").config("hive.exec.dynamici.partition",true).config("hive.exec.dynamic.partition.mode","nonstrict").enableHiveSupport() .getOrCreate()

相关参数说明:

Hive.exec.dynamic.partition  是否启动动态分区。false(不开启) true(开启)默认是 falsehive.exec.dynamic.partition.mode  打开动态分区后,动态分区的模式,有 strict和 nonstrict 两个值可选,strict 要求至少包含一个静态分区列,nonstrict则无此要求。各自的好处,大家自己查看哈。hive.exec.max.dynamic.partitions 允许的最大的动态分区的个数。可以手动增加分区。默认1000

Spark 调用 hive使用动态分区插入数据相关推荐

  1. hive之动态分区插入数据及其参数配置

    hive使用动态分区插入数据详解 往hive分区表中插入数据时,如果需要创建的分区很多,比如以表中某个字段进行分区存储,则需要复制粘贴修改很多sql去执行,效率低.因为hive是批处理系统,所以hiv ...

  2. hive分区用2个字段有何限制_关于Hive使用动态分区插入数据详解

    1.创建一个单一字段分区表 hive>  create table dpartition(id int ,name string ) partitioned by(ct string  ); 2 ...

  3. 【Hive】动态分区插入

    使用动态分区插入数据时,无需指定分区键值,系统根据插入的数据,自动分配分区. 动态分区需注意以下几点: 需有一个同构的普通表做为源表: 分区键值和源表字段之间是根据位置来判断的,而不是根据命名来匹配的 ...

  4. shell脚本中向hive动态分区插入数据

    在hive上建表与普通分区表创建方法一样: 1 CREATE TABLE `dwa_m_user_association_circle`( 2 `device_number` string, 3 `o ...

  5. Impala动态分区插入数据慢

    文章目录 一.背景分析 二.Impala分区 三.操作步骤 四.结果分析 五.主机配置 一.背景分析 有近20年的广告数据,需要对外提供查询分析服务(对数据进行Ad-Hoc式查询,Ad-Hoc:即席查 ...

  6. 数仓回刷历史数据--hive设置动态分区,并向动态分区内刷入历史数据

    数仓回刷历史数据–hive设置动态分区,并向动态分区内刷入历史数据 内容目录 数仓回刷历史数据--hive设置动态分区,并向动态分区内刷入历史数据 一.问题介绍 二.问题解决思路 1 . 解决复杂逻辑 ...

  7. pypark hive 开启动态分区_Hive分区与分桶

    分区.分桶的作用: 我们知道在传统的DBMs系统中,一般都具有表分区的功能,通过表分区能够在特定的区域检索数据,减少扫描成本,在一定程度上提高了查询效率,当然我们还可以通过进一步在分区上建立索引,进一 ...

  8. 图文理解 Spark 3.0 的动态分区裁剪优化

    Spark 3.0 为我们带来了许多令人期待的特性.动态分区裁剪(dynamic partition pruning)就是其中之一.本文将通过图文的形式来带大家理解什么是动态分区裁剪. Spark 中 ...

  9. Hive建表及插入数据浅析

    通过已有表创建新表(仅创建表结构) create table new_table like old_table; 通过已有表创建新表,并复制已有表数据 create table new_table a ...

最新文章

  1. 渗透知识-常用DOS命令windows
  2. NSTableView使用笔记(一)
  3. MATLAB 练习题 金币
  4. Linux下配置安装PHP环境
  5. 详细讲解设计跳表的三个步骤(查找、插入、删除)
  6. memcache 获取key的方法,查询session存储
  7. C++安全方向(三)3.4 使用哈希列表验证文件的完整性
  8. 1009 C语言 SUM problem
  9. hibernate 根据用户名获取用户对象_Mybatis 和 Hibernate 持久层框架之间的区别是啥?...
  10. 第三百九十一节,Django+Xadmin打造上线标准的在线教育平台—404,403,500页面配置...
  11. Python3+Selenium3自动化测试-(四)
  12. JAVA程序入门(✨详解✨)
  13. MYSQL之索引详谈(三种介绍方式)
  14. c语言if语句教学设计,if语句教学设计
  15. 微型计算机的型号是奔四800,第1章 微型计算机基础知识
  16. Python图片添加水印修改MD5值
  17. 论文阅读——“推荐系统”
  18. 计算机 cf比赛,CF端游PL职业联赛春季赛比赛模式规则介绍
  19. 利用Unity引擎C#语言实现MySql数据库读写
  20. php常用的数组相关的函数及面向对象

热门文章

  1. malloc 结构体_二进制安全之堆溢出(系列)——堆基础 amp; 结构(二)
  2. stotybord如何添加子视图_SQL复杂查询-子查询
  3. 手机浏览器网址_「效率集」自定义网址导航高级功能介绍
  4. mysql 触发器不能同时 insert or update or delete_MySQL6:触发器
  5. 40个Java 多线程问题总结
  6. 修改epo服务器 gps,epo
  7. linux tomcat环境变量配置_Tomcat
  8. selinux= 为 disabled_安德里茨为巴西KLabin Puma II 项目提供气化炉和生物质处理线
  9. 短信宝 php使用,[php] 使用 短信宝 发送短信(thinkphp)
  10. 【LeetCode笔记】309. 最佳买卖股票时机含冷冻期(Java、动态规划)