【问题标题】:Reading file from s3 in pyspark using org.apache.hadoop:hadoop-aws使用 org.apache.hadoop:hadoop-aws 从 pyspark 中的 s3 读取文件
【发布时间】:2019-12-01 06:30:41
【问题描述】:

尝试使用hadoop-aws从s3读取文件,下面会提到用于运行代码的命令。 请帮我解决这个问题并理解我做错了什么。

# run using command
# time spark-submit --packages org.apache.hadoop:hadoop-aws:3.2.1 connect_s3_using_keys.py

from pyspark import SparkContext, SparkConf
import ConfigParser
import pyspark

# create Spark context with Spark configuration
conf = SparkConf().setAppName("Deepak_1ST_job")
sc = SparkContext(conf=conf)
sc.setLogLevel("ERROR")

hadoop_conf = sc._jsc.hadoopConfiguration()

config = ConfigParser.ConfigParser()
config.read("/home/deepak/Desktop/secure/awsCred.cnf")
accessKeyId = config.get("aws_keys", "access_key")
secretAccessKey = config.get("aws_keys", "secret_key")

hadoop_conf.set(
    "fs.s3n.impl", "org.apache.hadoop.fs.s3a.S3AFileSystem")
hadoop_conf.set("fs3a.access.key", accessKeyId)
hadoop_conf.set("s3a.secret.key", secretAccessKey)

sqlContext = pyspark.SQLContext(sc)

df = sqlContext.read.json("s3a://bucket_name/logs/20191117log.json")
df.show()

编辑 1:

由于我是 pyspark 的新手,我不知道这些依赖项,因此该错误也不容易理解。

得到错误

File "/home/deepak/spark/spark-3.0.0-preview-bin-hadoop3.2/python/lib/pyspark.zip/pyspark/sql/utils.py", line 98, in deco
  File "/home/deepak/spark/spark-3.0.0-preview-bin-hadoop3.2/python/lib/py4j-0.10.8.1-src.zip/py4j/protocol.py", line 328, in get_return_value
py4j.protocol.Py4JJavaError: An error occurred while calling o28.json.
: java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
        at org.apache.hadoop.fs.s3a.S3AUtils.lookupPassword(S3AUtils.java:816)
        at org.apache.hadoop.fs.s3a.S3AUtils.lookupPassword(S3AUtils.java:792)
        at org.apache.hadoop.fs.s3a.S3AUtils.getAWSAccessKeys(S3AUtils.java:747)
        at org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider.

【问题讨论】:

  • 您看到的错误是什么?到目前为止,您尝试过什么来解决它?请添加所有这些详细信息以更好地帮助您。
  • @JayadeepJayaraman 我添加了错误,请检查。我是 pyspark 的新手

标签: apache-spark amazon-s3 pyspark


【解决方案1】:

我在 spark 3.0.0 / hadoop 3.2 上遇到了同样的问题。

对我有用的是将spark-3.0.0-bin-hadoop3.2/jars 中的hadoop-aws-3.2.1.jar 替换为hadoop-aws-3.2.0.jar 在这里找到:https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-aws/3.2.0

【讨论】:

猜你喜欢
  • 2018-08-19
  • 1970-01-01
  • 2018-10-18
  • 1970-01-01
  • 2021-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-22
相关资源
最近更新 更多