pyspark:使用dataframe将hive分区表上的旧数据替换为新数据

iezvtpos  于 2021-06-28  发布在  Hive
关注(0)|答案(1)|浏览(687)

您能指导我使用pyspark(dataframe)用特定配置单元分区上的新数据替换旧数据吗?
我有一个Hive分区表,按县分区。
每个月我都会收到一些郡的记录。我想用分区上的新数据替换旧数据。
我已经用pyspark开发了脚本,并为Dataframe中的特定分区加载了新数据。现在,我想将旧数据替换为该分区的新数据
我试着删除那个分区并附加新的Dataframe。但这似乎不起作用(它有旧的+新的数据)。 "Overwrite" 放下table。
spark中有没有办法用新数据(new\u dataframe)单独替换特定分区的旧数据?
请查找我尝试使用的以下代码:

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

你能为spark提供一些指导/建议吗?
我在google上看到了一些评论,比如在hdfs中删除分区文件。我认为这不是一个好办法。另一个是在该分区上运行配置单元查询-插入覆盖。这是在Hive那边。
spark中是否有类似的功能?
谢谢您。

hujrc8aj

hujrc8aj1#

下面的代码非常适合我(cdhspark2.1.0/python2.7)。

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

对于我来说,文件写入的默认格式是parquet。所以,我省略了格式。

相关问题