非常重要的动态分区属性:
hive.exec.dynamic.partition 是否启动动态分区。false(不开启) true(开启)默认是 false
hive.exec.dynamic.partition.mode 打开动态分区后,动态分区的模式,有 strict和 nonstrict 两个值可选,strict 要求至少包含一个静态分区列,nonstrict则无此要求。各自的好处,大家自己查看哈。
hive.exec.max.dynamic.partitions 允许的最大的动态分区的个数。可以手动增加分区。默认1000
hive.exec.max.dynamic.partitions.pernode 一个 mapreduce job所允许的最大的动态分区的个数。默认是100
代码中配置如下:
SparkSession spark = SparkSession.builder().appName("MongoSparkConnectorIntro").master("local") .config("hive.metastore.uris", 192.168.X.X:9083)//元数据地址 .config("spark.sql.warehouse.dir", hdfs://192.168.X.X:9000/apps/hive/warehouse);hdfs端口号及hive在hadoop的默认目录 .config("hive.exec.dynamic.partition", true)//开启动态分区 .config("hive.exec.dynamic.partition.mode", "nonstrict")//打开动态分区模式 .config("hive.exec.max.dynamic.partitions", "1000")//最大分区数量写入动态分区
df.coalesce(1)//重新分区的一个action算子.write().mode(写入方式).format("存储格式").partitionBy("表中存在的字段").saveAsTable(tablename);
原文地址:https://www.cnblogs.com/Mr--zhao/p/11451811.html
时间: 2024-10-08 08:16:15