ore*_*tis 4 google-cloud-storage apache-spark google-cloud-platform
问题很简单:您有一个本地 spark 实例(集群或只是在本地模式下运行它)并且您想从 gs:// 读取
在我使用 Spark 2.4.3 的情况下,我需要执行以下操作才能从 Spark 本地启用 GCS 访问。我使用了 JSON 密钥文件,而不是client.id/secret上面建议的。
在 中$SPARK_HOME/jars/,使用gcs-connector此处的阴影jar:http : //repo2.maven.org/maven2/com/google/cloud/bigdataoss/gcs-connector/hadoop2-1.9.17/否则我在传递依赖项方面遇到了各种失败。
(可选)我的build.sbt补充:
"com.google.cloud.bigdataoss" % "gcs-connector" % "hadoop2-1.9.17"
exclude("javax.jms", "jms")
exclude("com.sun.jdmk", "jmxtools")
exclude("com.sun.jmx", "jmxri")
Run Code Online (Sandbox Code Playgroud)在$SPARK_HOME/conf/spark-defaults.conf,添加:
spark.hadoop.google.cloud.auth.service.account.enable true
spark.hadoop.google.cloud.auth.service.account.json.keyfile /path/to/my/keyfile
Run Code Online (Sandbox Code Playgroud)一切正常。
我在这里提交我通过组合不同资源提出的解决方案:
下载谷歌云存储连接器:gs-connector并将其存储在$SPARK/jars/文件夹中(检查底部的备选方案 1)
core-site.xml从这里下载文件,或从下面复制它。这是hadoop使用的配置文件,(spark使用的)。
将core-site.xml文件存储在一个文件夹中。我个人创建$SPARK/conf/hadoop/conf/文件夹并将其存储在那里。
在 spark-env.sh 文件中,通过添加以下行来指示 hadoop conf fodler: export HADOOP_CONF_DIR=
=</absolute/path/to/hadoop/conf/>
从 Google ( Google Console-> API-Manager-> Credentials)的相应页面创建 OAUTH2 密钥。
将凭据复制到core-site.xml文件中。
备选方案1:$SPARK/jars您可以将jar 存储在任何文件夹中,并将该文件夹添加到spark 类路径中,而不是将文件复制到文件夹中。一种方法是SPARK_CLASSPATH 在spark-env.sh``folder butSPARK_CLASSPATH 中进行编辑,现在已弃用。因此,可以在此处查看如何在 spark 类路径中添加 jar
<configuration>
<property>
<name>fs.gs.impl</name>
<value>com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem</value>
<description>Register GCS Hadoop filesystem</description>
</property>
<property>
<name>fs.gs.auth.service.account.enable</name>
<value>false</value>
<description>Force OAuth2 flow</description>
</property>
<property>
<name>fs.gs.auth.client.id</name>
<value>32555940559.apps.googleusercontent.com</value>
<description>Client id of Google-managed project associated with the Cloud SDK</description>
</property>
<property>
<name>fs.gs.auth.client.secret</name>
<value>fslkfjlsdfj098ejkjhsdf</value>
<description>Client secret of Google-managed project associated with the Cloud SDK</description>
</property>
<property>
<name>fs.gs.project.id</name>
<value>_THIS_VALUE_DOES_NOT_MATTER_</value>
<description>This value is required by GCS connector, but not used in the tools provided here.
The value provided is actually an invalid project id (starts with `_`).
</description>
</property>
</configuration>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9163 次 |
| 最近记录: |