使用Spark SQL查询数据的最佳做法是什么?
问题描述:
在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?
答
你可以做很多事情。如果过滤器将被多次使用,请使用如下。
**df=sqlContext.sql('''select * from Z ''')
df.registerTempTable('Z_temp')
sqlContext.cacheTable('Z_temp')**
用任何参数和缓存保存/存储数据到内存中。
确保您使用spark.sql.parquet.filter pushdown = True如果您使用表中的多个过滤器。
如果您不止一次使用rdd或数据框,我会说使用persist()总是很好。你应该先试试才行! – GwydionFR