首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将熊猫数据附加到数据库中现有的表中

将熊猫数据附加到数据库中现有的表中
EN

Stack Overflow用户
提问于 2019-11-18 06:45:43
回答 2查看 2.5K关注 0票数 1

我想在databricks中的现有表(12列)中添加一个熊猫数据(8列),并填充其他4列无法与None值匹配的列。我已经试过了:

代码语言:javascript
复制
spark_df = spark.createDataFrame(df)
spark_df.write.mode("append").insertInto("my_table")

它引发错误:

ParseException:“\n不匹配的输入”:‘期望(第1行,pos 4)\n\n== SQL ==\n my_table

看起来星星之火无法用无与伦比的列来处理这个操作,有什么方法可以实现我想要的吗?

EN

回答 2

Stack Overflow用户

发布于 2019-11-18 06:55:50

我认为最自然的操作过程是select()转换,将缺失的列添加到8列dataframe,然后是unionAll()转换来合并这两者。

代码语言:javascript
复制
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)
票数 0
EN

Stack Overflow用户

发布于 2019-11-18 10:35:37

你能试试这个吗?

代码语言:javascript
复制
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')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58909228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档