这个问题很简单:你有一个本地的火花实例(无论是群集或只是运行它在本地模式下),你想从GS阅读://
Answer 1:
我在这里提交的解决方案,我想出了通过组合不同的资源:
下载谷歌云存储连接器: GS-连接器并将其存储在
$SPARK/jars/
文件夹(查看备选1在底部)下载
core-site.xml
从文件在这里 ,或者从下面复制它。 这是通过使用的Hadoop一个配置文件,(其用于通过火花)。存储
core-site.xml
文件夹中的文件。 我个人创建$SPARK/conf/hadoop/conf/
文件夹并将其存储在那里。在spark-env.sh文件中加入下面的行指示的hadoop CONF fodler:
export HADOOP_CONF_DIR= =</absolute/path/to/hadoop/conf/>
创建一个从谷歌(各自的页面中加入OAuth2键
Google Console-> API-Manager-> Credentials
)。凭据复制到
core-site.xml
文件。
选择1:相反,复制文件到的$SPARK/jars
的文件夹,你可以存储任何文件夹中的罐子和火花classpath中添加的文件夹。 一种方法是编辑SPARK_CLASSPATH
在spark-env.sh``folder but
SPARK_CLASSPATH`现在已经过时。 因此,我们可以看这里如何在火花classpath中添加一个罐子
<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>
Answer 2:
在我的星火2.4.3情况下,我需要做到以下几点,以使从星火本地GCS访问。 我用了一个JSON密钥文件主场迎战client.id/secret
上述建议。
在
$SPARK_HOME/jars/
,使用阴影gcs-connector
从这里罐子: 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")
在
$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
和一切工作。