如何使用Pyspark从s3存储桶读取csv文件(在MacOS中)?

时间:2020-04-11 13:48:46

标签: amazon-s3 pyspark

我正在尝试从s3 bucket中读取csv df,但遇到了问题。您能告诉我我在哪里掩盖错误吗?

conf=SparkConf()
conf.setMaster('local')
conf.setAppName('sparkbasic')
sc = SparkContext.getOrCreate(conf=conf) 



sc._jsc.hadoopConfiguration().set("fs.s3a.access.key", "abc")
sc._jsc.hadoopConfiguration().set("fs.s3a.secret.key", "xyz")
sc._jsc.hadoopConfiguration().set("fs.s3a.impl","org.apache.hadoop.fs.s3a.S3AFileSystem")
sc._jsc.hadoopConfiguration().set("com.amazonaws.services.s3.enableV4", "true")

sc._jsc.hadoopConfiguration()。set(“ fs.s3a.aws.credentials.provider”,“ org.apache.hadoop.fs.s3a.BasicAWSCredentialsProvider”)

sc._jsc.hadoopConfiguration().set("fs.s3a.endpoint", "mybucket/path/fileeast-1.redshift.amazonaws.com")


from pyspark.sql import SparkSession
sc = SparkSession.builder.appName('sparkbasic').getOrCreate()

这是我得到错误的代码

csvDf = sc.read.csv("s3a://bucket/path/file/*.csv")

这是我得到的错误,我尝试了stackoverflow答案中给出的链接,但到目前为止没有任何帮助

ava.lang.ClassNotFoundException:找不到类org.apache.hadoop.fs.s3a.S3AFileSystem

1 个答案:

答案 0 :(得分:0)

也许您可以看看S3Fs

给出您的详细信息,也许这样的配置可能有效:

import s3fs
fs = s3fs.S3FileSystem(client_kwargs={'endpoint_url': 'fileeast-1.redshift.amazonaws.com',
"aws_access_key_id": "abc",
"aws_secret_access_key": "xyz"})

要检查是否可以与s3进行交互,可以尝试以下命令(注意:将somefile.csv更改为现有命令)

fs.info('s3://bucket/path/file/somefile.csv')

请注意,在fs.info中,我们以s3开头。如果没有遇到错误,则可能希望以下命令起作用:

csvDf = sc.read.csv("s3a://bucket/path/file/*.csv")

这一次您的路径以s3a开头