【发布时间】:2019-06-18 20:58:03
【问题描述】:
关于 SO 有很多类似的问题,但我根本无法让它发挥作用。我显然错过了一些东西。
尝试从我的 s3 加载一个简单的测试 csv 文件。
在本地进行,如下所示。
from pyspark.sql import SparkSession
from pyspark import SparkContext as sc
logFile = "sparkexamplefile.csv"
spark = SparkSession.builder.appName("SimpleApp").getOrCreate()
logData = spark.read.text(logFile).cache()
numAs = logData.filter(logData.value.contains('a')).count()
numBs = logData.filter(logData.value.contains('b')).count()
print("Lines with a: %i, lines with b: %i" % (numAs, numBs))
但是如果我在下面添加这个:
sc._jsc.hadoopConfiguration().set("fs.s3n.awsAccessKeyId", "foo")
sc._jsc.hadoopConfiguration().set("fs.s3n.awsSecretAccessKey", "bar")
lines = sc.textFile("s3n:///mybucket-sparkexample/sparkexamplefile.csv")
lines.count()
我明白了:
No FileSystem for scheme: s3n
我也尝试过将s3 更改为spark.sparkContext 没有任何区别
同样在 url 中交换 // 和 ///
更好的是,我宁愿这样做并直接进入数据框:
dataFrame = spark.read.csv("s3n:///mybucket-sparkexample/sparkexamplefile.csv")
另外我对AWS有点无知,所以我尝试了s3、s3n和s3a都无济于事。
我一直在互联网上转来转去,但似乎无法解决方案错误。谢谢!
【问题讨论】:
-
你试过lines = sc.textFile("s3://mybucket-sparkexample/sparkexamplefile.csv")吗?
-
@RamdevSharma 是的也试过了,但是谢谢。我会更新我的帖子。
标签: python apache-spark pyspark