[英]How to read from hdfs using spark-shell in Intel hadoop?
我无法从spark-shell(火花版本为1.2.1)读取HDFS(Intel发行版hadoop,Hadoop版本为1.0.3)。 我使用命令mvn -Dhadoop.version=1.0.3 clean package
构建spark,启动spark-shell并使用sc.textFile()
读取HDFS文件,例外是:
WARN hdfs.DFSClient:无法连接到/10.xx.xx.xx:50010,添加到deadNodes和continuejava.net.SocketTimeoutException:120000毫秒超时,同时等待通道准备好读取。 ch:java.nio.channels.SocketChannel [connected local = / 10.xx.xx.xx:44264 remote = / 10.xx.xx.xx:50010] ... ERROR executor.Executor:阶段任务1.0中的异常0.0(TID 1)java.io.IOException:无法获取块:blk_8724894648624652503_7309 file = / research / Files / README.md
同样的问题在这里提出: http : //mail-archives.us.apache.org/mod_mbox/spark-user/201309.mbox/%3CF97ADEE4FBA8F6478453E148FE9E2E8D3CCA37A9@HASMSX106.ger.corp.intel.com%3E
这是建议的解决方案:
“除了在./project/SparkBuild.scala文件中指定HADOOP_VERSION = 1.0.3之外,您还需要指定libraryDependencies并命名”spark-core“解析器。否则,sbt将获取hadoop-core的1.0.3版本来自apache而不是Intel。您可以设置自己指定的本地或远程存储库“
任何人都可以详细说明如何指定SBT应从英特尔获取hadoop-core(可在我们的内部存储库中获得)?
试着看看文档的这个页面
Spark正在使用一些我不太了解的SBT / maven集成,但似乎在根目录中的pom.xml
中指定了存储库
如果这不起作用,您可以探索sbt文件指定resolvers
。
对于记录,这是链接文档的摘录
除了针对正确的版本编译Spark本身之外,您还需要在该版本的hadoop-client上添加Maven依赖项到您运行的任何Spark应用程序,这样他们也可以与群集上的HDFS版本进行通信。 如果您使用的是CDH,则还需要添加Cloudera Maven存储库。 这在SBT中如下所示:
libraryDependencies += "org.apache.hadoop" % "hadoop-client" % "<version>"
// If using CDH, also add Cloudera repo
resolvers += "Cloudera Repository" at "https://repository.cloudera.com/artifactory/cloudera-repos/"
或者在Maven:
<project>
<dependencies>
...
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>[version]</version>
</dependency>
</dependencies>
<!-- If using CDH, also add Cloudera repo -->
<repositories>
...
<repository>
<id>Cloudera repository</id>
<url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
</repository>
</repositories>
</project>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.