DataFrame Write PartitionBy - 无法参数化多列

时间:2018-01-03 11:42:56

标签: hadoop pyspark spark-dataframe mapr

创建一个接受TableName和Partition列作为输入的通用代码。但是在尝试将数据帧写为分区表时遇到问题。

partAttr='product_category_id,product_id' 
pattr=partAttr.split(",")
df.write.partitionBy('"'+'","'.join(pattr)+'"').saveAsTable(dataBase+".temptable_"+deltaTable)
  

pyspark.sql.utils.AnalysisException:u'partition列“product_category_id”,“product_id”未在表bbiuserdb中定义。temptable_products_stg,定义的表列为:product_id,product_name,product_description, product_price,product_image,product_category_id;'

但是,如果我在pattr变量中有单个属性,则上述代码可以正常工作。

有没有人遇到类似的情况?

1 个答案:

答案 0 :(得分:0)

管理以识别不同的路线,但我不确定上述失败的原因 -

df.write.partitionBy(pattr[0:]).saveAsTable(dataBase+".temptable_"+deltaTable)

考虑完整列表的python方式