【问题标题】:Inserting a pyspark dataframe to an existing partitioned hive table将 pyspark 数据帧插入现有的分区配置单元表
【发布时间】:2017-09-15 18:42:50
【问题描述】:

我有一个按列插入时间分区的配置单元表。

我有一个 pyspark 数据框,除了分区列之外,它与表具有相同的列。

当表未分区时,以下方法效果很好:

df.insertInto('tablename',overwrite=True)

但我无法弄清楚如何从 pyspark 插入到特定分区

以下尝试:

 df.insertInto('tablename',overwrite=True,partition(inserttime='20170818-0831'))

但它不起作用并且失败了

SyntaxError: non-keyword arg after keyword arg

我正在使用 pyspark 1.6

【问题讨论】:

    标签: hive pyspark


    【解决方案1】:

    一个选项是:

    df.registerTempTable('tab_name')
    hiveContext.sql("insert overwrite table target_tab partition(insert_time=value) select * from tab_name ")
    

    另一种选择是将此静态值添加为数据帧的最后一列,并尝试使用 insertInto() 作为动态分区模式。

    【讨论】:

      【解决方案2】:

      你可以使用 df.write.mode("overwrite").partitionBy("inserttime").saveAsTable("TableName")

      或者您可以覆盖分区本身的值。

      df.write.mode(SaveMode.Overwrite).save("location/inserttime='20170818-0831'")

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-06-28
        • 1970-01-01
        • 2021-02-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多