使用pyspark问题从s3中读取实木复合地板文件

时间:2019-09-26 15:45:03

标签: python apache-spark hadoop amazon-s3 parquet

我正在尝试从S3读取实木复合地板文件,但是它杀死了我的服务器(处理时间很长,必须重置机器才能继续工作)。 将镶木地板文件写入S3没问题,当尝试从本地写入和读取文件时,它可以完美工作。尝试从s3读取小文件时,没有问题。 如在许多线程中所见,spark的“ s3a”文件系统客户端(此处为第二个配置)应该能够处理它,但实际上,当尝试使用s3a(具有正确的s3a配置)时,出现'NoSuchMethodError'在下面列出)

Py4JJavaError: An error occurred while calling o155.json.
: java.lang.NoSuchMethodError: com.amazonaws.services.s3.transfer.TransferManager.<init>(Lcom/amazonaws/services/s3/AmazonS3;Ljava/util/concurrent/ThreadPoolExecutor;)

以下配置仅适用于小文件,但使用以下sparkSession配置:

s3配置

spark = SparkSession.builder.appName('JSON2parquet')\
            .config("spark.serializer", "org.apache.spark.serializer.KryoSerializer")\
            .config('fs.s3.awsAccessKeyId', myAccessId')\
            .config('fs.s3.awsSecretAccessKey', 'myAccessKey')\
            .config('fs.s3.impl', 'org.apache.hadoop.fs.s3native.NativeS3FileSystem')\
            .config("spark.sql.parquet.filterPushdown", "true")\
            .config("spark.sql.parquet.mergeSchema", "false")\
            .config("spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version", "2")\
            .config("spark.speculation", "false")\
            .getOrCreate()

s3a配置:

spark = SparkSession.builder.appName('JSON2parquet')\
            .config("spark.serializer", "org.apache.spark.serializer.KryoSerializer")\
            .config('spark.hadoop.fs.s3a.access.key', 'myAccessId')\
            .config('spark.hadoop.fs.s3a.secret.key', 'myAccessKey')\
            .config('spark.hadoop.fs.s3a.impl', 'org.apache.hadoop.fs.s3a.S3AFileSystem')\
            .config("spark.sql.parquet.filterPushdown", "true")\
            .config("spark.sql.parquet.mergeSchema", "false")\
            .config("spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version", "2")\
            .config("spark.speculation", "false")\
            .getOrCreate()

用于s3读写(spark.driver.extraClassPath)的JAR:

hadoop-aws-2.7.3.jar,
**hadoop-common-2.7.3.jar**, -- added in order to use S3a
aws-java-sdk-s3-1.11.156.jar

还有其他可用于解决此问题的.config吗?

谢谢, 莫什。

0 个答案:

没有答案