を更新しませんでした、ここでは最も簡単なコードです: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
を開いても動作します。
これはのために起こっていますか?助けてください。
コードで既存のHiveメタストア接続を使用していますか? –
はい、spark/confフォルダにhive-site.xmlがあります。接続設定は正しいです。 – Furyegg
私はちょうど異なる展開モードを使用してみました:クライアント(以前はクラスタです)、ハイブメタストアに登録されたテーブル。ドライバーが糸で走っているときに、別のハイブのメタストアに接続されていることを意味するクラスタを使用しているとき? – Furyegg