azure - 从我们的集群中访问来自其他 Azure HDinsight 集群的 Hive 表
问题描述
我们的设置中有一个 HDInsight 集群,我们将数据存储在 Hive 表中(数据位于 ADLS 中的外部表和外部元存储中的元数据,并使用 Azure 集群中的 Hive 服务进行访问)。与其他 Azure 集群(不一定在同一个订阅中)共享此数据的最佳方式是什么?
Azure 有这种服务主体的概念,因此我们需要设置 acls 以允许其他集群的服务主体访问与我们共享的 hive 表对应的 ADLS 文件夹。另外,我们集群的hiveserver2 url如何被其他Azure实例用作jdbc连接,以便他们可以查询数据?我们应该为他们提供什么集群登录,以便能够使用我们的 HiveServer2 来查询 Hive 表中的数据?
我知道正确的方法是使用 Azure ESP 服务,但这显然是一个代价高昂的选择。
仅向他们提供对 ADLS 文件夹的访问权限似乎也不正确,因为元数据随后不用于访问数据......
解决方案
所描述的场景可以通过共享元存储来实现。由于您已经有一个外部元存储,因此您也可以将它用于其他集群。前提是访问此 Metastore 的集群的 Hive-Metastore 版本相同。
您还可以更改集群创建模板中的核心站点设置,以具有相同的文件系统结构(如果您不使用完全限定的存储帐户名称):
"core-site": {
"fs.defaultFS": "adl://home",
"dfs.adls.home.hostname": "<your-datalake-store>.azuredatalakestore.net",
"dfs.adls.home.mountpoint": "/<your-adl-home-mountpoint-dir>",...
},
在 Spark 中,这将通过以下方式完成:
spark.conf.set("dfs.adls.home.hostname", "<your-datalake-store>.azuredatalakestore.net")
spark.conf.set("dfs.adls.home.mountpoint", "/<your-adl-home-mountpoint-dir>")
另请参阅以下博客文章。
还要检查以下答案如何从 pyspark(也从“外部”)访问 HDInsight。
推荐阅读
- python-3.x - Pycharm 2017.1.2 在包安装面板下显示“Nothing to show”
- mysql - 带有外键的 MariaDB 表创建错误
- policy - Azure API 管理限制多个调用方 IP 地址
- javascript - JavaScript 将函数参数与现有变量相结合
- c# - 为什么 EF 不能按另一个集合的顺序对项目进行排序以及如何解决?
- jquery - 如何获取for循环/javascript生成的textarea的值
- php - 条纹网络钩子
- windows - git - 强制 lf 行结尾不捕获二进制文件
- javascript - 安装 grunt 插件时如何修复需要 grunt@~0.4.0 的对等方?
- ios - 弹出包含 ARKit 场景视图的视图控制器后,应用程序停止响应触摸