在spark scalaDataframe中迭代时,如何存储指向“pick up where you left off”的指针?

wljmcqd8  于 2021-05-18  发布在  Spark
关注(0)|答案(1)|浏览(276)

假设我有一些正在读取的Dataframe,每次我都希望按排序列显示前2行。下次我读入那个Dataframe时,我不想从头开始,而是要显示上一次结束时的下两行。我想我需要创建一些二进制指针列来告诉它在哪里开始/停止,当它到达结尾时应该回到开头。举个例子:

var df = Seq(("Mike",1),("Kevin",2),("Bob",3),("Steve",4),("Dave",5),("Dustin",6),("Melvin",7),("Henry",8)).toDF("name","score")


在第一次运行时,输出应该是mike和kevin的前两行:

在第二次运行时,输出应该是接下来的两行,

以此类推。
如何动态地执行此操作,以便在读取csv时,它能够自动确定要显示的内容?我想我必须初始化一个“指针”列,然后以某种方式循环遍历它,每次都用新的指针位置覆盖现有的文件。你会怎么做?
我从这段代码开始,但理想情况下,我需要在初始化时在第一行有一个1,而不是所有的零

df.withColumn("pointer",lit(0)).show
beq87vna

beq87vna1#

如果您在每次读取并发出前2行之后将Dataframe保存为csv,那么您可以在其中添加一个鉴别器列(我相信您在这个意义上使用了指针)并将其保存在Dataframe中(最终也是csv)。当您将csv读回dataframe时,可以过滤设置了此标志的行。这将帮助您摆脱那些已经输出的行。

相关问题