使用 Terraform 在 EMR 上为 Presto/Spark 启用粘合目录的选项

Option to enable glue catalog for Presto/Spark on EMR using Terraform

想知道当 EMR.Could 上的 运行 在文档中找不到任何内容时,是否支持为 Presto/Spark 启用 aws glue catalog。

以下 AWS 文档讨论了如何将 Amazon EMR 上的 Apache Spark 和 Hive 与 AWS Glue 数据目录结合使用,以及将 AWS Glue 数据目录用作 Presto 的默认 Hive 元存储(Amazon EMR 版本 5.10.0 及更高版本) ).希望您正在寻找这个?

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

https://aws.amazon.com/about-aws/whats-new/2017/08/use-apache-spark-and-hive-on-amazon-emr-with-the-aws-glue-data-catalog/

另请检查此 SO link 以了解 EMR 上的一些粘合目录配置:

Issue with AWS Glue Data Catalog as Metastore for Spark SQL on EMR

根据上面答案提供的 link,我能够按如下方式对 terraform 代码进行建模:

使用以下内容创建一个configuration.json.tpl

[{
       "Classification": "spark-hive-site",
       "Properties": {
         "hive.metastore.client.factory.class": "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory"
       }
     }
]

在 Terraform 代码中根据上述模板创建模板

data "template_file" "cluster_1_configuration" {
  template = "${file("${path.module}/templates/configuration.json.tpl")}"
}

然后这样设置集群-:

resource "aws_emr_cluster" "cluster_1" {
  name          = "${var.cluster_name}-1"
  release_label = "emr-5.21.0"
  applications  = ["Spark", "Zeppelin", "Hadoop","Sqoop"]
  log_uri       = "s3n://${var.cluster_name}/logs/"
  configurations = "${data.template_file.cluster_1_configuration.rendered}"
  ...
}

Glue 现在应该可以从 Spark 运行,您可以通过从 spark-shell.

调用 spark.catalog.listDatabases().show() 来验证这一点