pyspark URI错误读取文件名中带有“:”的s3文件

时间:2019-02-05 09:56:21

标签: amazon-s3 pyspark uri

我无法从s3存储桶中读取json文件。这是我正在使用的代码:

import os
os.environ['PYSPARK_SUBMIT_ARGS'] = "--packages=org.apache.hadoop:hadoop-aws:2.7.3 pyspark-shell"
from pyspark import SparkConf, SparkContext

conf = SparkConf().setMaster("local").setAppName("My App")
conf.set("spark.default.parallelism", 10)
sc = SparkContext(conf = conf)

access_id = 'key'
access_key = 'key'

hadoop_conf=sc._jsc.hadoopConfiguration()
hadoop_conf.set("fs.s3n.impl", "org.apache.hadoop.fs.s3native.NativeS3FileSystem")
hadoop_conf.set("fs.s3n.awsAccessKeyId", access_id)
hadoop_conf.set("fs.s3n.awsSecretAccessKey", access_key)


rdd = sc.textFile("s3n://oms-messages/NEW/2019-01-30/*.json")
rdd.count()

当我运行rdd.count()时出现错误:

y4JJavaError: An error occurred while calling z:org.apache.spark.api.python.PythonRDD.collectAndServe.
: java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: 09:23:35.096875.json

我尝试在本地下载存储分区,并将':'替换为'-',并且可以正常工作,因此我认为文件名中的“:”是这里的问题。有没有办法在不更改文件名的情况下读取它们?

谢谢

0 个答案:

没有答案