我试图通过简单地运行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
我的 core-site.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>
有关解决此问题的任何想法?太感谢了!