我编写了一个用于在Hive上运行SparkSQL的java代码。我试图将我的hive Metastore的路径提供给程序,但它根本不起作用。
见程序:
String warehouseLocation = "file:${system:user.dir}/spark-warehouse";
SparkSession spark = SparkSession
.builder()
.appName("Java Spark Hive Example")
.master("local[*]")
.config("spark.sql.warehouse.dir", warehouseLocation)
.enableHiveSupport()
.getOrCreate();
try
{
spark.sql("select count(*) from health1 ").show();
}
catch (Exception AnalysisException)
{
System.out.print("\nTable is not found\n");
}
我的metastore_db位于:/home/aims/hadoop/hadoop/hive/var/lib/metastore_db
我希望我尝试使用SparkSQL做的任何操作都应该反映在带有HIVE的Hadoop上。为此,我需要将metastore_db连接到我的Maven程序
我怎么能这样做?有没有办法可以使用config在程序中提供hive-site.xml
路径?
答案 0 :(得分:2)
您可以像下面那样运行Hive Metastore Server。
hive --service metastore &
现在,您可以通过设置config hive.metastore.uris
SparkSession spark = SparkSession
.builder()
.appName("Java Spark Hive Example")
.master("local[*]")
.config("hive.metastore.uris", "thrift://localhost:9083")
.enableHiveSupport()
.getOrCreate();
spark.sql("select count(*) from health1").show();
答案 1 :(得分:0)
将core-site.xml和hive-site.xml放在resources文件夹中,Spark会自动查找这些文件并初始化Hive的Metastore。还要将日志记录级别设置为INFO以查看有关Hive Metastore的信息。