Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 在不做任何更改的情况下迭代RDD_Scala_Apache Spark_Rdd - Fatal编程技术网

Scala 在不做任何更改的情况下迭代RDD

Scala 在不做任何更改的情况下迭代RDD,scala,apache-spark,rdd,Scala,Apache Spark,Rdd,我有一个RDD,这个RDD与它的元素的索引配对。我想简单地迭代它(或者如果有一个很好的Spark函数来做这件事),并通过比较相邻元素的一个值来检查它们。如果相邻的元素完成了这个检查,我想在不同的非RDD结构中记录它们的索引,可能是一个ListBuffer 这可能与某种Spark特殊函数有关,还是我必须手动迭代它,然后如何迭代它?RDD的主要特征之一是它是不可变的。一旦创建了它,您可以根据需要多次迭代它,但您将无法对其进行任何更改 如果要进行更改,需要通过转换创建新的RDD 此外,如果您希望迭代R

我有一个RDD,这个RDD与它的元素的索引配对。我想简单地迭代它(或者如果有一个很好的Spark函数来做这件事),并通过比较相邻元素的一个值来检查它们。如果相邻的元素完成了这个检查,我想在不同的非RDD结构中记录它们的索引,可能是一个ListBuffer


这可能与某种Spark特殊函数有关,还是我必须手动迭代它,然后如何迭代它?

RDD的主要特征之一是它是不可变的。一旦创建了它,您可以根据需要多次迭代它,但您将无法对其进行任何更改

如果要进行更改,需要通过转换创建新的RDD

此外,如果您希望迭代RDD并检查相邻元素,则此逻辑很可能无法很好地工作,因为RDD是分布式的,您通常无法保证哪些记录彼此相邻。您可以通过指定一个分区器来对数据进行分组来进行控制,但除非您显式地使用一个函数来对数据进行分组,否则我还是不会指望它


如果您发布一些示例数据,可能会更容易帮助您回答问题。

RDD的主要特征之一是它是不可变的。一旦创建了它,您可以根据需要多次迭代它,但您将无法对其进行任何更改

如果要进行更改,需要通过转换创建新的RDD

此外,如果您希望迭代RDD并检查相邻元素,则此逻辑很可能无法很好地工作,因为RDD是分布式的,您通常无法保证哪些记录彼此相邻。您可以通过指定一个分区器来对数据进行分组来进行控制,但除非您显式地使用一个函数来对数据进行分组,否则我还是不会指望它


如果您发布一些示例数据,可能会更容易帮助您解决问题。

您不能只是迭代RDD并比较相邻元素。。。您必须将RDD本身连接起来(连接条件index=index-1左右)。为什么不将其转换为数据集/数据帧,这样就可以使用超前/滞后窗口函数?谢谢您的回答。dataset和dataframe之间有什么区别?您认为哪一个更适合我的需要?dataset在性能和类型安全方面总是更好的。但从编程的角度来看,dataframe是用户友好的。谢谢您的回答。我已经开始研究数据集了,现在看来有点直截了当,你不能只是迭代一个RDD并比较相邻的元素。。。您必须将RDD本身连接起来(连接条件index=index-1左右)。为什么不将其转换为数据集/数据帧,这样就可以使用超前/滞后窗口函数?谢谢您的回答。dataset和dataframe之间有什么区别?您认为哪一个更适合我的需要?dataset在性能和类型安全方面总是更好的。但从编程的角度来看,dataframe是用户友好的。谢谢您的回答。我已经开始研究数据集了,现在看起来有点直截了当