pyspark java.lang.RuntimeException:java.lang.ClassNotFoundException:未找到类org.apache.hadoop.fs.s3a.S3A文件系统

uqdfh47h  于 2022-12-17  发布在  Spark
关注(0)|答案(1)|浏览(325)

我尝试使用以下命令读取s3上的 parquet 文件,但同时出现以下错误:

java.lang.RuntimeException: java.lang.ClassNotFoundException: Class 
org.apache.hadoop.fs.s3a.S3AFileSystem not found

以下是我尝试过的两种方法:

spark = SparkSession.builder \
        .appName("my_app") \
        .getOrCreate()

        spark._jsc.hadoopConfiguration().set("com.amazonaws.services.s3.enableV4", 
        "true")

        spark._jsc.hadoopConfiguration().set("fs.s3a.impl", 
         "org.apache.hadoop.fs.s3a.S3AFileSystem")

         spark._jsc.hadoopConfiguration().set("fs.s3a.aws.credentials.provider", 
            "com.amazonaws.auth.InstanceProfileCredentialsProvider,com.amazonaws.auth.DefaultAWSCredenti 
            alsProviderChain")
       spark._jsc.hadoopConfiguration().set("fs.AbstractFileSystem.s3a.impl", 
       "org.apache.hadoop.fs.s3a.S3A")

  df = spark.read.parquet("s3a://path/datalake/blueprints/bp_blueprint_1/data/entrytime_month=2022-06/00000-1042-0846a7a2-2353-403d-879a-9ed3dcb11f72-00001.parquet")

我也尝试过这种方法:

spark = SparkSession.builder.master("local").appName("app name").getOrCreate()

df = spark.read.parquet("s3a://path/datalake/blueprints/bp_blueprint_1/data/entrytime_month=2022-06/00000-1042-0846a7a2-2353-403d-879a-9ed3dcb11f72-00001.parquet")

我也尝试过这样做,但我得到的是一个字节输出作为主体:

import boto3
s3_client = boto3.client('s3')
bucket = 'yeah-foundry'
key = 'lake/blueprints/bp_blueprint_1/data/403d-879a-9ed3dcb11f72-00001.parquet'
response = s3_client.get_object(Bucket=bucket, Key = key)
data = response['Body'].read()
print(data)

上面显示了一个奇怪的字节,如下所示:

如果可以的话请帮忙,不要Pandas的解决方案,只有pyspark。

r3i60tvu

r3i60tvu1#

为了能够读写s3,您需要aws-java-sdkhadoop-aws依赖项,实际上,org.apache.hadoop.fs.s3a.S3AFileSystem来自hadoop-aws jar。
您可以从以下网址获得这些信息:

从这两个链接中,您需要选择要使用的版本(这将取决于您想要什么,您使用的Hadoop版本,...)并下载两个.jar文件。
在本地获得.jar文件后,需要将它们添加到运行Spark的机器上的$SPARK_HOME/jars目录中,这样就将这些依赖项添加到了类路径中,使您能够在代码中使用它们。
完成此操作后,应该删除ClassNotFoundException
希望这有帮助!

相关问题