Локальный доступ к данным s3 с помощью pyspark - параметр trustAnchors должен быть не пустым - PullRequest
0 голосов
/ 27 апреля 2018

Я хочу запустить сеанс pyspark на своем локальном компьютере и использовать данные, хранящиеся в корзине AWS s3. Пока я пытаюсь сделать

import pyspark as ps

fp = "s3n://my-bucket/some/data/file.csv"
spark = ps.sql.SparkSession.builder.master("local[*]").getOrCreate()
df = spark.read.csv(fp, schema=SCHEMA, sep="\t")
df.show(10, False)

где схема правильно определена в другом месте. Однако я получаю некоторые странные предупреждения и странную ошибку: (Обратите внимание, что первая часть является просто предупреждением и не препятствует выполнению кода, даже если в нем явно указано java/util.ServiceConfigurationError.)

2018-04-27 15:04:59 WARN  NativeCodeLoader:62 - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2018-04-27 15:05:01 WARN  FileSystem:2639 - Cannot load filesystem
java.util.ServiceConfigurationError: org.apache.hadoop.fs.FileSystem: org.apache.hadoop.fs.s3a.S3AFileSystem Unable to get public no-arg constructor
Caused by: java.lang.NoClassDefFoundError: com/amazonaws/AmazonServiceException
Caused by: java.lang.ClassNotFoundException: com.amazonaws.AmazonServiceException
2018-04-27 15:05:02 WARN  FileStreamSink:66 - Error while looking for metadata directory.

py4j.protocol.Py4JJavaError: An error occurred while calling o32.csv.
: org.apache.hadoop.fs.s3.S3Exception: org.jets3t.service.ServiceException: Request Error: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
Caused by: org.jets3t.service.ServiceException: Request Error: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
Caused by: javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
Caused by: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
Caused by: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty

Что такое TrustAnchors? как я могу решить проблему?

Забавно, что, если я попытаюсь использовать boto3 и загрузить один и тот же файл, я могу сделать это без проблем, что заставляет меня думать, что это не проблема, связанная с разрешениями. Однако загрузка всей корзины на мой компьютер не является жизнеспособным решением из-за размера моих данных и скорости, с которой они поступают.

Я установил pyspark в чистой виртуальной среде с использованием pycharm. Я добавил jar aws-java-sdk-1.11.317.jar и hadoop-aws-2.7.3.jar в папку pyspark/jars и создал hdfs-site.xml со своими учетными данными AWS в папке pyspark/conf.

1 Ответ

0 голосов
/ 28 апреля 2018

Если ваша проблема https://bugs.launchpad.net/ubuntu/+source/ca-certificates-java/+bug/1739631,, вы можете попробовать обходной путь от https://gist.github.com/mikaelhg/527204e746984cf9a33f7910bb8b4cb6,, что составляет

/usr/bin/printf '\xfe\xed\xfe\xed\x00\x00\x00\x02\x00\x00\x00\x00\xe2\x68\x6e\x45\xfb\x43\xdf\xa4\xd9\x92\xdd\x41\xce\xb6\xb2\x1c\x63\x30\xd7\x92' > /etc/ssl/certs/java/cacerts

/var/lib/dpkg/info/ca-certificates-java.postinst configure
...