Yan*_*eld 7 hadoop google-cloud-storage apache-spark google-hadoop google-cloud-dataproc
我正在运行Spark作业(版本1.2.0),输入的内容是Google Clous存储桶中的文件夹(例如gs:// mybucket / folder)
在Mac机器上本地运行作业时,出现以下错误:
5932 [main]错误com.doit.customer.dataconverter.Phase1-日期作业:2014_09_23失败,错误:方案的无文件系统:gs
我知道要支持gs路径,需要做2件事。一种是安装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>
Run Code Online (Sandbox Code Playgroud)
我认为我的问题来自这样一个事实,即我不确定在此本地模式下确切需要在哪里配置每个组件。在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>
Run Code Online (Sandbox Code Playgroud)
和Hadoop 1.2.1,如下所示:
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>1.2.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
问题是,我不确定为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")
Run Code Online (Sandbox Code Playgroud)
我不能说出了什么问题,但这是我会尝试的。
fs.gs.project.id:<property><name>fs.gs.project.id</name><value>my-little-project</value></property>sc.hadoopConfiguration.get(fs.gs.impl)以确保您的core-site.xml已加载。在驱动程序和执行程序中打印它:println(x); rdd.foreachPartition { _ => println(x) }sparkConf.setJars(...))。我认为这在本地模式下并不重要(都是一个 JVM,对吧?),但你永远不知道。除了您的程序需要重新启动之外什么都不需要。没有 Hadoop 进程。在本地和独立模式下,Spark 仅使用 Hadoop 作为库,并且我认为仅用于 IO。
| 归档时间: |
|
| 查看次数: |
6000 次 |
| 最近记录: |