Есть много похожих вопросов по SO, но я просто не могу заставить это работать.Я явно что-то упускаю.
Попытка загрузить простой тестовый CSV-файл из моего s3.
Локальное выполнение этого, как показано ниже, работает.
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 безрезультатно.
Я был в интернете и обратно, но, похоже, не могу устранить ошибку схемы.Спасибо!