猿问

方案没有文件系统:s3 在读取 parquet s3 文件时使用 pyspark

我有一个带有一些小 Parquet 文件的存储桶,我想将它们合并成一个更大的文件。


要执行此任务,我想创建一个 spark 作业来使用和编写一个新文件。


from pyspark import SparkContext

from pyspark.sql import SparkSession, SQLContext


spark = SparkSession.builder \

                    .master("local") \

                    .appName("Consolidated tables") \

                    .getOrCreate()


spark._jsc.hadoopConfiguration().set("fs.s3a.access.key", "access")

spark._jsc.hadoopConfiguration().set("fs.s3a.secret.key", "secret")


df = spark.read.parquet("s3://lake/bronze/appx/contextb/*")


这段代码向我抛出了一个异常:No FileSystem for scheme: s3。如果我切换到s3a://...,我收到错误:Class org.apache.hadoop.fs.s3a.S3AFileSystem not found。


我正在尝试将此代码作为python myfile.py.


知道出了什么问题吗?


慕田峪4524236
浏览 169回答 2
2回答

哈士奇WWW

下载这个 hadoop-aws-2.7.5.jar(或最新版本)并配置这个 jar 可用于 sparkspark = SparkSession \         .builder \         .config("spark.jars", "/path/to/hadoop-aws-2.7.5.jar")\         .getOrCreate()

达令说

from boto3.session import Sessionfrom pyspark import SparkContextfrom pyspark.sql import SparkSession, SQLContextspark = SparkSession.builder \                    .master("local") \                    .appName("Consolidated tables") \                    .getOrCreate()ACCESS_KEY='your_access_key'SECRET_KEY='your_secret_key'session = Session(aws_access_key_id=ACCESS_KEY,                  aws_secret_access_key=SECRET_KEY)s3 = session.resource('s3')df = spark.read.parquet("s3://lake/bronze/appx/contextb/*")
随时随地看视频慕课网APP

相关分类

Python
我要回答