pyspark s3 noclassdeffounderror:com/amazonaws/amazonclientexception

whhtz7ly  于 2021-07-12  发布在  Spark
关注(0)|答案(1)|浏览(744)

我正在尝试从一个运行的小spark集群读取s3文件。我安装了以下jar:

"aws-java-sdk-bundle-1.11.975.jar"
"hadoop-aws-3.2.1.jar"

我使用以下代码:

from pyspark.context import SparkContext
from pyspark.sql import SparkSession, SQLContext
import os

# initialise Spark session

spark = SparkSession \
    .builder \
    .appName("Python Spark SQL basic example") \
    .config("spark.jars", "aws-java-sdk-bundle-1.11.975.jar") \
    .config("spark.jars", "hadoop-aws-3.2.1.jar") \
    .getOrCreate()

os.environ['PYSPARK_SUBMIT_ARGS'] = '--packages com.amazonaws:aws-java-sdk-bundle-1.11.975,org.apache.hadoop:hadoop-aws-3.2.1 pyspark-shell'

fp = "s3a://filepath/objects/"
sc = spark.sparkContext
sqlContext = SQLContext(sc)
df = sqlContext.read.parquet(fp)

然而,当我运行这个,我得到的错误 An error occurred while calling o62.parquet. : java.lang.NoClassDefFoundError: com/amazonaws/AmazonClientException 如果我更新 fp 成为 s3://... 我得到了错误 No FileSystem for scheme "s3" 我在这里尝试了一些解决方案,但到目前为止似乎没有任何效果。

kd3sttzy

kd3sttzy1#

hadoop3.2.1是用awsdk1.11.375构建的;可能是版本问题,或者只是aws sdk jar没有进入类路径
我将从hadoop文档中的“疑难解答s3a”页面开始

相关问题