Pyspark:从 AWS:S3 存储桶读取数据并写入 postgres 表

杰西恩

我正在尝试从 S3 存储桶中读取数据并希望将其写入/加载到 postgres 表中。我的代码是-

from pyspark.sql import SparkSession
spark = SparkSession.builder.appName('Read Multiple CSV Files').getOrCreate()
path = ['C://Projects/Sandbox/file2.csv']
files = spark.read.csv(path, sep=',',inferSchema=True, header=True)
df1 = files.toPandas()

from pyspark.sql import DataFrameWriter
my_writer = DataFrameWriter(df1)

mode = "overwrite"
url = ""
properties = {"user": "","password": "","driver": "org.postgresql.Driver"}
my_writer.write.jdbc(url=url, table="test_result", mode=mode, properties=properties)

在线的

my_writer = DataFrameWriter(files)

它给出了错误 -

AttributeError: 'DataFrameWriter' 对象没有属性 'write'

在线,当 DataFrameWriter() 的参数传递为 -

my_writer = DataFrameWriter(df1)

AttributeError:“DataFrame”对象没有属性“sql_ctx”

有什么/任何地方我做错了吗?

舒巴姆·夏尔马

无需创建新实例DataFrameWriter,spark 数据框已经使用该write属性公开了此接口。您可以使用此属性通过jdbc连接导出 csv 数据

# Read the data form source
files = spark.read.csv(path, sep=',', inferSchema=True, header=True)

# Write the data to destination using jdbc connection
files.write.jdbc(url=url, table="test_result", mode=mode, properties=properties)

如何修复现有代码?

创建一个新的DataFrameWriter使用实例,files然后使用连接my_writer.jdbc来导出数据jdbc

my_writer = DataFrameWriter(files)
my_writer.jdbc(url=url, table="test_result", mode=mode, properties=properties)
#      ^^^^^^ No need to use .write attribute

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章