【问题标题】:spark scala on yarn cluster csv export纱线集群csv导出上的火花scala
【发布时间】:2018-02-22 00:32:15
【问题描述】:

我有一个 5 节点集群,部署了 YARN。 2 个名称节点和 3 个数据节点。虽然我的代码是在 spark 中提交的。我正在尝试将数据导出到 csv,但是当我这样做时,数据会导出到 2 个数据节点,并且两者在导出文件夹中都有不同的内容。一个将具有 _SUCCESS 文件,另一个将具有导出的 csv(部分-*)。我的应用程序最终有一个空白路径,因为有时具有 _SUCCESS 文件的节点和运行应用程序的节点是相同的,但实际的 csv 在另一个节点中。有时也不会创建 _SUCCESS 文件,但会创建 part-*.csv 但在另一个节点中,在这种情况下,如果应用程序不再在同一节点中运行,我最终会再次出现空白路径。我正在使用方式如下:

dataframe.coalesce(1).write.option("header","true").csv(path)

【问题讨论】:

  • 你的路径值是多少?
  • file:///

标签: apache-spark hdfs cluster-computing hadoop-yarn


【解决方案1】:

而不是文件:/// 为什么不提供 hdfs/s3 位置?

当你给出一个本地路径时,数据存储在工作节点上!您可能有 2 个节点而不是 3 个节点上的数据,因为有 2 个分区。

【讨论】:

  • 我要导出的数据在 cassandra 中,处理后我正尝试导出。导出需要在 Linux 文件系统中完成,因为 UI 需要访问文件。
  • 我只得到一个 part-* 文件,因为我使用了合并。但问题是它是在应用程序未运行的节点上创建的。因此,如果 datanode3 正在运行应用程序,则会在 datanode1 和 datanode3 上创建导出文件夹。 datenode1 包含 part-*.csv 文件,datanode3 包含_SUCCESS。两个节点的绝对路径相同。因为应用程序在 datanode3 中运行,它返回带有文件位置的节点的本地主机,但该位置不包含文件,datanode1 包含。
  • 我觉得 datanode1 和 datanode3 都在运行 1 个执行程序,因此他们创建了 tarhet 目录。你怎么确定只有datanode3在运行d executor?
  • 当我给 时,只针对该应用程序显示 datanode3 ip。另外,当我打开namenode:8088界面时,日志和容器都显示在datanode3中。
猜你喜欢
  • 2016-10-11
  • 2014-12-17
  • 2023-03-09
  • 1970-01-01
  • 2015-10-18
  • 1970-01-01
  • 1970-01-01
  • 2018-02-15
  • 1970-01-01
相关资源
最近更新 更多