从 Spark 替换 hive 分区

Posted

技术标签:

【中文标题】从 Spark 替换 hive 分区【英文标题】:Replace a hive partition from Spark 【发布时间】:2018-02-06 23:20:09 【问题描述】:

有没有办法可以从 Spark 程序中替换(现有的)配置单元分区?只替换最新的分区,其余分区保持不变。

以下是我正在尝试的想法,

我们每分钟都会从我们的 RDBMS 系统中获取到 HDFS 的跨国数据。将有一个 spark 程序(每 5 或 10 分钟运行一次)读取数据、执行 ETL 并将输出写入 Hive 表。 由于覆盖整个蜂巢表会很大, 我们只想覆盖今天分区的配置单元表。 End of Day 源和目标分区将更改为下一天。

提前致谢

【问题讨论】:

【参考方案1】:

当您知道 hive 表位置时,将 currentdate 附加到位置,因为您的表在日期上分区并覆盖 hdfs 路径。

df.write.format(source).mode("overwrite").save(path)

Msck repair hive table

完成后

【讨论】:

以上是关于从 Spark 替换 hive 分区的主要内容,如果未能解决你的问题,请参考以下文章

Spark 分区:创建 RDD 分区但不创建 Hive 分区

Spark Sql 从 Hive orc 分区表中读取,给出数组越界异常

从 spark(2.11) 数据帧写入 hive 分区表时出现 org.apache.hadoop.hive.ql.metadata.Hive.loadDynamicPartitions 异常

使用 spark hivecontext 读取外部 hive 分区表的问题

在分区 hive 表中插入 spark Dataframe 而不会覆盖数据

Spark-sql读取hive分区表限制分区过滤条件及限制分区数量