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