scala - 在 spark scala 数据帧中迭代时,如何存储指向“从上次中断的地方继续”的指针?
问题描述
假设我有一些正在读取的数据框,并且每次我想根据排序列显示前 2 行。下次我读入那个数据框时,我不想从头开始,而是显示我上次离开的下两行。我在想我需要创建一些二进制指针列来告诉它在哪里开始/停止,当它到达末尾时它应该回到开头。这是一个例子:
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
解决方案
如果您在每次读取后将数据帧保存为 CSV 并发出前 2 行,那么您可以在其中添加一个鉴别器列(我相信您在这个意义上使用了指针)并将其保存在数据帧中(最终也保存在 CSV 中)。当您将 CSV 读回数据框时,您可以过滤设置了此标志的行。这将帮助您摆脱已经输出的那些行。
推荐阅读
- python - 如何在 streamlit 中的列内绘制图形
- datetime - JavaFX 中的日期和时间格式
- go - 从多个数据源获取数据
- java - Recyclerview 项目中的多个微调器
- php - 如何在 phpunit 测试期间查看完整的警告消息?
- electron - Notification.onclick 属性在 electronjs 中不起作用
- javascript - how choice when useEffect is executed in React
- python - 加载多个数据集并在 python 中绘制它们的聪明方法?
- python - 从用户中删除角色,然后将它们添加回 Discord.py(使用 Repl.it)
- javascript - 向本地 IP 地址发出 Ajax 请求会导致违反内容安全策略