Возможность включения каталога клея для Presto/Spark в EMR с использованием Terraform.

Хотел узнать, есть ли поддержка включения каталога клея aws для Presto/Spark при работе в EMR. Ничего не нашел в документации.


person Atif    schedule 28.02.2019    source источник


Ответы (2)


В следующих документах AWS обсуждается использование Apache Spark и Hive в Amazon EMR с каталогом данных AWS Glue, а также использование каталога данных AWS Glue в качестве метахранилища Hive по умолчанию для Presto (выпуск Amazon EMR версии 5.10.0 и выше). Надеюсь, ты это ищешь?

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

а также

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

Также, пожалуйста, проверьте эту ссылку SO для некоторых конфигураций каталога клея на EMR:

Проблема с каталогом данных AWS Glue в качестве хранилища метаданных для Spark SQL в EMR

person Yuva    schedule 01.03.2019
comment
Вышеприведенный вопрос предполагает включение AWS Glue при запуске EMR через Terraform, приведенные выше ссылки AWS поддерживают только документацию об AWS Glue, EMR и его поддержке каталога AWS Glue, но не об использовании Terraform при запуске EMR с Glue. - person milind bhavsar; 25.04.2019
comment
Пожалуйста, внимательно прочитайте вопрос, прежде чем отвечать - @yuva - person Abhinav Kumar; 03.05.2021

По ссылке, предоставленной ответом выше, я смог смоделировать код терраформирования следующим образом:

Создайте файл 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.catalog.listDatabases().show() из spark-shell.

person Atif    schedule 06.05.2019