没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
本地使用scala操作spark示例
一, SparkSession的配置:
val spark = SparkSession
.builder()
.master("local[*]")
.appName("local_client_hive")
.enableHiveSupport() // 启用 Hive 支持
.config("hive.metastore.uris", "thrift://master02:9083") // 设置 Hive Metastore 的地址
.config("hive.metastore.warehouse.dir", "/user/hive/warehouse")
.config("hive.exec.scratchdir", "hdfs://master01:8020/hive/tmp")
.config("spark.debug.maxToStringFields", "1000")
.config("spark.sql.sources.partitionOverwriteMode", "dynamic") // 设置之后可以覆盖指定
分区数据
.config("hive.exec.dynamic.partition", "true") // 设置为true表示开启动态分区功能
.config("hive.exec.dynamic.partition.mode", "nonstrict") // 允许所有分区都是动态的,(
默认为strict,表示必须保证至少有一个分区是静态的)
.getOrCreate()
二, 通过dataframe向hive表中插入数据:
解决sparksql 分区覆盖问题:
背景:使用saveAsTable 造成覆盖所有数据,不是按照分区覆盖数据,需要使用insertInto
方法
1, 保证dataframe中有分区字段(SparkSession中必须添加配置:
"spark.sql.sources.partitionOverwriteMode", "dynamic", 否则执行insertInto时会把对应hive表
中全部分区删除, 只留本次插入数据的分区!!!!!!!!!!!!!!!!!! );
2, 使用insertInto插入对应表;
df.write.mode(SaveMode.Overwrite).insertInto("you use table")
资源评论
大数据侠客
- 粉丝: 707
- 资源: 76
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功