【问题标题】:Spark: Importing DataSpark:导入数据
【发布时间】:2015-07-29 23:44:24
【问题描述】:

我目前有一个 spark 应用程序,它读取几个文件并从中形成一个数据帧,并在数据帧上实现一些逻辑。

我可以看到这些文件的数量和大小在未来会大幅增长,并想了解幕后发生的事情以跟上这种增长。

首先,我只是想仔细检查一下,由于集群上的所有机器都可以访问文件(这是 spark 的要求),因此从这些文件中读取数据的任务是分布式的,并且没有一台机器是负担它? 我正在查看此应用程序的 Spark UI,但由于它仅显示哪些机器执行了哪些操作,并且由于“sc.textFile(filePath)”不是一个操作,我无法确定哪些机器正在执行此读取。

其次,如果我从 Cassandra 之类的数据库中读取这些数据,而不仅仅是读取文件,我将面临哪些优势/劣势?

第三,在我的应用程序中,我有一些代码在数据帧上执行收集 (val treeArr = treeDF.collect()) 以获取数组,然后我在这些代码上实现了一些逻辑数组。但既然这些不是 RDD,Spark 是如何分发这项工作的呢?或者它是否分发它们? 换句话说,与将 RDD 转换为数组或其他数据结构,然后像在任何编程语言中那样实现逻辑相比,我是否应该将我的最大工作量转换为对 RDD 进行转换和执行操作?

我才刚接触 Spark 大约两周,所以如果这些问题是愚蠢的问题,我深表歉意!

【问题讨论】:

    标签: apache-spark


    【解决方案1】:
    1. 是的,sc.textFile 已分发。它甚至还有一个可选的minPartitions 参数。

    2. 这个问题太宽泛了。但简短的回答是,您应该为自己进行基准测试。

    3. collect 将所有数据提取到主服务器。之后,它只是一个普通数组。事实上,如果你想执行分布式计算,你不应该使用collect

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多