【发布时间】:2022-07-05 02:28:25
【问题描述】:
我正在使用 jupyter/pyspark-notebook docker 映像,但我没有找到对 delta 和 s3 的任何支持,所以我手动尝试设置所有必需的东西,例如下面的代码,然后它工作正常。
import pyspark
spark = pyspark.sql.SparkSession.builder.master("local[4]").appName('SparkDelta') \
.config("spark.sql.extensions", "io.delta.sql.DeltaSparkSessionExtension") \
.config("spark.sql.catalog.spark_catalog", "org.apache.spark.sql.delta.catalog.DeltaCatalog") \
.config("spark.hadoop.fs.s3a.impl", "org.apache.hadoop.fs.s3a.S3AFileSystem") \
.config("spark.jars.packages",
"io.delta:delta-core_2.12:1.2.1,"
"org.apache.hadoop:hadoop-aws:3.3.1,"
"com.amazonaws:aws-java-sdk-bundle:1.12.180") \
.config('spark.hadoop.fs.s3a.access.key', 'xxxxx') \
.config('spark.hadoop.fs.s3a.secret.key', 'xxxxx') \
.getOrCreate()
df = spark.read.csv("s3a://<bucket>/<folder>/test33.csv")
print(df)
但是像上述方法一样公开凭据并设置所有 jar 和包似乎不是一个好方法,所以我想在启动 docker 容器时设置所有这些东西。那么,我们是否可以在 dockerfile 中拥有上面提到的所有配置选项,然后在容器启动并运行时直接使用 spark 对象?
【问题讨论】:
标签: amazon-web-services docker apache-spark pyspark jupyter-lab