使用Spark读取Minio存储桶中的多个文件

Ftagn

我正在尝试使用Spark读取多个文件。这些文件是avro文件,存储在名为datalake的Minio存储桶中

我正在使用:Spark 2.2.1编译时没有hadoop

Minio(最新的minio / minio docker)

2个软件包:com.databricks:spark-avro_2.11:4.0.0和org.apache.hadoop:hadoop-aws:2.8.3

我目前正在使用pyspark进行测试:

PYSPARK_PYTHON=python3 /usr/local/spark/pyspark --packages com.databricks:spark-avro_2.11:4.0.0,org.apache.hadoop:hadoop-aws:2.8.3

与Minio的连接的初始化:

AWS_ID='localKey'
AWS_KEY='localSecret'
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://127.0.0.1:9000")

当文件直接存储在存储桶根目录中时,我可以使用通配符,如下所示:

DF_RANDOM = spark.read.format("com.databricks.spark.avro").load("s3a://datalake/random-random_table+0+000000001*.avro")

结果是可以的:

DF_RANDOM.show()
+-----+-------------------+---+-------------+
|index|                  A|  B|    timestamp|
+-----+-------------------+---+-------------+
|   12| 0.5680445610939323|  1|1530017325000|
|   13|  0.925596638292661|  5|1530017325000|
|   14|0.07103605819788694|  4|1530017325000|
|   15|0.08712929970154071|  7|1530017325000|
+-----+-------------------+---+-------------+

但是,如果文件存储在子文件夹中:

DF_RANDOM = spark.read.format("com.databricks.spark.avro").load("s3a://datalake/random/random-random_table+0+000000001*.avro")

发生错误:

Py4JJavaError: An error occurred while calling o111.load. : java.nio.file.AccessDeniedException: s3a://datalake/random: getFileStatus on s3a://datalake/random: com.amazonaws.services.s3.model.AmazonS3Exception: Forbidden (Service: Amazon S3; Status Code: 403; Error Code: 403 Forbidden; Request ID: null), S3 Extended Request ID: null

我不明白为什么?子文件夹由kafka连接器创建

请注意,如果我不使用通配符,则可以访问存储在这些子文件夹中的文件,如下所示:

DF_RANDOM = spark.read.format("com.databricks.spark.avro").load("s3a://datalake/random/random-random_table+0+0000000012.avro")

是否有任何政策或设定机会?spark.read指令似乎像文件一样读取s3:// datalake / random,但它是要浏览的文件夹

任何的想法 ?

不管怎么说,还是要谢谢你

Ftagn

这是一个小问题

在版本2018-06-26T17:56:31Z中修复

https://github.com/minio/minio/pull/5966

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从 GCP 存储桶读取 Apache Beam 中的多个文件

从多个文件夹的s3存储桶中仅读取特定的json文件

apache-beam 从 GCS 存储桶的多个文件夹中读取多个文件并加载它 biquery python

使用 cloudml 或 googleCloudStorageR 从 Google 存储桶中读取 R 中的 csv 文件

如何在不使用 spark 的情况下从 AWS EMR 内部读取 S3 存储桶中的文本文件

如何使用Glue读取多个S3存储桶?

如何使用python从S3存储桶中读取.txt文件并查看内容?

AWS-使用Angular 6从存储桶中读取文件内容

如何使用作曲家DAG从GCP存储桶中递归读取文件名

AWS:使用 lambda 函数读取 Amazon S3 存储桶中的所有文件

如何使用pyspark从s3存储桶中读取csv文件

如何使用Scala从Spark读取Blob存储中的文件

在spark中读取文件时存储文件

从谷歌云存储桶中读取 JSON 文件内容

努力从 Google Cloud Storage 存储桶中读取 csv 文件

如何使用Spark Session列出S3存储桶中的文件?

如何使用AWS CLI删除S3存储桶中的多个文件

在 minio 中根据用户限制存储桶访问

为什么 Spark 应用程序使用多个 csv 文件将 DataFrame 保存到 S3 存储桶

如何使用 API 在存储桶之间复制多个文件

使用boto3和python从S3存储桶目录中仅读取特定格式的文件

从 s3 存储桶读取多个 json 文件时出现 Json.loads 错误

我的s3存储桶如何使用Nginx在不同的文件夹中托管多个网站?

使用 AWS CLI 从 AWS 存储桶中删除日志文件

从存储桶中读取所有文档

批量读取Couchbase存储桶中的文档

如何读取,写入和列出Google存储桶中的文件夹和文件?

从 Spark 中的多个 .gz 文件中读取特定文件

如何通过本地Docker容器中的python应用程序从云存储桶中读取文件