如何从 Spark DataFrame 中选择稳定的行子集?
Posted
技术标签:
【中文标题】如何从 Spark DataFrame 中选择稳定的行子集?【英文标题】:How can I select a stable subset of rows from a Spark DataFrame? 【发布时间】:2018-01-19 15:37:25 【问题描述】:我已将文件加载到 Zeppelin 笔记本中的 DataFrame 中,如下所示:
val df = spark.read.format("com.databricks.spark.csv").load("some_file").toDF("c1", "c2", "c3")
这个 DataFrame 有超过 1000 万行,我想从行的一个子集开始工作,所以我使用了 limit:
val df_small = df.limit(1000)
但是,现在当我尝试根据其中一列的字符串值过滤 DataFrame 时,每次运行以下命令时都会得到 不同的结果:
df_small.filter($"c1" LIKE "something").show()
如何获取对于我运行的每个过滤器都保持稳定的 df 子集?
【问题讨论】:
您应该在对有限的数据帧应用操作之前对其进行持久化或缓存。 【参考方案1】:Spark 作为延迟加载工作,因此只有在语句 .show
上面的 2 个语句才会执行。您可以将df_small
写入文件并每次单独读取,或者执行df_small.cache()
【讨论】:
以上是关于如何从 Spark DataFrame 中选择稳定的行子集?的主要内容,如果未能解决你的问题,请参考以下文章