Dataproc Spark 代码中的 Hadoop fs 配置

问题描述 投票:0回答:1

我遇到了一个 Spark 代码,它在 GCP dataproc 上运行,向 GCS 读取和写入数据。该代码具有以下 Spark 配置。

spark_session.sparkContext._conf.set("fs.gs.impl", "com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem")
spark_session.sparkContext._conf.set("spark.hadoop.fs.gs.impl", "com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem")
spark_session.sparkContext._conf.set("fs.gs.auth.service.account.enable", "true")
spark_session.sparkContext._conf.set("fs.AbstractFileSystem.gs.impl", "com.google.cloud.hadoop.fs.gcs.GoogleHadoopFS")
spark_session.sparkContext._conf.set("fs.gs.project.id", "<val>")
spark_session.sparkContext._conf.set("fs.gs.auth.service.account.email", "<val>")
spark_session.sparkContext._conf.set("fs.gs.auth.service.account.private.key.id", "<val>"])
spark_session.sparkContext._conf.set("fs.gs.auth.service.account.private.key", "<val>")

问题

  1. 为什么需要设置上述Hadoop相关配置,只要标记到Dataproc的Servcie帐户有访问权限,就可以不直接使用spark.read()从spark读取云存储中的数据吗?
  2. 为什么需要使用spark_session.sparkContext._conf.set(),可以不使用spark_session.conf.set()吗?
apache-spark google-cloud-platform pyspark google-cloud-dataproc
1个回答
0
投票
  1. GCS 配置是可选的。默认情况下,在 Dataproc 集群中,GCS 连接器使用虚拟机的服务帐户向 GCS 进行身份验证;但指定属性后,连接器将改用用户指定的服务帐户。请注意,

    fs.gs.auth.service.account.enable
    fs.gs.auth.service.account.email
    和其他一些身份验证属性仅在 GCS 连接器 v2 中可用,请参阅此 doc;在 v3 中,引入了一个新属性
    fs.gs.auth.type
    来显式指定身份验证类型,请参阅此 doc

  2. 两者都可以用来配置 Spark 属性,但是 SparkContext 从一开始就被引入了,Spark Session 是在 Spark 2.0 中引入的,作为早期 Spark Context 和 SQL Context API 的替代品。所以SparkSession是首选。

© www.soinside.com 2019 - 2024. All rights reserved.