使用 pySpark 连接 Amazon s3 时出现问题

Posted

技术标签:

【中文标题】使用 pySpark 连接 Amazon s3 时出现问题【英文标题】:Issue while connecting Amazon s3 using pySpark 【发布时间】:2016-02-23 01:38:21 【问题描述】:

我使用的是 Spark 1.6 版本的本地模式。以下是我的代码:

第一次尝试:

airline = sc.textFile("s3n://mortar-example-data/airline-data")
airline.take(2)

第二次尝试:

airline = sc.textFile("s3n://myid:mykey@mortar-example-data/airline-data")
airline.take(2)

上面的代码给我以下错误:

Py4JJavaError: An error occurred while calling o17.partitions.
: java.io.IOException: No FileSystem for scheme: s3n
    at org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:2584)
    at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2591)
    at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:91)

不确定这里缺少什么来连接到 S3。如果有人能指出我就太好了

【问题讨论】:

可能是***.com/questions/29443911/…的欺骗 不是骗子。 @Dutta 你找出原因了吗? 【参考方案1】:

@约翰

以下是我的解决方案

bucket = "your bucket"

# Prod App Key
prefix = "Your path to the file"
filename = "s3n:///".format(bucket, prefix)
sc._jsc.hadoopConfiguration().set("fs.s3n.awsAccessKeyId", "YourAccessKey")
sc._jsc.hadoopConfiguration().set("fs.s3n.awsSecretAccessKey", "YourSecret key") 

rdd = sc.hadoopFile(filename,
                    'org.apache.hadoop.mapred.TextInputFormat',
                    'org.apache.hadoop.io.Text',
                    'org.apache.hadoop.io.LongWritable',
                    )
rdd.count()

上面的代码对我有用...祝你好运。

【讨论】:

以上是关于使用 pySpark 连接 Amazon s3 时出现问题的主要内容,如果未能解决你的问题,请参考以下文章

如何在我的 pyspark 代码中访问 S3 中的 Amazon kinesis 流文件?

通过 pyspark 加载文件名中包含冒号的 Amazon S3 文件

如何使 Pyspark 脚本在 Amazon EMR 上运行以识别 boto3 模块?它说找不到模块

Pyspark - 配置 Amazon Redshift JDBC jar

使用 Pyspark 在 s3 中写入镶木地板文件时出错

如何将 Apache Kafka 与 Amazon S3 连接?