我想看看文件夹里的Parquet文件 poc/folderName
s3铲斗上 myBucketName
到PyparkDataframe。我正在使用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 aws包。hadoop:hadoop-aws:3.3.0但是当我运行上面的代码时,我收到下面的错误。
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)
我做错什么了?我正在windows10上使用anaconda和spyder运行python代码
1条答案
按热度按时间3lxsmp7m1#
开源hadoop s3驱动程序的maven坐标需要作为包依赖项添加:
注意,上面的包版本与已安装的aws sdk for java版本绑定。
在spark应用程序的代码中,可能还需要以下内容:
注意,当使用开源hadoop驱动程序时,s3uri方案是s3a而不是s3(就像在emr和amazon的专有emrfs上使用spark一样)。e、 g.s3a://桶名/
danielchalef的功劳