Внешнее хранилище метаданных улья Databricks с использованием мета-исключения БД Azure SQL (сообщение: информация о версии не найдена в хранилище метаданных).

Я пытаюсь настроить внешнее хранилище метаданных улья для Databricks, используя следующий сценарий инициализации:

dbutils.fs.put(
"/databricks/scripts/external-metastore.sh",
"""#!/bin/sh
  |# Loads environment variables to determine the correct JDBC driver to use.
  |source /etc/environment
  |# Quoting the label (i.e. EOF) with single quotes to disable variable interpolation.
  |cat << 'EOF' > /databricks/driver/conf/00-custom-spark.conf
  |[driver] {
  |    # Hive specific configuration options.
  |    # spark.hadoop prefix is added to make sure these Hive specific options will propagate to the metastore client.
  |    # JDBC connect string for a JDBC metastore
  |    "spark.hadoop.javax.jdo.option.ConnectionURL" = "jdbc:sqlserver://tst.database.windows.net:1433;database=db;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net"
  |
  |    # Username to use against metastore database
  |    "spark.hadoop.javax.jdo.option.ConnectionUserName" = "admin"
  |
  |    # Password to use against metastore database
  |    "spark.hadoop.javax.jdo.option.ConnectionPassword" = "password"
  |
  |    # Driver class name for a JDBC metastore
  |    "spark.hadoop.javax.jdo.option.ConnectionDriverName" = "com.microsoft.sqlserver.jdbc.SQLServerDriver"
  |
  |    # Spark specific configuration options
  |    "spark.sql.hive.metastore.version" = "2.3.7"
  |    # Skip this one if <hive-version> is 0.13.x.
  |    "spark.sql.hive.metastore.jars" = "builtin"
  |}
  |EOF
  |""".stripMargin,
overwrite = true)

Я запускаю этот код Scala

spark.conf.get("spark.sql.hive.metastore.version")

который выводит:

res0: String = 2.3.7

Однако когда я пытаюсь бежать:

spark.table("diamonds").withColumnRenamed("table", "table_number")
 .write
 .jdbc(jdbcUrl, "diamonds", connectionProperties)

Я получаю такую ​​ошибку:

AnalysisException: org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient;
Caused by: HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
Caused by: RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
Caused by: InvocationTargetException: 
Caused by: MetaException: Version information not found in metastore. 

person waterwheel waterwheel    schedule 18.02.2021    source источник


Ответы (1)


Просто из документа Внешнее хранилище метаданных Apache Hive:

  • SQL Server не работает в качестве базовой базы данных хранилища метаданных для Hive 2.0 и более поздних версий.

Пожалуйста, попробуйте сменить версию. И вот еще один вопрос, на который вы можете ответить: внешнее хранилище метастазов Hive Hive Azure Databricks

HTH.

person Leon Yue    schedule 02.03.2021
comment
SQL Server не работает в качестве базовой базы данных хранилища метаданных для Hive 2.0 и более поздних версий; однако база данных SQL Azure работает и используется docs.microsoft.com/en-us/azure/databricks/data/metastores/ - person waterwheel waterwheel; 03.03.2021