2017-07-13 10 views
0

を更新しませんでした、ここでは最も簡単なコードです:Spark2データセット<Row> saveAsTableは私が火花2.1.0を使用していHIVEメタデータ

public static void main(String[] args) { 
    SparkSession spark = SparkSession.builder().enableHiveSupport().appName("Spark Test").getOrCreate(); 
    List<Employee> employees = ImmutableList.of(new Employee("a"), new Employee("b"), new Employee("c")); 
    Dataset<Row> df = spark.createDataFrame(employees, Employee.class); 
    df.write().saveAsTable("Employee_" + new Random().nextInt(100)); 
} 

私は火花提出CLIによってそれを提出する:

spark-submit --class test.spark.Driver --master yarn --deploy-mode cluster 

/usr/hive/warehouse/Employee_23、私はspark.sql("select * from Employee_23")を実行すると、エラーが発生しました:私は、データはHDFSに永続化されている見ることができます

Table or view not found 

ハイブのメタストアデータベースには、TBLSテーブルにレコードがありません。

しかし、同様のコードを実行するためにspark-shellを開いても動作します。

これは​​のために起こっていますか?助けてください。

+0

コードで既存のHiveメタストア接続を使用していますか? –

+0

はい、spark/confフォルダにhive-site.xmlがあります。接続設定は正しいです。 – Furyegg

+0

私はちょうど異なる展開モードを使用してみました:クライアント(以前はクラスタです)、ハイブメタストアに登録されたテーブル。ドライバーが糸で走っているときに、別のハイブのメタストアに接続されていることを意味するクラスタを使用しているとき? – Furyegg

答えて

0

なぜ私のhadoopとsparkが異なるドッカーコンテナに配備されているのか、hive-site.xmlをsparkコンテナに入れたので、spark-shellを実行すると動作します。

depolyモードが "cluster"の場合、ドライバは糸で動作しているため、このドライバはsparkコンテナ内のhive-site.xmlを見ることができません。解決策はhive-site.xmlをhadoop confフォルダに入れます/ hadoop)。

関連する問題