2017-04-13 6 views
0

シンプルなSpark Job(Javaで書かれています)を使ってHiveテーブルをクエリしようとしています。Spark SQLContextがハイブテーブルを見つけられません

SparkConf conf = new SparkConf().setMaster("local[*]").setAppName("MyJob"); 

JavaSparkContext sc = new JavaSparkContext(conf); 
SQLContext sqlContext = new org.apache.spark.sql.SQLContext(sc); 

DataFrame df = sqlContext.table("scf"); 

が、私は火花提出てjarファイルを送信すると、私は次のエラーがあります:私はテーブルがが存在すると確信している

Exception in thread "main" org.apache.spark.sql.catalyst.analysis.NoSuchTableException 
    at org.apache.spark.sql.catalyst.analysis.SimpleCatalog.lookupRelation(Catalog.scala:108) 
    at org.apache.spark.sql.SQLContext.table(SQLContext.scala:831) 
    at org.apache.spark.sql.SQLContext.table(SQLContext.scala:827) 
    at MyJob.myJob(MyJob.java:30) 
    at MyJob.main(MyJob.java:65) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:729) 
    at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:181) 
    at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:206) 
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:121) 
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala) 

を。もし私がsqlContext.table( "scf")を実行すると、がspark-shellにあると私に結果が得られます。

何が問題なのですか?

ありがとうございます!

+1

を火花提出し、私は推測します。 –

答えて

0

SQLContextはHiveをサポートしていません。 HiveContextまたはSparkSessionをHive対応のサポートで使用する必要があります。

import org.apache.spark.sql.hive.HiveContext 

val sqlContext = new HiveContext(sc) 
1

私は同様の問題がありました。スパーク・サブミットは、ハイブ環境を正しく見つけることができませんでした。私は自分のspark-submitの "files"パラメータにhive-site.xmlを追加しました。

ex。 あなたは、テーブル名 "DCF" を登録する必要が --files --class糸 --deployモードのクラスタ --master ...

関連する問題