为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕田峪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()


查看完整回答
反对 回复 2022-07-12
?
达令说

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/*")


查看完整回答
反对 回复 2022-07-12
  • 2 回答
  • 0 关注
  • 167 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号