2016-03-21 1 views
0

Я вставляю в cassandra с помощью Spark.Как узнать количество строк Вставлено с помощью Spark In cassandra

CassandraJavaUtil.javaFunctions(newRDD) 
      .writerBuilder("dmp", "dmp_user_user_profile_spark1", mapToRow(UserSetGet.class)).saveToCassandra(); 
      logger.info("DataSaved"); 

Мой вопрос в том, что RDD имеет 5 тыс. Строк, а при вставке в Кассандру по какой-то причине работа терпит неудачу.

Будет ли откатить для строк, которые были вставлены из 5k

и если нет, то как я буду знать, сколько строк были фактически вставлено, так что я могу начать свою работу снова с отказавшим подряда.

ответ

1

Простой ответ, нет, автоматический откат не будет.

Независимо от того, какая искра данных была спасена в кассандре, она будет сохранена в кассандре.

И нет, нет простого способа узнать, до какого набора данных искровое задание могло успешно сэкономить. Infact, единственный способ, о котором я могу думать, - прочитать данные из cassandra, присоединиться и отфильтровать из вашего набора результатов на основе ключа.

Чтобы быть честным, это кажется довольно и накладным, если данные огромны, чтобы объединить их. В большинстве случаев вы можете просто повторно запустить задание на искру, а затем снова сохранить таблицу cassandra. Так как в cassandra обновление и вставки работают одинаково. Это не проблема.

Только место это может быть проблематично, если вы имеете дело с таблицами счетчиков.

Обновление: Для этого конкретного сценария вы можете разделить свой rdd на партии вашего размера, а затем попытаться сохранить их. Таким образом, если вы потерпите неудачу на одном rdd, вы узнаете, какой rdd не удалось. Если это не так, вы должны быть уверены в следующем.

+0

Hi Abhishek благодарит за ответ, но проблема здесь в таблице есть столбец app_count, который увеличивается с каждым обновлением. Поэтому мне нужно знать, какие строки были обновлены, когда произошел сбой. –

+0

Обновлен ответ. Или, возможно, вы должны ввести дополнительный столбец для отслеживания такого рода вещей в cassandra, может быть Date или даже целочисленным столбцом. –

+0

Привет, Abhishek, я делал то же самое, то есть разделял RDD на фиксированные размеры, но мой вопрос состоял в том, не получится ли он в середине, в то время как вставка, т.е. из 5000 только 2000, вставлена, а затем она не удалась. , Моя таблица огромна, поэтому я пытаюсь ввести дополнительный столбец (например, AutoIncrement int), используя zipWithIndex. В любом случае спасибо за ответ –

 Смежные вопросы

  • Нет связанных вопросов^_^