首页 文章

Pyspark:使用数据框在hive分区表上用新的数据替换旧数据

提问于
浏览
1

你能指导我用pyspark(dataframe)用特定的hive分区上的新数据替换旧数据吗?

我有一个hive分区表,按县分区 .

每个月我都会收到一些县的记录 . 我想用旧分区上的新数据替换旧数据 .

我用pyspark开发了脚本,并为数据帧中的特定分区加载了新数据 . 现在,我想用旧分区的数据替换旧数据 . (因为基表很大)

我尝试删除该分区并附加新的数据帧 . 但这似乎不起作用(它有两个旧的新数据) . "Overwrite" 放弃了 table .

是否有任何方法可以单独用特定分区的新数据(new_dataframe)替换旧数据?

请找到我尝试过的以下代码:

sqlContext.sql('alter table db.tbl drop partition(partition=' + part1 + ')')
    new_dataframe.write.mode("append/overwrite").format("parquet").partitionBy("partition").saveAsTable('db.tbl')

你能指导/建议火花的一些方法吗?

我用Google搜索并看到了删除HDFS中的分区文件等注释 . 我不认为这是一个好方法 . 另一个是运行配置单元查询 - 在该分区上插入覆盖 . 这是在蜂巢方面 .

火花中有类似的功能吗?

谢谢 .

1 回答

  • 0

    以下适用于我(CDH Spark 2.1.0 / Python 2.7) .

    >>> df.write.saveAsTable('<table_name>',mode='overwrite',partitionBy=('county'))
    

    写的文件的默认格式是我的实木复合地板 . 所以,我省略了格式 .

相关问题