Попытка получить данные из sharedRDD контекста apache ignite

Я пытаюсь интегрировать apache ignite с помощью Spark, и я новичок в apache ignite. Я хочу сохранить данные в распределенном кеше и получить их.

Я создал фрейм данных, загрузив файл в Spark и попытавшись сохранить его в кеше с помощью sharedRDD.savePairs (ключ, значение) Apache Ignite. Ключ имеет строковый тип, а значение - фрейм данных искры. Теперь я хочу получить сохраненные данные и распечатать их. Я даже не уверен, действительно ли он сохраняется с типом dataframe.


person srujana    schedule 17.12.2015    source источник


Ответы (1)


Чтобы получить данные из RDD, вы можете использовать по крайней мере один из следующих способов:

1) подход sharedRDD.filter (...). Collect (). В качестве примера приведенный ниже код получает все значения, содержащие слово «река», из кеша с именем «testCache».

val cache = igniteContext.fromCache("testCache")
val result = cache.filter(_._2.contains("river")).collect()

Считывание значений с использованием метода «фильтра»

2) метод sharedRDD.sql (...).

val cacheRdd = igniteContext.fromCache("personsCache")
val result = cacheRdd.sql(
  "select name from Person where id > ? and id < ?", 10, 100)

Получение значений с помощью SQL

person dmagda    schedule 17.12.2015
comment
Пожалуйста, добавьте ключевое сообщение ответа в свой пост. Внешние ссылки могут стать недействительными. - person SaeX; 17.12.2015
comment
Спасибо, что указали на это. Дополнил свой ответ примерами. - person dmagda; 18.12.2015
comment
Это само получение данных. Но у пользователя возник вопрос о сохранении Dataframe в кеше, возможно ли это? Можете ли вы сами кэшировать фрейм данных? или можно только данные кешировать.? если можно, то как его получить.? - person Srini; 18.12.2015
comment
@Srini можно сохранить DataFrame в кеше, но я не вижу в этом смысла. IgniteRDD - это общий RDD ключ-значение, который хранит кортежи "ключ-значение" единообразно в кластере. Когда DataFrame сохраняется как значение, он будет помещен в один раздел одного узла, как и любое другое значение (int, String и т. Д.). Поэтому в случае, если IgniteRDD, вы должны хранить фактические значения, а не фреймы данных, если вы хотите извлечь из этого выгоду. Если вы все еще хотите сохранить DataFrame с помощью IgniteRDD, вы можете использовать метод Spark rdd.collect (), чтобы вернуть его. - person dmagda; 20.12.2015