2017-02-18 12 views
0

私はHiveでSparkSQLを実行するためのJavaコードを書いています。私はプログラムに私のハイブのmetastoreの道を与えようとしていますが、まったく働いていません。
は、プログラムを参照してください:Javaを使ってApache SparkプログラムでHiveのメタストアを指定する方法は?

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

メタストアサーバーを実行すると、コンソールで詳細が表示されます。 "INFO metastore.HiveMetaStoreのようなもの:ポート9090で新しいメタサーバを開始しました" – abaghel

+0

ありがとうございました。あなたは私にとって大きな問題をたくさん解決しました。: –

0

core-site.xmlとhive-site.xmlをresourcesフォルダに配置すると、Sparkはこれらのファイルを自動的に検索し、Hive用のメタストアを初期化します。また、Hiveメタストアに関する情報を表示するには、ログレベルをINFOに設定します。

+0

設定を設定することによって、スパークを使用してハイブに接続することができますか?私は実際にIDEを使用しています。 n =私に –

関連する問題