gpt4 book ai didi

python - 使用pyspark从s3位置读取 Parquet 文件的文件夹到pyspark数据框

转载 作者:行者123 更新时间:2023-12-02 19:54:51 24 4
gpt4 key购买 nike

我想将s3存储桶poc/folderName上的myBucketName文件夹中存在的某些拼花地板文件读取到pyspark数据帧。我使用pyspark v2.4.3相同。

下面是我正在使用的代码

    sc = SparkContext.getOrCreate()
sc._jsc.hadoopConfiguration().set("fs.s3.impl", "org.apache.hadoop.fs.s3a.S3AFileSystem")
sc._jsc.hadoopConfiguration().set("fs.s3a.awsAccessKeyId", 'id')
sc._jsc.hadoopConfiguration().set("fs.s3a.awsSecretAccessKey", 'sid')
sqlContext = SQLContext(sc)
parquetDF = sqlContext.read.parquet("s3a://myBucketName/poc/folderName")

我已经使用命令pyspark --packages org.apache.hadoop:hadoop-aws:3.3.0下载了hadoop-aws软件包,但是当我在上面的代码中运行时,会收到以下错误消息。
An error occurred while calling o825.parquet.
: java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.hadoop.fs.s3a.S3AFileSystem not found
at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2195)
at org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:2654)
at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2667)

我在这里做错了什么?
我正在Windows 10上使用Anaconda和spyder运行python代码

最佳答案

需要将开源Hadoop S3驱动程序的Maven坐标作为软件包依赖项添加:

spark-submit --packages org.apache.hadoop:hadoop-aws:2.7.0

请注意,以上软件包版本与已安装的适用于Java的AWS开发工具包版本相关。

在Spark应用程序的代码中,可能还需要以下内容:
hadoop_conf = spark.sparkContext._jsc.hadoopConfiguration()
hadoop_conf.set("fs.s3a.impl", "org.apache.hadoop.fs.s3a.S3AFileSystem")
hadoop_conf.set("fs.s3a.access.key", access_id)
hadoop_conf.set("fs.s3a.secret.key", access_key)

请注意,在使用开源Hadoop驱动程序时,S3 URI方案是s3a而不是s3(在EMR和Amazon专有的EMRFS上使用Spark时就是这样)。例如s3a:// bucket-name /

归功于 danielchalef

关于python - 使用pyspark从s3位置读取 Parquet 文件的文件夹到pyspark数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58340793/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com