2016-09-20 2 views
0

On Spark 2.0.0, если бы у меня была база данных, где я постоянно использую таблицу A для объединения с другими таблицами, должен ли я сохранять свою таблицу A и присоединяться к этому пути? Или я должен использовать подход Spark SQL для задания запроса присоединения A и B, A и C и т. Д.?Какова наилучшая практика для запроса данных с помощью Spark SQL?

И если я хочу, чтобы запрос к таблице Z несколько раз, используя, где условный т.е.

SELECT * FROM Z where z_id = '1' 

и

SELECT * FROM Z where z_id = '2' 

Должен ли я использовать Спарк SQL и явно это запрос для него, или запрос для таблицы и действия на столе RDD?

+0

Если вы используете rdd или dataframe более одного раза, я бы сказал, что всегда полезно использовать persist(). Вы должны попробовать, прежде чем спрашивать! – GwydionFR

ответ

0

Вы можете сделать несколько вещей. Если фильтр будет использоваться несколько раз, используйте, как показано ниже.

**df=sqlContext.sql('''select * from Z ''') 
df.registerTempTable('Z_temp') 
sqlContext.cacheTable('Z_temp')** 

Persit без каких-либо параметров и кеша сохраняет/сохраняет данные в памяти.

Убедитесь, что вы используете spark.sql.parquet.filter pushdown = True, если вы используете несколько фильтров из таблицы.

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