gpt4 book ai didi

scala - Spark /斯卡拉 : Passing RDD to Function

转载 作者:行者123 更新时间:2023-12-03 04:49:40 25 4
gpt4 key购买 nike

我很好奇将 RDD 传递给 Spark 中的函数究竟会做什么。

def my_func(x : RDD[String]) : RDD[String] = {
do_something_here
}

假设我们定义了一个如上的函数。当我们调用该函数并传递一个现有的 RDD[String] 对象作为输入参数时,这个 my_function 是否会为此 RDD 作为函数参数进行“复制”?换句话说,它是按引用调用还是按值调用?

最佳答案

在 Scala 中,传递时不会复制任何内容(就 C/C++ 中的值传递而言)。大多数基本类型Int、String、Double等都是不可变的,因此通过引用传递它们是非常安全的。 (注意:如果您传递一个可变对象并更改它,那么任何引用该对象的人都会看到更改)。

最重要的是,RDD 是惰性的、分布式的、不可变的集合。通过函数传递 RDD 并应用 transformation给他们( map ,过滤器等)并没有真正传输任何数据或触发任何计算。

所有链式转换都会被“记住”,并且当您执行和 action 时,将自动以正确的顺序触发。在 RDD 上,例如持久化它,或者在驱动程序本地收集它(通过 collect()take(n) 等)

关于scala - Spark /斯卡拉 : Passing RDD to Function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31040150/

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