apache-spark - "No Filesystem for Scheme: gs"在本地运行 spark 作业时

标签 apache-spark hadoop google-cloud-storage google-cloud-dataproc google-hadoop

我正在运行一个 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/

相关文章:

serialization - Hadoop 序列化器未找到异常

android - 获取存储在 Google Cloud Storage 中给定子目录中的所有对象

apache-spark - 如何管理冲突的 DataProc Guava、Protobuf 和 GRPC 依赖项

java - JavaRDD<Status> 转换为 JavaRDD<String> 时出现问题

java - 使用java读取spark 2.2中的XML并以键值格式读取预期输出

java - Hadoop 2.2 - 合并 Reducer 输出

join - 如何在 HIVE 中连接两个表。

scala - 带有 Spark 和 Cassandra 的 SBT 应用程序 - 类路径中缺少符号 'type <none>.package.DataFrame'

java - Firebase getDownloadUrl 不执行 onSuccess 或 onFailure

google-app-engine - NoClassDefFoundError : Could not initialize OauthRawGcsServiceFactory on production environment