【问题标题】:Configure spark in dockerfile在 dockerfile 中配置 spark
【发布时间】: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


    【解决方案1】:

    您可以使用 dockerfile 中的环境变量。

    例如,您可以通过这种方式在 Dockerfile 中设置访问密钥:

    ENV ACCESS_KEY "XXXX"
    

    然后在代码中:

    import os
    import pyspark
    
    spark = pyspark.sql.SparkSession.builder.master("local[4]")\
        .appName('SparkDelta')\
        .config('spark.hadoop.fs.s3a.access.key', os.environ['ACCESS_KEY']) \
        .getOrCreate()
    

    其他键相同

    【讨论】:

      猜你喜欢
      • 2015-09-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-23
      • 1970-01-01
      • 2020-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多