创建一个接受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变量中有单个属性,则上述代码可以正常工作。
有没有人遇到类似的情况?
答案 0 :(得分:0)
管理以识别不同的路线,但我不确定上述失败的原因 -
df.write.partitionBy(pattr[0:]).saveAsTable(dataBase+".temptable_"+deltaTable)
考虑完整列表的python方式