2017-09-15 54 views
0

我有一个按列插入时间进行分区的配置单元表。将pyspark数据框插入到现有的分区配置表hive表中

我有一个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

回答

0

一种选择是:

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

另一种方法是添加此静态值数据框的最后一列,并尝试使用INSERTINTO()作为动态分区模式。

0

你可以使用df.write.mode( “覆盖”)。partitionBy( “inserttime”)。saveAsTable( “表名”)

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

df.write.mode(SaveMode.Overwrite).save( “位置/ inserttime = '20170818-0831'”)

希望这有助于。

相关问题