在Spark 2.0.0上,如果我有一个数据库,我经常使用表A与其他表连接,我应该坚持我的表A并以这种方式加入吗?或者我应该使用Spark SQL方法来指定加入A和B,A和C等的查询?
如果我想使用where where
多次查询表Z.SELECT * FROM Z where z_id = '1'
和
SELECT * FROM Z where z_id = '2'
我应该使用Spark SQL并明确地查询它,还是查询表并对表RDD进行操作?
答案 0 :(得分:0)
你可以做多件事。如果过滤器将被多次使用,请使用如下。
**df=sqlContext.sql('''select * from Z ''')
df.registerTempTable('Z_temp')
sqlContext.cacheTable('Z_temp')**
不带任何参数和缓存的Persit将数据保存/存储在内存中。
如果您使用表中的多个过滤器,请确保使用spark.sql.parquet.filter pushdown = True。