Сохранение данных, полученных от cassandra, в памяти spark и сделать их доступными для других заданий сервера заданий spark в том же контексте.

Я использую сервер заданий spark и использую spark-sql для получения данных из таблицы cassandra следующим образом.

public Object runJob(JavaSparkContext jsc, Config config) {
  CassandraSQLContext sq = new CassandraSQLContext(JavaSparkContext.toSparkContext(jsc));
  sq.setKeyspace("rptavlview");
  DataFrame vadevent = sq.sql("SELECT username,plan,plate,ign,speed,datetime,odo,gd,seat,door,ac from rptavlview.vhistory ");
  vadevent.registerTempTable("history");
  sq.cacheTable("history");
  DataFrame vadevent1 = sq.sql("SELECT plate,ign,speed,datetime FROM history where username='"+params[0]+"' and plan='"+params[1]+"'");
  long count =  vadevent.rdd().count();
  }

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

Я использую dse5.0.4, поэтому версия spark 1.6.1.


person Krishna Kumari    schedule 27.03.2017    source источник


Ответы (1)


Вы можете разрешить искровым заданиям совместно использовать состояние других контекстов. Это ссылка содержит более подробную информацию.

person mando222    schedule 30.03.2017
comment
Я видел scala-версию SqlLoaderJob, в которой используется общий sqlcontext. Не могли бы вы предложить какой-нибудь пример Java для того же. Доступен ли он в новой версии Spark-2.1? - person Krishna Kumari; 03.04.2017