Amazon s3 无法使用Pyspark 2.4.4读取s3存储桶中的拼花文件

Amazon s3 无法使用Pyspark 2.4.4读取s3存储桶中的拼花文件,amazon-s3,pyspark,parquet,python-s3fs,Amazon S3,Pyspark,Parquet,Python S3fs,我正在使用Pyspark 2.4.4 我想将s3存储桶中的一些拼花文件加载到spark数据框中,我想一次读取所有这些文件 我一直在这些链接中寻找如何做到这一点: 我尝试了多种方法,但无法加载文件,例如: 导入操作系统 从pyspark导入SparkContext,SparkConf 从pyspark.sql导入SparkSession 作为pd进口熊猫 将databricks.koalas导入为ks 进口boto3 从boto3.session导入会话 导入botocore 从zipf

我正在使用Pyspark 2.4.4

我想将s3存储桶中的一些拼花文件加载到spark数据框中,我想一次读取所有这些文件

我一直在这些链接中寻找如何做到这一点:

我尝试了多种方法,但无法加载文件,例如:

导入操作系统
从pyspark导入SparkContext,SparkConf
从pyspark.sql导入SparkSession
作为pd进口熊猫
将databricks.koalas导入为ks
进口boto3
从boto3.session导入会话
导入botocore
从zipfile导入zipfile
导入URL库
导入日期时间
导入操作系统
从s3fs导入S3F文件系统
将dask.dataframe作为dd导入
aws_地区='ap-东南-1'
#为基于Kubernetes的群集管理器创建Spark配置
sparkConf=sparkConf()
sparkConf.setMaster(“k8s://https://kubernetes.default.svc.cluster.local:443")
sparkConf.setAppName(“spark”)
set(“spark.kubernetes.container.image”,“”)
set(“spark.kubernetes.container.image.pullSecrets”,“”)
set(“spark.kubernetes.namespace”,“spark”)
sparkConf.set(“spark.executor.instances”,“3”)
sparkConf.set(“spark.executor.cores”,“1”)
sparkConf.set(“spark.driver.memory”,“512m”)
sparkConf.set(“spark.executor.memory”,“512m”)
sparkConf.set(“spark.kubernetes.pyspark.pythoinversion”,“3”)
sparkConf.set(“spark.kubernetes.authenticate.driver.serviceAccountName”,“spark”)
sparkConf.set(“spark.kubernetes.authenticate.serviceAccountName”,“spark”)
sparkConf.set(“spark.driver.port”、“29413”)
sparkConf.set(“spark.driver.host”,“”)
sparkConf.set(“fs.s3a.impl”、“org.apache.hadoop.fs.s3a.S3AFileSystem”)
sparkConf.set(“com.amazonaws.services.s3.enableV4”,“true”)
sparkConf.set(“fs.s3a.access.key”,“”)
sparkConf.set(“fs.s3a.secret.key”,“”)
sparkConf.set(“fs.s3a.connection.maximum”,“100000”)
#看https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region
sparkConf.set(“fs.s3a.endpoint”,“s3.+aws_region+”.amazonaws.com”)
#初始化我们的Spark cluster,这实际上会
#生成工作节点。
spark=SparkSession.builder.config(conf=sparkConf.getOrCreate())
sc=spark.sparkContext
df=火花.阅读.拼花地板(f“s3a:/”)
我也尝试过:

导入操作系统
从pyspark导入SparkContext,SparkConf
从pyspark.sql导入SparkSession
作为pd进口熊猫
将databricks.koalas导入为ks
进口boto3
从boto3.session导入会话
导入botocore
从zipfile导入zipfile
导入URL库
导入日期时间
导入操作系统
从s3fs导入S3F文件系统
将dask.dataframe作为dd导入
aws_地区='ap-东南-1'
#为基于Kubernetes的群集管理器创建Spark配置
sparkConf=sparkConf()
sparkConf.setMaster(“k8s://https://kubernetes.default.svc.cluster.local:443")
sparkConf.setAppName(“spark”)
set(“spark.kubernetes.container.image”,“”)
set(“spark.kubernetes.container.image.pullSecrets”,“”)
set(“spark.kubernetes.namespace”,“spark”)
sparkConf.set(“spark.executor.instances”,“3”)
sparkConf.set(“spark.executor.cores”,“1”)
sparkConf.set(“spark.driver.memory”,“512m”)
sparkConf.set(“spark.executor.memory”,“512m”)
sparkConf.set(“spark.kubernetes.pyspark.pythoinversion”,“3”)
sparkConf.set(“spark.kubernetes.authenticate.driver.serviceAccountName”,“spark”)
sparkConf.set(“spark.kubernetes.authenticate.serviceAccountName”,“spark”)
sparkConf.set(“spark.driver.port”、“29413”)
sparkConf.set(“spark.driver.host”,“”)
#初始化我们的Spark cluster,这实际上会
#生成工作节点。
spark=SparkSession.builder.config(conf=sparkConf.getOrCreate())
sc=spark.sparkContext
sc.setSystemProperty(“com.amazonaws.services.s3.enableV4”,“true”)
hadoop_conf=sc._jsc.hadoopConfiguration()
aws_地区='ap-东南-1'
#看https://stackoverflow.com/questions/43454117/how-do-you-use-s3a-with-spark-2-1-0-on-aws-us-east-2
hadoop_conf.set(“fs.s3a.impl”、“org.apache.hadoop.fs.s3a.S3AFileSystem”)
hadoop_conf.set(“com.amazonaws.services.s3.enableV4”,“true”)
hadoop_conf.set(“fs.s3a.access.key”,”)
hadoop_conf.set(“fs.s3a.secret.key”,”)
hadoop_conf.set(“fs.s3a.connection.max”,“100000”)
#看https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region
hadoop_conf.set(“fs.s3a.endpoint”,“s3.+aws_region+”.amazonaws.com”)
进口Pypark
date=datetime.datetime.today()-datetime.timedelta(天=2)
路径=“”
sql=pyspark.sql.SparkSession(sc)
sc.镶木地板(“s3a://”+路径)
但我有一个错误:

---------------------------------------------------------------------------
Py4JJavaError回溯(最近一次调用)
在里面
1 date=datetime.datetime.today()-datetime.timedelta(天=2)
---->2 df=spark.read.parquet(f“s3a://cp-datadumps/MCF/2020/10/17/advances/advances.parquet\u 0\u 0.snapy.parquet”)
/拼花地板中的usr/local/spark/python/pyspark/sql/readwriter.py(self,*路径)
314[('name','string'),('year','int'),('month','int'),('day','int')]
315         """
-->316返回自成角(自成角)拼花地板(自成角至自成角)
317
318@ignore_unicode_前缀
/usr/local/spark/python/lib/py4j-0.10.7-src.zip/py4j/java_gateway.py in____调用(self,*args)
1255 answer=self.gateway\u client.send\u命令(command)
1256返回值=获取返回值(
->1257应答,self.gateway_客户端,self.target_id,self.name)
1258
1259对于临时参数中的临时参数:
/装饰中的usr/local/spark/python/pyspark/sql/utils.py(*a,**kw)
61 def装饰(*a,**千瓦):
62尝试:
--->63返回f(*a,**kw)
64除py4j.protocol.Py4JJavaError外的其他错误为e:
65 s=e.java_exception.toString()
/获取返回值中的usr/local/spark/python/lib/py4j-0.10.7-src.zip/py4j/protocol.py(答案、网关客户端、目标id、名称)
326 raise Py4JJavaError(
327“在
java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.hadoop.fs.s3a.S3AFileSystem not found