慕田峪4524236
2022-07-12 15:55:49
我有一個帶有一些小 Parquet 文件的存儲桶,我想將它們合并成一個更大的文件。要執行此任務,我想創建一個 spark 作業來使用和編寫一個新文件。from pyspark import SparkContextfrom pyspark.sql import SparkSession, SQLContextspark = 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.知道出了什么問題嗎?
2 回答

哈士奇WWW
TA貢獻1799條經驗 獲得超6個贊
下載這個 hadoop-aws-2.7.5.jar(或最新版本)并配置這個 jar 可用于 spark
spark = SparkSession \ .builder \ .config("spark.jars", "/path/to/hadoop-aws-2.7.5.jar")\ .getOrCreate()

達令說
TA貢獻1821條經驗 獲得超6個贊
from boto3.session import Session
from pyspark import SparkContext
from pyspark.sql import SparkSession, SQLContext
spark = 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/*")
添加回答
舉報
0/150
提交
取消