Фильтрует ли 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
а второй был, когда он вызвал фильтр для создания filteredRDD
, Есть ли способ заставить его кешировать результаты newAPIHadoopRDD
вызвать hBaseRDD, чтобы фильтр работал только с копией данных в памяти?
1 ответ
Решение
hbaseRDD.cache()
прежде чем считать сделаем свое дело.
Документы подробно описывают параметры: http://spark.apache.org/docs/1.2.0/programming-guide.html