Как получить CSV на S3 с Pyspark (Нет файловой системы для схемы: S3N) - PullRequest
0 голосов
/ 25 января 2019

Есть много похожих вопросов по 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 безрезультатно.

Я был в интернете и обратно, но, похоже, не могу устранить ошибку схемы.Спасибо!

Ответы [ 2 ]

0 голосов
/ 25 апреля 2019

Вы должны проверить, какая у вас версия hadoop *.jar-файлы, привязанные к вашей конкретной версии pyspark, установленной в вашей системе, выполните поиск папки pyspark / jars и файлов hadoop *.

Версия, которую вы указали в своем файле pyspark, выглядит следующим образом:

os.environ['PYSPARK_SUBMIT_ARGS'] = '--packages com.amazonaws:aws-java-sdk-pom:1.11.538,org.apache.hadoop:hadoop-aws:2.7.3 pyspark-shell'

Это немного сложно для новых участников pyspark (я столкнулся с этим непосредственно в первый день работы с pyspark: -)).

В противном случае я работаю в системе Gentoo с локальной версией Spark 2.4.2.Некоторые предлагали также установить Hadoop и скопировать jar-файлы непосредственно в Spark, однако версия должна быть той же, что и в PySpark.Поэтому я создаю ebuild для Gentoo для этих версий ...

0 голосов
/ 25 января 2019

Я думаю, что ваша искровая среда не получила банок с AWS. Вы должны добавить его для использования s3 или s3n.

Вы должны скопировать необходимые файлы jar из загрузки hadoop в каталог $ SPARK_HOME / jars. Использование флага --jars или флага --packages для spark-submit не работает.

Здесь моя искровая версия Spark 2.3.0 и Hadoop 2.7.6 поэтому вы должны скопировать в банки из (hadoop dir)/share/hadoop/tools/lib/ до $SPARK_HOME/jars.

aws-java-sdk-1.7.4.jar
hadoop-aws-2.7.6.jar
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...