如何从Spark DataFrame中选择稳定的行子集?

Kda*_*awg 5 scala apache-zeppelin spark-dataframe

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

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

这个DataFrame有超过1000万行,我想开始只使用一部分行,所以我使用limit:

val df_small = df.limit(1000)
Run Code Online (Sandbox Code Playgroud)

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

df_small.filter($"c1" LIKE "something").show()
Run Code Online (Sandbox Code Playgroud)

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

too*_*lik 6

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