gpt4 book ai didi

apache-spark - sc.parallelize 和 sc.textFile 有什么区别?

转载 作者:行者123 更新时间:2023-12-04 03:08:35 33 4
gpt4 key购买 nike

我是 Spark 的新手。有人可以清除我的疑问吗:

让我们假设下面是我的代码:

a = sc.textFile(filename) 
b = a.filter(lambda x: len(x)>0 and x.split("\t").count("111"))
c = b.collect()

我希望以下是内部发生的事情:(如果我的理解有误,请纠正)

(1) 变量a将保存为包含预期txt文件内容的RDD变量

(2) 驱动程序节点将工作分解为任务,每个任务都包含有关它将操作的数据拆分的信息。
现在这些任务被分配给工作节点。

(3) 当collection action(即本例中的collect())被调用时,结果会从不同的节点返回给master,并保存为局部变量c。

现在我想了解以下代码有何不同:
a = sc.textFile(filename).collect() 
b = sc.parallelize(a).filter(lambda x: len(x)>0 and x.split("\t").count("111"))
c = b.collect()

有人可以澄清一下吗?

最佳答案

(1) variable a will be saved as a RDD variable containing the expected txt file content



(突出显示我的)不是真的。线刚 描述 会发生什么 你执行一个 Action ,即 RDD 变量做 不是 包含预期的 txt 文件内容。

RDD 描述了分区,当一个 Action 被调用时,这些分区将成为读取输入文件部分的任务。

(2) The driver node breaks up the work into tasks and each task contains information about the split of the data it will operate on. Now these Tasks are assigned to worker nodes.



是的,但仅当调用了 c=b.collect() 的操作时在你的情况下。

(3) when collection action (i.e collect() in our case) is invoked, the results will be returned to the master from different nodes, and saved as a local variable c.



是的!这是内存方面最危险的操作,因为在集群中某处运行的所有 Spark 执行程序都开始将数据发送回驱动程序。

Now I want to understand what difference below code makes



引用 sc.textFile 的文档:

textFile(path: String, minPartitions: Int = defaultMinPartitions): RDD[String] Read a text file from HDFS, a local file system (available on all nodes), or any Hadoop-supported file system URI, and return it as an RDD of Strings.



引用 sc.parallelize 的文档:

parallelize[T](seq: Seq[T], numSlices: Int = defaultParallelism)(implicit arg0: ClassTag[T]): RDD[T] Distribute a local Scala collection to form an RDD.



不同之处在于数据集 - 文件(对于 textFile )和本地集合(对于 parallelize )。两者都在幕后做同样的事情,即它们都构建了如何访问将使用转换和操作处理的数据的描述。

因此,主要区别在于数据的来源。

关于apache-spark - sc.parallelize 和 sc.textFile 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44860973/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com