问题
你有外部metastore集群上配置和启用自动定量,但集群不是有效的自动定量。
导致
你将metastore jar复制到每一个执行者,当他们只需要在司机。
需要时间来初始化和运行jar每次新遗嘱执行人旋转起来。因此,比它应该添加更多的执行人需要更长的时间。
解决方案
你应该配置集群所以metastore罐子只是复制到司机。
选项1:使用一个init脚本复制metastore jar。
- 创建一个集群spark.sql.hive.metastore.jars设置为maven和spark.sql.hive.metastore.version你的metastore匹配版本。
- 启动集群和搜索司机为一条线,包括日志下载metastore罐子。
17/11/18 22:41:19信息IsolatedClientLoader:下载metastore jar <路径>
<路径>是驱动程序下载jar的位置节点的集群。 - 将jar文件复制到一个DBFS位置。
% sh cp - r <路径> / dbfs / ExternalMetaStore_jar_location
- 创建初始化脚本。
% python dbutils.fs.put (“dbfs: /砖/ < init-script-folder > / external-metastore-jars-to-driver。sh”、“”“# !/bin/bash如果[[$ DB_IS_DRIVER = " TRUE "]];然后mkdir - p /砖/ metastorejars / cp - r / dbfs ExternalMetaStore_jar_location / * /砖/ metastorejars / fi”“”,真的)
- 安装您刚刚创建的init脚本作为一个集群级init脚本(AWS|Azure|GCP)。
- 你需要的完整路径的位置脚本(dbfs: /砖/ < init-script-folder > / external-metastore-jars-to-driver.sh)。
- 重新启动集群。
选项2:使用Apache配置设置火花metastore jar复制到司机。
- 输入以下设置到你的火花配置(AWS|Azure|GCP):
spark.hadoop.javax.jdo.option。ConnectionURL jdbc: mysql: / / < mysql-host >: < mysql-port > / < metastore-db > spark.hadoop.javax.jdo.option。ConnectionDriverName <司机> spark.hadoop.javax.jdo.option。ConnectionUserName < mysql-username > spark.hadoop.javax.jdo.option。ConnectionPassword < mysql-password > spark.sql.hive.metastore。< hive-version > spark.sql.hive.metastore版本。jar / dbfs / metastore /罐/ *
- 源路径可以是外部挂载存储或DBFS。
- metastore配置在工作区中可以应用在全球范围内通过使用集群政策(AWS|Azure|GCP)。
审查文档与砖容器服务定制容器。