2015-07-27 2 views
0

Привет, я новичок в Apache Spark, и я обращаюсь к таблицам улей с использованием apache spark sql в java.Персистская опция в Apache Spark

И это мой код

SparkConf sparkConf = new 
SparkConf().setAppName("Hive").setMaster("local"); 
    JavaSparkContext ctx = new JavaSparkContext(sparkConf); 
    HiveContext sqlContext = new 
org.apache.spark.sql.hive.HiveContext(ctx.sc()); 
    org.apache.spark.sql.Row[] results = sqlContext.sql("Select * from 
Tablename where Column='Value'").collect(); 
    org.apache.spark.sql.Row[] results = sqlContext.sql("Select * from 
Tablename where Column='Value1'").collect(); 

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

+0

Если запросы не были связаны друг с другом, то имеет смысл, что два раза в хранилище улей запрашивается. Это может помочь, если вы публикуете свою программу, содержащую запросы. –

+0

Спасибо за ур ответ ... Другой запрос - это ничего, кроме запроса одной таблицы с другим значением того же столбца – wazza

ответ

1

Это может помочь вызвать sqlContext.cacheTable("Tablename") перед выполнением двух запросов.

Согласно документам, он делает то, что вы ищете.

Кэширует указанную таблицу в памяти.

+0

Большое спасибо. Также у меня есть еще один вопрос по этому поводу. Я использую искру в java здесь, поэтому, когда я запускаю это в первый раз, он кэширует таблицу, это, вероятно, занимает несколько минут, чтобы получить результат, но когда я снова запустил это снова, это будет быстрее, чем раньше? – wazza

+0

Кэширование и, следовательно, сетевой ввод-вывод будут выполняться каждый раз, когда вы запускаете свою программу. Преимущество кеширования заключается в том, что вы можете повторно использовать промежуточные результаты в рамках одной и той же программы. Но то, что может ускорить вашу программу, - это разминка JVM кластера Spark. –

+0

Также у меня есть еще одно сомнение ... Я использую Spark sql в веб-сервисах, в которых я передаю разные значения столбцов для вышеуказанных запросов и как использовать один и тот же контекст hive для каждого запроса. – wazza