2017-02-18 43 views
0

我已经编写了一个在Hive上运行SparkSQL的java代码。我试图给我的蜂房Metore道路上的程序,但它根本不工作。
查看程序:如何使用java在Apache Spark程序中指定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路径?

回答

2

您可以像下面那样运行Hive Metastore Server。

hive --service metastore & 

现在,你可以通过设置配置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(); 
+0

我可以知道你从哪里得出结论'“thrift:// localhost:9083”'?我不明白这一点。 –

+0

当您运行Metastore服务器时,您将在控制台中获得详细信息。类似于“INFO metastore.HiveMetaStore:在端口[9083]上启动新的metaserver” – abaghel

+0

谢谢..你为我解决了很多大问题... :) –

0

将您的core-site.xml和hive-site.xml放置在资源文件夹中,Spark将自动查找这些文件并为Hive初始化Metastore。还将日志记录级别设置为INFO以查看有关Hive Metastore的信息。

+0

我怎么可以使用Eclipse做连接使用星火蜂巢?我实际上使用IDE。请让n =我知道 –

相关问题