AWS EMR Presto 未使用 AWS Glue 找到正确的 Hive 模式

AWS EMR Presto not finding correct Hive schemas using AWS Glue

所以我无法通过 AWS EMR 执行 Presto 查询。

我已经启动了 EMR 运行ning hive/presto 并使用 AWS Glue 作为 Metastore。

当我通过 SSH 连接到主节点和 运行 配置单元时,我可以 运行 "show schemas;" 它向我展示了我们在 AWS Glue 上拥有的 3 个不同的数据库。

如果我随后进入 Presto CLI 和 运行 "show schemas on hive" 我只会看到两个 "default" 和 "information_schema"

对于我的一生,我无法弄清楚为什么 presto 无法看到相同的 Hive 模式。

它是在 EMR 上主要使用默认设置启动的基本默认集群。

有人可以指出我应该寻找的方向吗?我检查了 hive.properties 文件,看起来不错,我只是不知道为什么 presto 无法看到与 hive 相同的信息。

我确实设置了以下配置

[{"classification":"hive-site", "properties":{"hive.metastore.client.factory.class":"com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory"}, "configurations":[]}]

AWS 文档 http://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-hive-metastore-glue.html 看起来这应该是即插即用的,但我显然遗漏了一些东西

Amazon EMR 发布版本 5.10.0 开始,您可以。简单的,将hive.metastore.glue.datacatalog.enabled 属性设置为true,如下:

[
  {
    "Classification": "presto-connector-hive",
    "Properties": {
      "hive.metastore.glue.datacatalog.enabled": "true"
    }
  }
]

Optionally, you can manually set hive.metastore.glue.datacatalog.enabled=true in the /etc/presto/conf/catalog/hive.properties file on the master node. If you use this method, make sure that hive.table-statistics-enabled=false in the properties file is set because the Data Catalog does not support Hive table and partition statistics. If you change the value on a long-running cluster to switch metastores, you must restart the Presto server on the master node (sudo restart presto-server).

来源AWS Docs

看来这个问题已经在 emr-5.10 中解决了。您要添加以下配置:

{"Classification":"presto-connector-hive","Properties":{"hive.metastore.glue.datacatalog.enabled": "true"}}

来源:https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-presto-glue.html

最新的 0.198 版 Presto 现在支持 AWS Glue 作为元数据源。

Add support for using AWS Glue as the metastore. Enable it by setting the hive.metastore config property to glue.

https://prestodb.io/docs/current/release/release-0.198.html