【问题标题】:Azure data bricks external hive metastore creationAzure Databricks 外部配置单元元存储创建
【发布时间】:2021-11-24 09:49:20
【问题描述】:

我正在为 azure sql 在 azure databricks 中创建元存储。我已使用 7.3 运行时为集群配置提供以下命令。如文档中所述 https://docs.microsoft.com/en-us/azure/databricks/data/metastores/external-hive-metastore#spark-options

spark.hadoop.javax.jdo.option.ConnectionDriverName com.microsoft.sqlserver.jdbc.SQLServerDriver
spark.hadoop.javax.jdo.option.ConnectionURL jdbc:sqlserver://xxx.database.windows.net:1433;database=hivemetastore
spark.hadoop.javax.jdo.option.ConnectionUserName xxxx
datanucleus.fixedDatastore false
spark.hadoop.javax.jdo.option.ConnectionPassword xxxx
datanucleus.autoCreateSchema true
spark.sql.hive.metastore.jars builtin
spark.sql.hive.metastore.version 1.2.1
hive.metastore.schema.verification.record.version false 
hive.metastore.schema.verification false

--

之后,当我尝试创建数据库元存储时,我将自动取消。 我在数据块中的数据部分出现错误,我也无法复制。

集群设置

命令

【问题讨论】:

  • 你需要检查驱动日志,还要检查防火墙
  • 你好 Alex sql server 的防火墙 我已经添加了我的 ip。有什么我可以检查的。
  • 你需要添加集群中所有节点的IP。请发布驱动程序日志
  • HiveConf:找到配置文件文件:/databricks/hive/conf/hive-site.xml SessionState:创建HDFS目录:/tmp/hive/root/86-43-7590b1 SessionState:创建本地目录:/local_disk0/tmp/root/89a4-4243-8633-7747450590b1 SessionState:创建的HDFS目录:/tmp/hive/root/86b-4243-863390b1/_tmp_space.db HiveClientImpl:Hive客户端的仓库位置(版本2.3.7)是 /user/hive/warehouse Hive:Databricks:在 init 期间调用 reloadFunctions 调用。 HiveConf:名称为 hive.stats.jdbc.timeout 的 HiveConf 不存在 HiveConf:名称为 hive.stats.retries.wait 的 HiveConf 不存在
  • 您好,我可以连接到 sql server。我可以看到一些表,如 dbo.database_params、dbo.dbs、dbo.roles 以及更多的创建。但是当我尝试在 csv 的数据块中创建一个简单的表时。我收到一个错误 org.apache.hadoop.hive.ql.metadata.HiveException: MetaException(message:An exception was throwed while adding/validating class(es) : The size (32672) given to the column 'PARAM_VALUE' 超过任何数据类型允许的最大值 (8000)。-

标签: apache-spark hadoop azure-sql-database azure-databricks hive-metastore


【解决方案1】:

--更新

根据cmets中更新的错误信息

允许的最大长度为 8000,当在声明 VARCHAR 列时指定长度。

解决方法:对列“PARAM_VALUE”使用 VARCHAR(8000) 或 VARCHAR(MAX)。我更喜欢使用 nvarchar(max),因为 nvarchar (MAX) 最多可以存储 2GB 的字符。


显然找到了一个已知问题的官方记录!

Error in CREATE TABLE with external Hive metastore

这是 MySQL 8.0 的一个已知问题,默认字符集为 utfmb4.

尝试运行这个来确认

SELECT default_character_set_name FROM information_schema.SCHEMATA S WHERE schema_name = "<database-name>"

如果是,请参考Solution

您需要更新或重新创建数据库并将字符集设置为 拉丁语1.

你有两个选择:

  1. 在每个 CREATE TABLE 语句的末尾使用 DEFAULT CHARSET=latin1 在 Hive 数据库中手动运行 create 语句。

  2. 设置数据库和用户帐户。并创建数据库并运行alter database hive character set latin1;在启动元存储之前。 (此命令设置数据库的默认 CHARSET。它在元存储创建表时应用。)

【讨论】:

  • 没有,直到 jdbc:sqlserver://externalhive.database.windows.net:1433;database=xyz
  • 你能按原样尝试门户中的完整字符串
  • 已经尝试过,但没有成功
  • 我已将 hive 版本 1.2.1 更改为 Hive 2.3.7(Databricks Runtime 7.0 及更高版本):& 已经将 spark.sql.hive.metastore.jars 设置为 builtin。
  • 我已经在库下面添加了我仍然想关注那些很难理解并且只有一篇文章的罐子。 spark.sql.hive.metastore.jars builtin hive.metastore.schema.verification false datanucleus.schema.autoCreateTables true spark.sql.hive.metastore.version 2.3.7
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-21
  • 1970-01-01
  • 1970-01-01
  • 2020-01-07
  • 1970-01-01
  • 2017-10-10
相关资源
最近更新 更多