首页 > 解决方案 > 动态分区无法从 Spark 流式传输到 Hive(ORC 格式)

问题描述

我有用 scala 编写的 Spark 程序,它不断地消耗来自 Kafka 主题处理和聚合数据的数据。该程序使用结构化流,并且应该将数据插入基于数据中的“startdate”字段分区的 Hive(非酸表)中。

我尝试在下面将数据插入 Hive 表。

 val query = 
 stream_df_agg_tr1.writeStream.format("orc").partitionBy("startdate").option("checkpointLocation","<>:8020/user/sm/hivecheckpt8")
.outputMode(OutputMode.Append).start("<>/warehouse/tablespace/external/hive/acti.db/applicationstats5minute")
query.awaitTermination()

我也尝试使用 .option("path",<>) 指定表路径。我设置了以下属性(在 spark 程序中尝试并作为 spark-shell 参数)。 "spark.hadoop.hive.exec.dynamic.partition=true"  "spark.hadoop.hive.exec.dynamic.partition.mode=nonstrict"

不过,我没有看到自动创建的分区。一旦我尝试在插入数据之前预先创建一个基于日期的分区,在这种情况下,数据就会落入正确的分区中,尽管之后这也不起作用。

你能建议如何解决这个问题吗?

标签: apache-sparkhadoophivecloudera

解决方案


推荐阅读