spark-submit 不从 s3 读取文件,只是停留在上面

spark-submit doesn't read file from s3, just stucks on it

当我尝试使用 spark-submit 从 s3 读取数据时遇到问题。 该应用程序在从 s3 存储桶读取数据时卡住了,没有任何警告或控制台输出。但是,如果我 运行 使用 python 相同的应用程序 - 它有效!也许有人遇到过同样的问题?

test.py的代码:

import os
from pyspark.sql import SparkSession
os.environ["PYSPARK_SUBMIT_ARGS"] = """--packages com.amazonaws:aws-java-sdk:1.11.711,org.apache.hadoop:hadoop-aws:3.2.0
                                    --conf spark.serializer=org.apache.spark.serializer.KryoSerializer
                                    --conf spark.driver.memory=2g --conf spark.executor.memory=8g
                                    --conf spark.dynamicAllocation.enabled=false  pyspark-shell"""

spark = SparkSession.builder.appName(f"test").getOrCreate()
print("reading from s3") #stucks here
s3filepath = "s3a://path/to/file"
df = spark.read.csv(
            s3filepath,
            sep='|',
            header='false',
            nullValue='',
            inferSchema=True)
print("showing df")
df.show()

spark-submit 命令:

PYSPARK_PYTHON=python3 /usr/bin/spark-submit --deploy-mode client \
--packages com.amazonaws:aws-java-sdk:1.11.519,org.apache.hadoop:hadoop-aws:3.2.0 \
--conf spark.serializer=org.apache.spark.serializer.KryoSerializer \
--conf spark.driver.memory=2g \
--conf spark.executor.memory=8g \
--conf spark.dynamicAllocation.enabled=false \
test.py

但是当我只使用 python3 test.py 时,它可以正常工作并立即正确读取所有内容。

spark版本:2.4.4

Hadoop 版本:3.2.1

文件包含约 5K 行。

问题是由 spark 资源分配管理器引起的。通过减少请求的资源来解决它。为什么使用 python3 test.py 仍然是个谜