【发布时间】:2021-08-15 15:21:51
【问题描述】:
当我尝试使用 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 时,它可以正常工作并且可以毫无延迟地正确读取所有内容。
火花版本:2.4.4
Hadoop 版本:3.2.1
该文件包含约 5K 行。
【问题讨论】:
-
问题是由 spark 资源分配管理器引起的。通过减少请求的资源来解决它。为什么它使用 python3 test.py 仍然是一个谜。
标签: python amazon-web-services apache-spark hadoop amazon-s3