2016-09-20 94 views
0

在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或数据框,我会说使用persist()总是很好。你应该先试试才行! – GwydionFR

回答

0

你可以做很多事情。如果过滤器将被多次使用,请使用如下。

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

用任何参数和缓存保存/存储数据到内存中。

确保您使用spark.sql.parquet.filter pushdown = True如果您使用表中的多个过滤器。

相关问题