java.lang.NumberFormatException:写入 S3 时在 Pyspark 中

Anu*_*Anu 2 apache-spark pyspark

我正在尝试在 EC2 实例上使用 pyspark 从 S3 存储桶读取压缩日志文件。EC2 实例具有对 S3 存储桶的读取权限,因为我可以使用 AWS CLI 命令手动下载文件。

这就是我的代码的样子

file_path= 's3a://<bucket_name>/<path_of_file>'

rdd1 = sc.textFile(file_path)

rdd1.take(3)


Run Code Online (Sandbox Code Playgroud)

但我遇到了以下错误

*py4j.protocol.Py4JJavaError: An error occurred while calling o36.partitions.
: java.lang.NumberFormatException: For input string: "64M"*
Run Code Online (Sandbox Code Playgroud)

有人可以帮我吗?

Ste*_*ran 10

您将 hadoop-common 的版本与旧版本的 hadoop-aws 混合在一起。

八年前的2016 年,s3a 连接器在https://issues.apache.org/jira/browse/HADOOP-13680中声明多部分块大小时添加了对使用单位的支持。

hadoop-common JAR 版本 2.8+ 将其设置为“64M”

如果您使用的 s3a 连接器版本无法应对该问题,则意味着它已经有九年历史了

  1. 将您的 hadoop-* jar 升级到最新版本,最好是 3.3.0+
  2. 确保它们都是相同的版本,除非您喜欢查看堆栈跟踪
  3. 并使用与构建 hadoop 完全相同的 aws-sdk-bundle jar ,除非您想查看不同的堆栈跟踪。

这不是意见,这些是 hadoop-aws 维护团队的指示