使用Terraform为EMR上的Presto/Spark启用胶水目录的选项

使用Terraform为EMR上的Presto/Spark启用胶水目录的选项,terraform,amazon-emr,terraform-provider-aws,Terraform,Amazon Emr,Terraform Provider Aws,想知道在EMR上运行时是否支持为Presto/Spark启用aws glue catalog。在文档中找不到任何内容。以下aws文档讨论了将Amazon EMR上的Apache Spark和Hive与aws glue数据目录一起使用,以及将aws glue数据目录用作Presto的默认Hive元存储(Amazon EMR发行版5.10.0及更高版本)。希望您正在寻找此版本 及 及 另外,请检查此SO链接,了解EMR上的一些胶水目录配置: 以下AWS文档讨论了在Amazon EMR上使用Apac

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

以下aws文档讨论了将Amazon EMR上的Apache Spark和Hive与aws glue数据目录一起使用,以及将aws glue数据目录用作Presto的默认Hive元存储(Amazon EMR发行版5.10.0及更高版本)。希望您正在寻找此版本

另外,请检查此SO链接,了解EMR上的一些胶水目录配置:


以下AWS文档讨论了在Amazon EMR上使用Apache Spark和Hive与AWS Glue数据目录一起使用,以及使用AWS Glue数据目录作为Presto(Amazon EMR 5.10.0版及更高版本)的默认Hive元存储。希望您正在寻找这些

另外,请检查此SO链接,了解EMR上的一些胶水目录配置:


通过上述答案提供的链接,我能够对地形代码进行如下建模-:

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

[{
       "Classification": "spark-hive-site",
       "Properties": {
         "hive.metastore.client.factory.class": "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory"
       }
     }
]
在地形代码中从上述模板创建模板

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}"
  ...
}


Spark现在可以使用Glue了,您可以通过从Spark shell调用Spark.catalog.listDatabases().show()来验证这一点。

通过上面答案提供的链接,我可以对terraform代码进行建模,如下所示-:

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

[{
       "Classification": "spark-hive-site",
       "Properties": {
         "hive.metastore.client.factory.class": "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory"
       }
     }
]
在地形代码中从上述模板创建模板

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}"
  ...
}


现在可以从Spark使用Glue了,您可以通过调用Spark.catalog.listDatabases().show()来验证这一点来自spark shell。

上述问题要求在通过Terraform启动EMR时启用AWS Glue,以上AWS链接仅支持有关AWS Glue、EMR及其AWS Glue目录支持的文档,但不支持在使用Glue启动EMR时使用Terraform。请在回答之前正确阅读问题-@Yuva上述问题要求启用AWS Glue通过Terraform启动EMR时,上述AWS链接仅支持有关AWS Glue、EMR及其AWS Glue目录支持的文档,而不支持在使用Glue启动EMR时使用Terraform。请在回答-@yuva之前正确阅读问题