Я хочу запустить сеанс 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
.