1

変換されたデータから SQL テーブルを作成する Spark コンポーネントがあります。<database_name>.db フォルダーの下の spark-warehouse にデータが正常に保存されます。コンポーネントは、やみくもに上書きしないように、既存のテーブルからの読み取りも試みます。読み取り中、spark はデフォルト以外のデータベースを見つけることができません。

sparkバージョン: 2.4

val spark: SparkSession = SparkSession.builder().master("local[*]").config("spark.debug.maxToStringFields", 100).config("spark.sql.warehouse.dir", "D:/Demo/spark-warehouse/").getOrCreate()

def saveInitialTable(df:DataFrame) {
  df.createOrReplaceTempView(Constants.tempTable)
  spark.sql("create database " + databaseName)
  spark.sql(
    s""" create table if not exists $databaseName.$tableName
      |using parquet partitioned by (${Constants.partitions.mkString(",")})
      |as select * from ${Constants.tempTable}""".stripMargin)
}

 def deduplication(dataFrame: DataFrame): DataFrame ={

  if(Try(spark.sql("show tables from " + databaseName)).isFailure){
    //something 
   }
 }

saveInitialTable 関数が正常に実行された後。2 回目の実行では、重複排除機能はまだ <database_name> を取得できません。

私はハイブをどこでも明示的に使用していません.DataFrameとSQL APIをスパークさせるだけです.

spark-warehouse と同じディレクトリで repl を実行すると、デフォルトのデータベースも表示されます。

scala> spark.sql("show databases").show()
2021-10-07 18:45:57 WARN  ObjectStore:6666 - Version information not found in metastore. 
hive.metastore.schema.verification is not enabled so recording the schema version 1.2.0
2021-10-07 18:45:57 WARN  ObjectStore:568 - Failed to get database default, returning 
NoSuchObjectException
+------------+
|databaseName|
+------------+
|     default|
+------------+
4

0 に答える 0