我很好奇在Spark中把一个RDD传递给一个函数到底做了什么。
def my_func(x : RDD[String]) : RDD[String] = {
do_something_here
}
假设我们如上定义一个函数。当我们调用函数并传递一个现有的RDD[String]对象作为输入参数时,这个my_function是否将这个RDD作为函数参数进行“复制”?换句话说,是按引用调用还是按值调用?
在Scala中,传递时不会复制任何get(在C/C++中是按值传递的意思)。大多数基本类型Int、String、Double等都是不可变的,因此通过引用传递它们是非常安全的。(注意:如果您传递了一个可变对象并对其进行了更改,那么任何引用该对象的人都将看到更改)。
最重要的是,RDDs是惰性的、分布式的、不可变的集合。通过函数传递RDDs并对它们应用转换(映射、筛选等)并不能真正传输任何数据或触发任何计算。
所有链式转换都被“记住”,并且当您在RDD上强制执行和操作时,会以正确的顺序自动触发,例如持久化它,或者在驱动程序上本地收集它(通过collect()
、take(n)
等)
我在Scala的Spark数据框架中有一列,它是使用 我想将此列传递给UDF,以便进一步处理,以处理此聚合列中的一个索引。 当我将参数传递给我的UDF时: UDF-类型为Seq[Row]:val removeUnstableActivations:UserDefinedFunction=UDF((xyz:java.util.Date,def:Seq[Row]) 我收到错误: 我应该如何传递这些列,
我有一个RDD,其模式如下: (我们称之为) 我希望创建一个新的RDD,每一行都为,键和值属于。 我希望输出如下: 有人能帮我处理这段代码吗? 我的尝试: 错误:值映射不是Char的成员 我理解这是因为map函数只适用于,而不是每个。请帮助我在中使用嵌套函数。
我刚到UDF的斯帕克。我也看过这里的回答 问题陈述:我正在尝试从数据帧列中查找模式匹配。 例如:数据帧 现在我想对列$text中的每一行进行模式匹配,并添加一个名为count的新列。 结果: 我试图定义一个udf,将$text列作为数组[Seq[String]传递。但是我不能得到我想要的。 到目前为止,我尝试过: 任何帮助都将不胜感激
我有一个spark scala udf,它将一个参数作为dataframe的列,其他参数作为列表,但当我运行函数时,它抛出错误,指向列表参数为 请引导
问题内容: 我有一个C函数声明如下: 如今,我的cython包装器代码使用了numpy数组中的缓冲区语法: 我想使用新的memoryview语法,我的问题是,使用memoryview时如何将指针传递给数据? 我试过了: 当我尝试编译模块时,出现了“无法将类型’long [:]’分配给’long *’”的错误。有没有什么方法可以在调用C函数之前将指针传递给numpy数组而不将其强制转换为numpy数
我在集群中有以下代码: csv_file=“/usr/usr1/test.csv” 但是程序不是在挑FI。有人能帮忙吗?