嗨,我是Apache Spark的新手,我正在java中使用Apache Spark sql查询hive表。
这是我的代码 SparkConf sparkConf = new
SparkConf().setAppName("Hive").setMaster("local");
JavaSparkContext ctx = new JavaSparkContext(sparkConf);
HiveContext sqlContext = new
org.apache.spark.sql.hive.HiveContext(ctx.sc());
org.apache.spark.sql.Row[] results = sqlContext.sql("Select * from
Tablename where Column='Value'").collect();
org.apache.spark.sql.Row[] results = sqlContext.sql("Select * from
Tablename where Column='Value1'").collect();
我还尝试在同一应用程序中运行两个不同的查询,我看到它每次都与hive元存储建立连接。如何解决这个问题,并告诉我如何有效地使用持久选项
在执行这两个查询之前调用sqlContext.cacheTable("Tablename")
可能会有帮助。
根据文档,它做你正在寻找的。
在内存中缓存指定的表。