java - Spark过滤会重新加载数据吗?

标签 java groovy apache-spark

这是我非常简单的 Spark 工作的主体...

def hBaseRDD = sc.newAPIHadoopRDD(config, TableInputFormat.class, ImmutableBytesWritable.class, Result.class)
println "${hBaseRDD.count()} records counted"
def filteredRDD = hBaseRDD.filter({ scala.Tuple2 result ->
    def val = result._2.getValue(family, qualifier)
    val ? new String(val) == 'twitter' : false
} as Function<Result, Boolean>)
println "${filteredRDD.count()} counted from twitter."
println "Done!"

我在 Spark-Submit 输出中注意到,它似乎去了 HBase 两次。第一次是在 hBaseRDD 上调用 count 时,第二次是在调用 filter 来创建 filteredRDD 时。有没有办法让它在 hBaseRDD 中缓存 newAPIHadoopRDD 调用的结果,以便过滤器仅在内存中的数据副本上工作?

最佳答案

在计数之前

hbaseRDD.cache() 就可以了。

文档详细介绍了这些选项:http://spark.apache.org/docs/1.2.0/programming-guide.html#rdd-persistence

关于java - Spark过滤会重新加载数据吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28972195/

相关文章:

java - Spring Boot 2 : Basic Http Auth causes unprotected endpoints to respond with 401 "Unauthorized" if Authorization header is attached

java - 如何在 Java 中处理来自 Google Sheets API v4 的 JSON 字符串

java - persistence.xml 中的 DRY

grails - 在Grails中排序列表或getAll

jenkins - 让 Jenkins 建立失败

java - Big-O 表征问题 - java

loops - 如何在 Groovy 的 eachWithIndex 方法中指定索引的起始值?

hadoop - 即使以管理员身份运行,在 Windows 上运行 Spark 错误 5(拒绝访问)

apache-spark - Hadoop 文件格式

apache-spark - 从 DataFrame 列中的列表中删除空字符串