将Spark API Dataframe 上的Pandas保存到Azure数据库中的新表

k4ymrczo  于 2022-11-25  发布在  Apache
关注(0)|答案(1)|浏览(156)

上下文:我有一个使用SQL查询的 Dataframe 。从这个查询中,我使用panda on spark API保存到一个 Dataframe 。现在,经过一些转换,我想将这个新的 Dataframe 保存到给定数据库的一个新表中。
示例:

spark = SparkSession.builder.appName('transformation').getOrCreate()
df_final = spark.sql("SELECT * FROM table")
df_final = ps.DataFrame(df_final)
## Write Frame out as Table
spark_df_final = spark.createDataFrame(df_final)
spark_df_final.write.mode("overwrite").saveAsTable("new_database.new_table")

但这不起作用。我如何将pandas on spark API Dataframe 直接保存到数据库中的新表中(该数据库还不存在)谢谢

k10s72fa

k10s72fa1#

您可以使用以下过程。我有以下演示表。

  • 您可以使用以下代码将其转换为spark API的panda Dataframe :
df_final = spark.sql("SELECT * FROM demo")
pdf  = df_final.to_pandas_on_spark()
#print(type(pdf))
#<class 'pyspark.pandas.frame.DataFrame'>
  • 现在,在spark API上对这个pandas Dataframe 执行所需的操作后,您可以使用以下代码将其转换回spark Dataframe :
spark_df = pdf.to_spark()
print(type(spark_df))
display(spark_df)

  • 现在,要将此 Dataframe 写入新数据库的表中,必须首先创建数据库,然后将 Dataframe 写入表中。
spark.sql("create database newdb")
spark_df.write.mode("overwrite").saveAsTable("newdb.new_table")

  • 您可以看到数据表已写入新的数据库。下列是相同数据表的指涉影像:

相关问题