如何 select 来自 Spark DataFrame 的稳定行子集?

How can I select a stable subset of rows from a Spark DataFrame?

我已经将文件加载到 Zeppelin 笔记本中的 DataFrame 中,如下所示:

val df = spark.read.format("com.databricks.spark.csv").load("some_file").toDF("c1", "c2", "c3")

这个 DataFrame 有超过 1000 万行,我想开始只处理这些行的一个子集,所以我使用限制:

val df_small = df.limit(1000)

但是,现在当我尝试根据其中一列的字符串值过滤 DataFrame 时,我每次 运行 都会得到 不同的结果

df_small.filter($"c1" LIKE "something").show()

如何获取 df 的一个子集,使每个过滤器都保持稳定 运行?

Spark 以延迟加载的方式工作,因此只有在语句 .show 上面的 2 个语句才会执行。您可以将 df_small 写入文件并每次单独读取或执行 df_small.cache()