hive - 将 pyspark 数据帧插入现有的分区 Hive 表

标签 hive pyspark

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

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

最佳答案

一个选项是:

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

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

关于hive - 将 pyspark 数据帧插入现有的分区 Hive 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46245739/

相关文章:

hadoop - Hive中的动态分区-使用一个固定列进行分区的缺点

postgresql - PySpark sqlContext 读取 Postgres 9.6 NullPointerException

apache-spark - Spark 重新分区落入单个分区

apache-spark - updateStateByKey函数返回的DStream是否只包含一个RDD?

hadoop - Hive - 指向同一个元存储的多个集群

hadoop - HIVE 创建表不为空

scala - Spark JDBC读取表头引起的java.lang.NumberFormatException

sql - SQL中计算最后两个订单中金额小于当前订单值的客户的订单数量?

dataframe - spark 选择列返回旧数据框的引用

hadoop - 如何将多个列值转换为 hive 中的行?