Прочитать папку с файлами паркетных файлов из местоположения s3, используя pyspark для фрейма данных pyspark - PullRequest
0 голосов
/ 11 октября 2019

Я хочу прочитать некоторые файлы паркета, присутствующие в папке poc/folderName на корзине s3 myBucketName, на фрейм данных pyspark. Я использую pyspark v2.4.3 для того же.

ниже приведен код, который я использую

    sc = SparkContext.getOrCreate()
    sc._jsc.hadoopConfiguration().set("fs.s3.impl", "org.apache.hadoop.fs.s3a.S3AFileSystem")
    sc._jsc.hadoopConfiguration().set("fs.s3a.awsAccessKeyId", 'id')
    sc._jsc.hadoopConfiguration().set("fs.s3a.awsSecretAccessKey", 'sid')
    sqlContext = SQLContext(sc)
    parquetDF = sqlContext.read.parquet("s3a://myBucketName/poc/folderName")

Я скачал пакет hadoop-aws с помощью команды pyspark --packages org. apache.hadoop: hadoop-aws: 3.3.0, но когда я запускаю код выше, я получаю сообщение об ошибке ниже.

An error occurred while calling o825.parquet.
: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.hadoop.fs.s3a.S3AFileSystem not found
    at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2195)
    at org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:2654)
    at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2667)

Что я здесь не так делаю? Я запускаю код Python, используя Anaconda и Spyder на Windows 10

1 Ответ

0 голосов
/ 11 октября 2019

Координаты Maven для драйвера Hadoop S3 с открытым исходным кодом необходимо добавить в качестве зависимости пакета:

spark-submit --packages org.apache.hadoop:hadoop-aws:2.7.0

Обратите внимание, что версия пакета выше привязана к установленному AWS SDK для версии Java.

В коде приложения Spark также может потребоваться что-то вроде следующего:

hadoop_conf = spark.sparkContext._jsc.hadoopConfiguration()
hadoop_conf.set("fs.s3a.impl", "org.apache.hadoop.fs.s3a.S3AFileSystem")
hadoop_conf.set("fs.s3a.access.key", access_id)
hadoop_conf.set("fs.s3a.secret.key", access_key)

Обратите внимание, что при использовании драйвера Hadoop с открытым исходным кодом схема URI S3 имеет вид s3a, а не s3 (как она есть). при использовании Spark на EMR и фирменной EMRFS Amazon). например, s3a: // имя корзины /

Кредиты danielchalef

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...