我想在databricks中的现有表(12列)中添加一个熊猫数据(8列),并填充其他4列无法与None值匹配的列。我已经试过了:
spark_df = spark.createDataFrame(df)
spark_df.write.mode("append").insertInto("my_table")它引发错误:
ParseException:“\n不匹配的输入”:‘期望(第1行,pos 4)\n\n== SQL ==\n my_table
看起来星星之火无法用无与伦比的列来处理这个操作,有什么方法可以实现我想要的吗?
发布于 2019-11-18 06:55:50
我认为最自然的操作过程是select()转换,将缺失的列添加到8列dataframe,然后是unionAll()转换来合并这两者。
from pyspark.sql import Row
from pyspark.sql.functions import lit
bigrow = Row(a='foo', b='bar')
bigdf = spark.createDataFrame([bigrow])
smallrow = Row(a='foobar')
smalldf = spark.createDataFrame([smallrow])
fitdf = smalldf.select(smalldf.a, lit(None).alias('b'))
uniondf = bigdf.unionAll(fitdf)发布于 2019-11-18 10:35:37
你能试试这个吗?
df = spark.createDataFrame(pandas_df)
df_table_struct = sqlContext.sql('select * from my_table limit 0')
for col in set(df_table_struct.columns) - set(df.columns):
df = df.withColumn(col, F.lit(None))
df_table_struct = df_table_struct.unionByName(df)
df_table_struct.write.saveAsTable('my_table', mode='append')https://stackoverflow.com/questions/58909228
复制相似问题