我有一个由列插入时间分区的蜂巢表。
我有一个pyspark dataframe,其列具有与表格相同的列。
。当表未分区时,以下效果很好:
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
一个选项是:
df.registerTempTable('tab_name')
hiveContext.sql("insert overwrite table target_tab partition(insert_time=value) select * from tab_name ")
另一个选项是将此静态值添加为DataFrame的最后一列,并尝试将InsertInto()用作动态分区模式。
您可以使用df.write.mode(" offrite")。partitionby(" inserttime")。saveastable(" tablename")
,也可以覆盖分区本身中的值。
df.write.mode(savemode.overwrite).save(" location/inserttime ='20170818-0831'")
希望这会有所帮助。