apache-spark - AWS错误请求(400) Spark

标签 apache-spark hadoop

我正在尝试从s3读取orc文件。我可以从spark-shell读取它,如下所示。

scala> val df = spark.read.format("orc").load("s3a://bucketname/testorc/people/")
df: org.apache.spark.sql.DataFrame = [name: string, age: int ... 1 more field]

并使用以下配置运行spark-shell。
--master spark://ipaddress \
--packages datastax:spark-cassandra-connector:2.0.7-s_2.11,org.apache.hadoop:hadoop-aws:2.7.4,org.apache.hadoop:hadoop-client:2.7.4,com.typesafe:config:1.2.1 \
--conf "spark.driver.memory=4g" \
--conf spark.hadoop.fs.s3a.endpoint=s3.ap-south-1.amazonaws.com \
--conf spark.hadoop.fs.s3a.impl=org.apache.hadoop.fs.s3a.S3AFileSystem \
--conf spark.executor.extraJavaOptions=-Dcom.amazonaws.services.s3.enableV4=true \
--conf spark.driver.extraJavaOptions=-Dcom.amazonaws.services.s3.enableV4=true \
--conf spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version=2 \
--conf spark.speculation=false \
--conf "spark.executor.memory=3g" \

但是,当我尝试使用带有水圈雾的 Spark 从s3读取同一文件时。我收到以下错误:
Status Code: 400, AWS Service: Amazon S3, AWS Request ID: 123456ABDGS, AWS Error Code: null, AWS Error Message: Bad Request,

下面是我的雾气 Spark 配置。
mist.context-defaults.spark-conf = {
      spark.master = "spark://ipaddress"
      spark.default.parallelism = 3
      spark.cores.max = 4
      spark.executor.cores = 1
      spark.driver.memory = "1g"
      spark.executor.memory = "1g"
      spark.cassandra.connection.host = "cassandrahost"
      spark.eventLog.enabled = false
      spark.sql.crossJoin.enabled = true
      spark.sql.shuffle.partitions = 50
      spark.hadoop.fs.s3a.endpoint=s3.ap-south-1.amazonaws.com
      spark.hadoop.fs.s3a.impl=org.apache.hadoop.fs.s3a.S3AFileSystem
      spark.executor.extraJavaOptions="-Dcom.amazonaws.services.s3.enableV4=true"
      spark.driver.extraJavaOptions="-Dcom.amazonaws.services.s3.enableV4=true"
      spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version=2
      spark.speculation=false
    }

Scala代码读取文件:
val df = spark.read.format("orc").load("s3a://bucketname/testorc/people/")

我在这里想念的是什么?请帮忙。

编辑的问题

通过上下文运行选项传递外部依赖关系。
mist.context.abc.run-options = "--packages org.apache.hadoop:hadoop-aws:2.7.4,org.apache.hadoop:hadoop-client:2.7.4,com.typesafe:config:1.2.1"

最佳答案

您需要在上下文中添加与第一个示例--packages相同的spark-shell设置。

关于apache-spark - AWS错误请求(400) Spark ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53496235/

相关文章:

apache-spark - DataFrame na() 填充方法和不明确引用的问题

hadoop - 在 HDP 集群上安装 Snappy

hadoop - 如何使用 Sqoop 将列类型 SDO_GEOMETRY 从 Oracle 导入到 HDFS?

azure - 从 PySpark 写入大型 DataFrame 到 Kafka 遇到超时

java - mongo-hadoop-saveAsNewAPIHadoopFile()-旧文件夹未清理

ubuntu - hadoop Web UI 位于 http ://localhost:50070/doesnt work

map - 什么是mapreduce中的job.get()和job.getBoolean()

apache-spark - 为什么Spark将Map阶段输出保存到本地磁盘?

apache-spark - 使用至少包含一个特定值的窗口过滤数据框

python - Apache Spark : Can't save Grouped Data as CSV