【发布时间】:2021-04-01 03:52:24
【问题描述】:
我正在创建一个 Spark 作业以从 AWS3 服务器读取数据。这是创建和配置 Spark Session 和 Spark Context 的代码:
spark = SparkSession.builder.appName("mongopipeline").master("local")
.config("spark.executor.memory","1g")
.config("spark.mongodb.input.uri","mongodb://yourway:yourway2020@13.212.171.210:27017/yourway.job_description?authSource=admin")
.config("spark.executor.extraJavaOptions","-Dcom.amazonaws.services.s3.enableV4=true")
.config("spark.driver.extraJavaOptions","-Dcom.amazonaws.services.s3.enableV4=true")
.getOrCreate()
spark_context = spark.sparkContext
spark_context._jsc.hadoopConfiguration().set("fs.s3a.access.key", "XXXX")
spark_context._jsc.hadoopConfiguration().set("fs.s3a.secret.key", "XXXX")
spark_context._jsc.hadoopConfiguration().set("fs.s3a.impl", "org.apache.hadoop.fs.s3a.S3AFileSystem")
然后我得到一个错误:: java.lang.NumberFormatException: For input string: "100M"
我搜索了这个问题,发现这是由config"fs.s3a.multipart.size"的值引起的,默认为“100M”。因此,我又添加了一行代码,即:
spark_context._jsc.hadoopConfiguration().set("fs.s3a.multipart.size", "104857600")
但是,我得到另一个错误:java.lang.IllegalArgumentException,这可能是由于添加的配置引起的。那么如何正确设置"fs.s3a.multipart.size"呢?
更多信息:
蟒蛇3.9.2;火花3.1.1;斯卡拉 2.12.13; aws-java-sdk 1.7.4; hadoop-aws 2.7.1
spark-submit cmd:spark-submit --packages com.amazonaws:aws-java-sdk:1.7.4,org.apache.hadoop:hadoop-aws:2.7.1 /path/to/file/main.py
操作系统:macOS BigSur 11.2.3
非常感谢!
【问题讨论】:
标签: amazon-web-services apache-spark hadoop