相关疑难解决方法(0)

如何从Apache Spark访问s3a://文件?

Hadoop 2.6不支持开箱即用的s3a,所以我尝试了一系列解决方案和修复,包括:

部署与hadoop-aws和aws-java-sdk =>无法读取环境变量的凭据将hadoop-aws添加到maven =>各种传递依赖冲突

有没有人成功地使两者都有效?

hadoop amazon-s3 apache-spark

49
推荐指数
5
解决办法
6万
查看次数

使用 pyspark 从 S3 读取数据抛出 java.lang.NumberFormatException: For input string: "100M"

我正在使用以下代码从 S3 读取一些 json 数据:

df = spark_sql_context.read.json("s3a://test_bucket/test.json")
df.show()
Run Code Online (Sandbox Code Playgroud)

上面的代码抛出以下异常:

py4j.protocol.Py4JJavaError: An error occurred while calling o64.json.
: java.lang.NumberFormatException: For input string: "100M"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Long.parseLong(Long.java:589)
    at java.lang.Long.parseLong(Long.java:631)
    at org.apache.hadoop.conf.Configuration.getLong(Configuration.java:1538)
    at org.apache.hadoop.fs.s3a.S3AFileSystem.initialize(S3AFileSystem.java:248)
    at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:3303)
    at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:124)
    at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:3352)
    at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:3320)
    at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:479)
    at org.apache.hadoop.fs.Path.getFileSystem(Path.java:361)
    at org.apache.spark.sql.execution.datasources.DataSource$$anonfun$org$apache$spark$sql$execution$datasources$DataSource$$checkAndGlobPathIfNecessary$1.apply(DataSource.scala:547)
    at org.apache.spark.sql.execution.datasources.DataSource$$anonfun$org$apache$spark$sql$execution$datasources$DataSource$$checkAndGlobPathIfNecessary$1.apply(DataSource.scala:545)
    at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
    at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)
    at scala.collection.immutable.List.foreach(List.scala:392)
    at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:241)
    at scala.collection.immutable.List.flatMap(List.scala:355)
    at org.apache.spark.sql.execution.datasources.DataSource.org$apache$spark$sql$execution$datasources$DataSource$$checkAndGlobPathIfNecessary(DataSource.scala:545)
    at org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:359)
    at org.apache.spark.sql.DataFrameReader.loadV1Source(DataFrameReader.scala:223)
    at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:211)
    at org.apache.spark.sql.DataFrameReader.json(DataFrameReader.scala:391)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244) …
Run Code Online (Sandbox Code Playgroud)

hadoop amazon-s3 apache-spark pyspark

10
推荐指数
1
解决办法
3561
查看次数

S3A:在S3:在Spark EMR中工作时失败

我将Spark与EMR 5.5.0结合使用。如果我使用s3://...URL将简单文件写入s3,则可以正常书写。但是,如果我使用一个s3a://...地址,它将失败并显示Service: Amazon S3; Status Code: 403; Error Code: AccessDenied

使用AWS命令行,我可以cp,mv和rm我写入路径中的任何文件。但是从火花开始,s3aput命令失败。

我们启用了服务器端加密,并且我知道spark知道是因为s3URL有效。有任何想法吗?

此处的 PUT DEBUG失败日志。也许需要注意的重要一点是,我正在执行一个操作,rdd.saveAsTextFile(path)但是put命令说它试图写入/my-bucket/tmp/carlos/testWrite/4/_temporary/0/它只能在拼花地板中执行的操作?不知道该细节是否相关,但我想提一下。

amazon-s3 amazon-web-services apache-spark

4
推荐指数
1
解决办法
4018
查看次数