Можно ли удалить одно значение в общем кэше IgniteRDD? - PullRequest
1 голос
/ 22 января 2020

Можно ли удалить указанный элемент c из общего кэша Ignite (IgniteRDD)?

Например, как в следующем коде удалить один элемент (21, 21)?

val cacheRdd = igniteContext.fromCache("partitioned")

cacheRdd.savePairs(sparkContext.parallelize(1 to 10000, 10).map(i => (i, i)))

IgniteRDD предоставляет метод с именем clear(), который удаляет все содержимое из кэша. Есть ли что-то похожее для удаления указанного элемента c?

1 Ответ

3 голосов
/ 23 января 2020

Я знаю несколько способов сделать это:

1) Использование SQL команды удаления

val cacheRdd = igniteContext.fromCache("Person")

val result = cacheRdd.sql(
  "DELETE FROM PERSON WHERE ID=1")

2) Использование JCache API:

// Creates Ignite context with specific configuration and runs Ignite in the embedded mode.
JavaIgniteContext<Integer, Integer> igniteContext = new JavaIgniteContext<Integer, Integer>(
    sparkContext,"examples/config/spark/example-shared-rdd.xml", false);

IgniteCache<Long, Person> personIgniteCache = igniteContext.ignite().getOrCreateCache("Person");

personIgniteCache.remove(1L);

то же самое с scala:

val igniteContext = new IgniteContext(sparkContext, CONFIG, false)

igniteContext.ignite().getOrCreateCache("Person");

Вы также можете просто запустить узел Ignite в приложении драйвера.

BR, Андрей

...