Фильтрует ли Spark перезагрузку данных?

1

Это основная часть моей действительно простой работы 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!"

Я заметил в искровом представлении вывод, что он, похоже, дважды попадает в HBase. В первый раз, когда он называл count на hBaseRDD а второй - когда он вызывал фильтр для создания filteredRDD. Есть ли способ заставить его кэшировать результаты вызова newAPIHadoopRDD в hBaseRDD, чтобы фильтр работал только с копией данных в памяти?

Теги:
groovy
apache-spark

1 ответ

1
Лучший ответ

hbaseRDD.cache() перед подсчетом сделает трюк.

Документы подробно описывают параметры: http://spark.apache.org/docs/1.2.0/programming-guide.html#rdd-persistence

Ещё вопросы

Сообщество Overcoder
Наверх
Меню