记录一下自己花了一下午时间在pyspark读取minio数据文件遇到的坑
因为spark没法直接进行像pd.read_csv一样对HTTPresponse的url的读取,但是minio支持s3的接口,所以按照对于s3的读取就ok了。
spark读取s3文件时,需要两个额外的jar外部依赖包,hadoop-aws.jar 和aws-java-sdk.jar ,同时这两个版本是需要对应的。并且要确保hadoop-common和hadoop-aws的版本必须一致,否则会出现org/apache/hadoop/fs/StreamCapabilities的报错。
pyspark读取s3上的文件代码如下`
AWS_ID = 'admin'
AWS_KEY = 'admin'
sc._jsc.hadoopConfiguration().set("fs.s3a.access.key", AWS_ID)
sc._jsc.hadoopConfiguration().set("fs.s3a.secret.key",AWS_KEY)
sc._jsc.hadoopConfiguration().set("fs.s3a.endpoint", "http://端口")
df = spark.read.format('csv').load("s3a://minio路径.csv)
df.show()
参考:
[1]https://hadoop.apache.org/docs/current3/hadoopaws/tools/hadoop-aws/index.html#Getting_Started [2]https://blog.csdn.net/helloword4217/article/details/99691961 [3] https://blog.csdn.net/hzy459176895/article/details/83616465 [4]https://stackoverflow.com/questions/52310416/noclassdeffounderror-org-apache-hadoop-fs-streamcapabilities-while-reading-s3-d
|