читать паркетный файл с s3 используя pyspark не работает - PullRequest
1 голос
/ 26 сентября 2019

Я пытаюсь прочитать паркетный файл с S3 и продолжаю получать ошибки.Нет проблем при записи файла паркета на S3, и при попытке записи и чтения с локального компьютера он работает отлично.Ошибки возникают только при попытке прочитать паркет из S3.

перепробовал несколько конфигов и получил разные ошибки.1-я конфигурация:

spark.conf.set('fs.s3.awsAccessKeyId', '%%myAcsessId%%')
spark.conf.set('fs.s3.awsSecretAccessKey', '%%mySecretKey%%')
spark.conf.set('fs.s3.impl', 'org.apache.hadoop.fs.s3native.NativeS3FileSystem')
additional JARs for s3 read-write:
>hadoop-aws-2.7.3.jar,
>aws-java-sdk-s3-1.11.156.jar

при использовании команды spark.read.parquet('s3://path/to/parquet_folder') процесс выглядит нормально, но фактический файл, который я получил от S3, поврежден , и его использование убивает блокнот zeppelin (необходимо перезагрузить).после рассмотрения всех связанных с этим проблем, которые я обнаружил в Интернете, некоторые решения предлагали использовать s3a вместо s3 , поэтому я использовал следующую конфигурацию:

spark.conf.set('fs.s3a.access.key', '%%myAcsessId%%')
spark.conf.set('fs.s3a.secret.key', '%%mySecretKey%%')
spark.conf.set('fs.s3a.impl', 'org.apache.hadoop.fs.s3a.S3AFileSystem')

дополнительные JAR-файлы для чтения / записи s3:

hadoop-aws-3.2.1.jar,
**hadoop-common-3.2.1.jar**,
aws-java-sdk-s3-1.11.156.jar

и возникла следующая ошибка:

java.lang.NullPointerException
at org.apache.thrift.transport.TSocket.open(TSocket.java:170)

, поэтому я удалил hadoop-common-3.2.1.jar файл и теперь, когда я пытаюсь прочитать, используя команду spark.read.parquet('s3a://path/to/parquet_folder'), я получаю:

Py4JJavaError: An error occurred while calling o98.parquet.
: java.lang.NoClassDefFoundError: org/apache/hadoop/fs/StreamCapabilities

Я также получил много других ошибок в процессе, и результаты, которые я получаю для последней ошибки: в этой ветке github , но я все еще не могу решить мою проблему.

Спасибо - Мош.

...