当前位置: 首页 > 知识库问答 >
问题:

如何在Intel hadoop中使用spark shell读取HDF?

端木涵润
2023-03-14

我无法从spark shell(spark版本为1.2.1)读取HDFS(英特尔发行版hadoop,hadoop版本为1.0.3)。我使用mvn-Dhadoop命令构建了spark。version=1.0.3 clean package,启动spark shell并使用sc.textFile()读取HDFS文件,异常为:

警告hdfs。DFSClient:无法连接到/10.xx.xx.xx:50010,添加到死亡节点和continuejava.net.SocketTimeoutException:120000毫秒超时,同时等待通道准备好读取。ch:java.nio.channels.SocketChannel[连接的本地=/10.xx.xx.xx:44264远程=/10.xx.xx.xx:50010]...错误执行器。执行器:0.0阶段任务1.0中的异常(TID 1)java.io.IOException:无法获取块:blk_8724894648624652503_7309文件=/研究/文件/README. md

这里也有同样的问题:http://mail-archives.us.apache.org/mod_mbox/spark-user/201309.mbox/

这是建议的解决方案:

"除了在./project/SparkBuild.scala文件中指定HADOOP_VERSION=1.0.3之外,您还需要指定库依赖项并命名为"spack-core"解析器。否则,sbt将从apache而不是Intel获取1.0.3版的hadoop-core。您可以设置自己指定的本地或远程存储库"

谁能详细说明一下如何指定SBT从Intel获取hadoop core(可在我们的内部存储库中找到)?

共有1个答案

颜高格
2023-03-14

试着看一下文档的这一页

Spark正在使用一些我不太了解的SBT/maven集成,但看起来存储库是在根中的pom.xml中指定的

如果这不起作用,您可以探索sbt文件指定解析器的位置。

为了记录在案,这是链接文档的摘录

除了根据正确的版本编译Spark本身之外,您还需要将该版本的hadoop客户端上的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>
 类似资料:
  • 问题内容: 如何在Java中使用XPath读取XML? 问题答案: 你需要遵循以下要求: 然后,调用传入该代码中定义的文档和所需的返回类型,并将结果转换为结果的对象类型。 如果你需要有关特定XPath表达式的帮助,则可能应该将其作为单独的问题进行询问(除非首先是你的问题-我理解你的问题是如何在Java中使用API​​)。 此XPath表达式将为你提供下第一个URL元素的文本: 这将使你获得第二个:

  • 问题内容: 我想使用Java中的XPath读取XML数据,因此对于我收集的信息,我无法根据需要解析XML。 这是我想做的: 通过其URL从联机获取XML文件,然后使用XPath对其进行解析,我想在其中创建两个方法。一种是输入特定的节点属性ID,然后得到所有的子节点,第二种是假设我只想获得一个特定的子节点值 在上面的示例中,如果我通过@name搜索,我想读取所有元素,并且我想只从@name’Java

  • 问题内容: 我正在尝试在Java中阅读excel。我有以下代码。 我导入了poi.3.6jar和poi.ooxml-3.6 jar。当我运行该程序时,出现以下错误消息。 我不明白为什么会出现此错误消息。请帮助我。 问题答案: 将文件添加到您的类路径。

  • XML文件为: Xml文件 我编写的代码: 列表queryXmlUsingXpathAndReturnList(String xml,String xpathExpression){ DocumentBuilderFactory dbFactory=DocumentBuilderFactory.newInstance() DocumentBuilder dBuilder=dbfactory.new

  • 我对webapi相当陌生,已经开发了一个小型webapi,它有一些操作并返回我的自定义类Response。 现在我遇到的困难是,我不知道如何读取从webapi操作返回的响应数据,并从我的响应类中提取json。在获得json之后,如何将该json 发送到customer类。 这就是我调用webapi函数的方式: null 1)如何在客户端获取webapi返回的响应类 2)如何从响应类中提取json

  • 问题内容: 我需要传递给jqgrid,但找不到如何执行此操作的任何示例。这是我的尝试: 从服务器发送: 并在jqgrid中: 如何从jqgrid 发送和阅读? 编辑:我知道我正在被发送,因为我可以在Fiddler中看到它。我认为我只是停留在如何在客户端上阅读它。 问题答案: 通常,的用法非常简单。jqGrid支持您从服务器发送 将与jqGrid数据一起保存的 任何其他 数据。所以,如果jqGrid