【发布时间】:2016-02-03 12:18:15
【问题描述】:
我想通过减少数据库周期和内存来有效地使用 spark DataFrame。
这里我提供了示例代码。 (不是完整的实现)
Map<String, String> options = new HashMap<>();
options.put("dbtable", ("select * from TestTable");
//Create the dataframe
DataFrame df1 = sqlContext.read().format("jdbc").options(options).load();
df1.registerTempTable("TestDBFrame");
//Query1
DataFrame df2 =sqlContext.sql("SELECT name FROM TestDBFrame WHERE age >= 10");
//Query2
DataFrame df3 =sqlContext.sql("SELECT name FROM TestDBFrame WHERE age >= 50");
//df2 operation
df2.count
//df3 operation
df3.count
在运行 query1 和 query2 时,对 DB 有多少次命中?是否两次命中数据库?
当我们根据最初创建的数据帧访问 df2 和 df3 数据帧的计数时,它是再执行两次 DB 还是只是从内存中加载?
由于我需要优化数据库周期和内存,希望对此有更好的解释。
【问题讨论】:
标签: apache-spark apache-spark-sql