【问题标题】:How can I select a stable subset of rows from a Spark DataFrame?如何从 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 子集?

【问题讨论】:

  • 您应该在对有限的数据帧应用操作之前对其进行持久化或缓存。

标签: scala spark-dataframe apache-zeppelin


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2019-01-12
    • 2019-07-27
    • 1970-01-01
    • 2016-07-28
    • 2018-01-14
    • 2020-04-22
    • 2011-05-20
    • 1970-01-01
    • 2019-02-20
    相关资源
    最近更新 更多