如何从Jupyter Pyspark笔记本访问MinIO存储桶?

2024-03-29 10:48:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有MinIO和Jupyter Pyspark笔记本在不同的docker容器上本地运行的实例。我可以使用minio Python包在minio中查看bucket和对象,但是当我尝试使用Pyspark从bucket加载parquet时,我得到以下结果:

代码:

salesDF_path = 's3a://{}:{}/data/sales/example.parquet'.format(host, port)
df = spark.read.load(salesDF_path)

错误:

^{pr2}$

我正试图编写一个脚本来启动这些容器,运行一些测试,然后将它们分解。我需要在某个地方包括一些配置吗?在


Tags: path对象实例docker代码bucket笔记本jupyter
3条回答

请遵循以下步骤:

相关aws JAR

{cd1>确保安装了以下内容:

您可以运行pyspark应用程序,如下所示:

pyspark jars "aws-java-sdk-1.7.4.jar,hadoop-aws-2.7.3 (或来自dockerCMD

在笔记本内,配置“hadoop配置”

sc._jsc.hadoopConfiguration().set("fs.s3a.access.key", "access_key")
sc._jsc.hadoopConfiguration().set("fs.s3a.secret.key", "secret_key")
sc._jsc.hadoopConfiguration().set("fs.s3a.proxy.host", "minio")
sc._jsc.hadoopConfiguration().set("fs.s3a.endpoint", "minio")
sc._jsc.hadoopConfiguration().set("fs.s3a.proxy.port", "9000")
sc._jsc.hadoopConfiguration().set("fs.s3a.path.style.access", "true")
sc._jsc.hadoopConfiguration().set("fs.s3a.connection.ssl.enabled", "false")
sc._jsc.hadoopConfiguration().set("fs.s3a.impl", "org.apache.hadoop.fs.s3a.S3AFileSystem")

请检查s3a client configuration以查看完整的参数列表

现在应该能够从minio查询数据,例如:

sc.textFile("s3a://<file path>")

请参阅此处的注释:https://github.com/jupyter/docker-stacks/issues/272#issuecomment-244278586

具体来说:

import os
os.environ['PYSPARK_SUBMIT_ARGS'] = ' packages com.amazonaws:aws-java-sdk:1.10.34,org.apache.hadoop:hadoop-aws:2.6.0,com.databricks:spark-csv_2.11:1.4.0 pyspark-shell'

这有助于消除类未找到错误

你能展示一下你是如何安装和初始化Spark的吗?看起来您必须下载org.apache.hadoop.fs.s3a.S3AFileSystem的Java库。你能确定你已经安装了hadoop-aws和{}jar吗?我使用http://central.maven.org/maven2/org/apache/hadoop/hadoop-aws/2.7.3/hadoop-aws-2.7.3.jar和{a2}。在

相关问题 更多 >