Данные искровой загрузки из s3a на настраиваемой конечной точке останавливаются
Я пытаюсь выполнить простую операцию на искровом кластере, просто запустив
pyspark --master yarn
следующий код:
op = spark.read.format("csv")
op = op.options(header=True, sep=";")
# This is actually a custom S3 endpoint on a AWS Snowball Edge device
op = op.load("s3a://some-bucket/some/path/file_*.txt")
Никаких ошибок не показывает, но операция не завершается. Также, если я передам несуществующий путь в S3, он выдаст ошибку о том, что путь не существует. Если я попытаюсь прочитать из HDFS, это сработает. Так что, похоже, это проблема связи с S3 при чтении данных.
Вот подробности моего стека:
spark: https://dlcdn.apache.org/spark/spark-3.2.1/spark-3.2.1-bin-hadoop3.2.tgz
awscli: https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip
hadoop: https://dlcdn.apache.org/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz
hive: https://dlcdn.apache.org/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz
hadoop_aws: https://repo1.maven.org/maven2/org/apache/hadoop/hadoop-aws/3.3.1/hadoop-aws-3.3.1.jar
aws_java_sdk_bundle: https://repo1.maven.org/maven2/com/amazonaws/aws-java-sdk-bundle/1.11.874/aws-java-sdk-bundle-1.11.874.jar
Мой основной сайт.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://34.223.14.233:9000</value>
</property>
<property>
<name>fs.s3a.endpoint</name>
<value>http://172.16.100.1:8080</value>
</property>
<property>
<name>fs.s3a.access.key</name>
<value>foo</value>
</property>
<property>
<name>fs.s3a.secret.key</name>
<value>bar</value>
</property>
<property>
<name>fs.s3a.connection.ssl.enabled</name>
<value>false</value>
</property>
<property>
<name>fs.s3a.impl</name>
<value>org.apache.hadoop.fs.s3a.S3AFileSystem</value>
</property>
<property>
<name>fs.s3a.connection.maximum</name>
<value>100</value>
</property>
</configuration>
Любые идеи по устранению этой проблемы? Большое спасибо!
1 ответ
Я оказался здесь, когда исследовал аналогичную проблему. У меня также было зависание s3a на пользовательской конечной точке (т.е. зависание или зависание). Однако у меня другая установка — я устанавливаюHadoopConf
в коде вместо XML конфигурации.
Порядок операторов настройки конфигурации в коде важен: настройка должна быть первой и только после этогоfs.s3a.access.key
иfs.s3a.secret.key
можно установить. Что привело меня к этому решению, так это то, что я зарегистрировал все значения конфигурации хаупа и заметил, чтоfs.s3a.endpoint
был пуст.