我正在尝试通过 java 程序访问 Hive 表,但看起来我的程序在默认数据库中没有看到任何表。但是,我可以看到相同的表并通过 spark-shell 查询它们。我已经在 spark conf 目录中复制了 hive-site.xml。唯一的区别 - spark-shell 运行的是 spark 1.6.0 版,而我的 java 程序运行的是 Spark 2.1.0
package spark_210_test;
import java.util.List;
import org.apache.spark.SparkConf;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SparkSession;
public class SparkTest {
private static SparkConf sparkConf;
private static SparkSession sparkSession;
public static void main(String[] args) {
String warehouseLocation = "hdfs://quickstart.cloudera/user/hive/warehouse/";
sparkConf = new SparkConf().setAppName("Hive Test").setMaster("local[*]")
.set("spark.sql.warehouse.dir", warehouseLocation);
sparkSession = SparkSession
.builder()
.config(sparkConf)
.enableHiveSupport()
.getOrCreate();
Dataset<Row> df0 = sparkSession.sql("show tables");
List<Row> currentTablesList = df0.collectAsList();
if (currentTablesList.size() …Run Code Online (Sandbox Code Playgroud)