在独立群集中的spark中加载文件

时间:2016-12-05 17:05:54

标签: apache-spark apache-spark-sql

我有一个四节点火花簇。一个节点是主节点和从节点,其他三个节点。我编写了一个示例应用程序,它加载文件并创建数据框并运行一些spark SQL。当我从主节点提交如下所示的应用程序时,它正在生成输出: -

./spark-submit /root/sample.py

但是当我提交下面的主人时,它说“文件不存在错误。

./spark-submit  --master spark://<IP>:PORTNO  /root/sample.py

我正在从示例文本文件创建RDD: -

lines = sc.textFile("/root/testsql.txt");

我需要将文件复制到所有节点吗?它如何适用于生产系统,例如。如果必须处理一些CDRS,我应该在哪里收到这些CDRS。

1 个答案:

答案 0 :(得分:4)

你说得对,它无法读取该文件,因为它在你的服务器上不存在。

您需要确保该文件可通过相同的url / path访问spark的所有节点。

这就像hdfs这样的分布式文件系统让事情变得容易一些,但即使没有它们,你也可以做到。

当您向master提交spark作业时,master将分配所需的执行程序和worker。他们每个人都会尝试并行化任务,这就是sc.textFile告诉它要做的事情。 因此,需要从所有节点访问文件路径。

您可以在同一位置的所有节点上安装文件,也可以使用基于网址的位置来读取文件。基本的事情是文件需要可用并且可以从所有节点读取。