我正在运行一个 Spark 作业(版本 1.2.0),输入是 Google 云存储桶内的一个文件夹(即 gs://mybucket/folder)
在我的 Mac 机器上本地运行作业时,出现以下错误:
5932 [main] ERROR com.doit.customer.dataconverter.Phase1 - Job for date: 2014_09_23 failed with error: No FileSystem for scheme: gs
我知道需要完成两件事才能支持 gs 路径。一种是安装 GCS 连接器,另一种是在 Hadoop 安装的 core-site.xml 中进行以下设置:
<property>
<name>fs.gs.impl</name>
<value>com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem</value>
<description>The FileSystem for gs: (GCS) uris.</description>
</property>
<property>
<name>fs.AbstractFileSystem.gs.impl</name>
<value>com.google.cloud.hadoop.fs.gcs.GoogleHadoopFS</value>
<description>
The AbstractFileSystem for gs: (GCS) uris. Only necessary for use with Hadoop 2.
</description>
</property>
我认为我的问题来自于我不确定在这种本地模式下每个部分究竟需要配置在哪里。在Intellij项目中,我使用的是Maven,所以引入spark库如下:
<dependency> <!-- Spark dependency -->
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.10</artifactId>
<version>1.2.0</version>
<exclusions>
<exclusion> <!-- declare the exclusion here -->
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
</exclusion>
</exclusions>
</dependency>
,以及 Hadoop 1.2.1 如下:
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>1.2.1</version>
</dependency>
问题是,我不确定为 Spark 配置 hadoop 位置的位置,以及配置 hadoop conf 的位置。因此,我可能会添加到错误的 Hadoop 安装中。另外,有没有修改文件后需要重启的东西?据我所知,我的机器上没有运行 Hadoop 服务。
最佳答案
在 Scala 中,在设置 hadoopConfiguration 时添加以下配置:
val conf = sc.hadoopConfiguration
conf.set("fs.gs.impl", "com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem")
conf.set("fs.AbstractFileSystem.gs.impl", "com.google.cloud.hadoop.fs.gcs.GoogleHadoopFS")
关于apache-spark - "No Filesystem for Scheme: gs"在本地运行 spark 作业时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27782844/