Упростите и ускорьте работу приложений Apache Spark с данными Amazon Redshift с помощью интеграции Amazon Redshift для Apache Spark.

Упростите и ускорьте работу приложений Apache Spark с данными Amazon Redshift с помощью интеграции Amazon Redshift для Apache Spark.

Исходный узел: 2597866

Клиенты используют Амазонка Redshift выполнять важную для бизнеса аналитику на петабайтах структурированных и полуструктурированных данных. Apache Spark — это популярная платформа, которую можно использовать для создания приложений для таких сценариев использования, как ETL (извлечение, преобразование и загрузка), интерактивная аналитика и машинное обучение (ML). Apache Spark позволяет создавать приложения на различных языках, таких как Java, Scala и Python, путем доступа к данным в хранилище данных Amazon Redshift.

Интеграция Amazon Redshift с Apache Spark помогает разработчикам легко создавать и запускать приложения Apache Spark на данных Amazon Redshift. Разработчики могут использовать аналитику AWS и сервисы машинного обучения, такие как Амазонка ЭМИ, Клей AWSи Создатель мудреца Амазонки без особых усилий создавать приложения Apache Spark, которые считывают и записывают данные в хранилище данных Amazon Redshift. Вы можете сделать это без ущерба для производительности ваших приложений или согласованности транзакций ваших данных.

В этом посте мы обсудим, почему интеграция Amazon Redshift для Apache Spark важна и эффективна для аналитики и машинного обучения. Кроме того, мы обсудим варианты использования, которые используют интеграцию Amazon Redshift с Apache Spark для повышения эффективности бизнеса. Наконец, мы рассмотрим пошаговые примеры того, как использовать этот официальный коннектор AWS в приложении Apache Spark.

Интеграция Amazon Redshift для Apache Spark

Интеграция Amazon Redshift для Apache Spark сводит к минимуму трудоемкий и часто выполняемый вручную процесс настройки соединителя spark-redshift (версия сообщества) и сокращает время, необходимое для подготовки к задачам аналитики и машинного обучения. Вам нужно только указать подключение к вашему хранилищу данных, и вы сможете начать работу с данными Amazon Redshift из своих приложений на основе Apache Spark в течение нескольких минут.

Вы можете использовать несколько возможностей pushdown для таких операций, как сортировка, агрегирование, ограничение, объединение и скалярные функции, чтобы только релевантные данные перемещались из хранилища данных Amazon Redshift в потребляющее приложение Apache Spark. Это позволяет повысить производительность ваших приложений. Администраторы Amazon Redshift могут легко идентифицировать SQL, сгенерированный приложениями на основе Spark. В этом посте мы покажем, как узнать SQL, сгенерированный заданием Apache Spark.

Более того, интеграция Amazon Redshift для Apache Spark использует формат файла Parquet при размещении данных во временном каталоге. Amazon Redshift использует инструкцию UNLOAD SQL для хранения этих временных данных в Простой сервис хранения Amazon (Амазон С3). Приложение Apache Spark извлекает результаты из временного каталога (хранящегося в формате файла Parquet), что повышает производительность.

Вы также можете сделать свои приложения более безопасными, используя Управление идентификацией и доступом AWS (IAM) для подключения к Amazon Redshift.

Интеграция Amazon Redshift для Apache Spark основана на соединителе spark-redshift (версия сообщества) и улучшает его производительность и безопасность, помогая повысить производительность приложений до 10 раз.

Примеры использования интеграции Amazon Redshift с Apache Spark

В нашем случае руководство продуктовой компании хочет знать продажи каждого продукта на нескольких рынках. Поскольку продажи компании динамично колеблются, для руководства стало сложной задачей отслеживать продажи на нескольких рынках. Тем не менее, общие продажи снижаются, и руководство компании хочет выяснить, какие рынки не работают, чтобы они могли ориентироваться на эти рынки для рекламных кампаний.

Для продаж на нескольких рынках данные о продажах продуктов, такие как заказы, транзакции и данные об отгрузке, доступны на Amazon S3 в озере данных. Команда инженеров данных может использовать Apache Spark с Amazon EMR или AWS Glue для анализа этих данных в Amazon S3.

Данные инвентаризации доступны в Amazon Redshift. Аналогичным образом группа инженеров данных может анализировать эти данные с помощью Apache Spark с помощью Amazon EMR или задания AWS Glue, используя интеграцию Amazon Redshift для Apache Spark для выполнения агрегирования и преобразования. Агрегированный и преобразованный набор данных можно сохранить обратно в Amazon Redshift с помощью интеграции Amazon Redshift с Apache Spark.

Использование распределенной платформы, такой как Apache Spark, с интеграцией Amazon Redshift для Apache Spark может обеспечить прозрачность озера данных и хранилища данных для получения аналитических сведений о продажах. Эти аналитические данные могут быть доступны заинтересованным сторонам бизнеса и ряду бизнес-пользователей в Amazon Redshift для принятия обоснованных решений о проведении целевых рекламных акций для сегментов рынка с низким доходом.

Кроме того, мы можем использовать интеграцию Amazon Redshift с Apache Spark в следующих случаях:

  • Клиент Amazon EMR или AWS Glue, выполняющий задания Apache Spark, хочет преобразовать данные и записать их в Amazon Redshift в рамках конвейера ETL.
  • Клиент машинного обучения использует Apache Spark с SageMaker для разработки функций для доступа и преобразования данных в Amazon Redshift.
  • Клиент Amazon EMR, AWS Glue или SageMaker использует Apache Spark для интерактивного анализа данных с данными в Amazon Redshift из ноутбуков.

Примеры интеграции Amazon Redshift для Apache Spark в приложении Apache Spark

В этом посте мы покажем, как подключить Amazon Redshift к Amazon EMR на Эластичное вычислительное облако Amazon (Амазон EC2), Amazon EMR без сервераи AWS Glue с помощью общего скрипта. В следующем примере кода мы создаем отчет, показывающий квартальные продажи за 2008 год. Для этого мы объединяем две таблицы Amazon Redshift с помощью Apache Spark DataFrame, запускаем предикатное преобразование, агрегируем и сортируем данные, а затем записываем преобразованный данные обратно в Amazon Redshift. Скрипт использует PySpark

Скрипт использует Аутентификация на основе IAM для Amazon Redshift. Роли IAM, используемые Amazon EMR и AWS Glue, должны иметь соответствующие разрешения для аутентификации Amazon Redshift и доступ к корзине S3 для временного хранения данных.

В следующем примере политика позволяет роли IAM вызывать GetClusterCredentials операции:

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "redshift:GetClusterCredentials", "Resource": "arn:aws:redshift:<aws_region_name>:xxxxxxxxxxxx:dbuser:*/temp_*" }
}

Следующий пример политики разрешает доступ к корзине S3 для временного хранения данных:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket" ], "Resource": "arn:aws:s3:::<s3_bucket_name>" } ]
}

Полный сценарий выглядит следующим образом:

from pyspark.sql import SparkSession
from pyspark.sql.functions import col # Initiate Apache Spark session
spark = SparkSession .builder .appName("SparkRedshiftConnector") .enableHiveSupport() .getOrCreate() # Set connection options for Amazon Redshift
jdbc_iam_url = "jdbc:redshift:iam://redshift-spark-connector-1.xxxxxxxxxxx.<aws_region_name>.redshift.amazonaws.com:5439/sample_data_dev"
temp_dir = 's3://<s3_bucket_name>/redshift-temp-dir/'
aws_role = 'arn:aws:iam::xxxxxxxxxxxx:role/redshift-s3' # Set query group for the query. More details on Amazon Redshift WLM https://docs.aws.amazon.com/redshift/latest/dg/cm-c-executing-queries.html
queryGroup = "emr-redshift"
jdbc_iam_url_withQueryGroup = jdbc_iam_url+'?queryGroup='+queryGroup # Set User name for the query
userName = 'awsuser'
jdbc_iam_url_withUserName = jdbc_iam_url_withQueryGroup+';user='+userName # Define the Amazon Redshift context
redshiftOptions = { "url": jdbc_iam_url_withUserName, "tempdir": temp_dir, "aws_iam_role" : aws_role
} # Create the sales DataFrame from Amazon Redshift table using io.github.spark_redshift_community.spark.redshift class
sales_df = ( spark.read .format("io.github.spark_redshift_community.spark.redshift") .options(**redshiftOptions) .option("dbtable", "tickit.sales") .load()
) # Create the date Data Frame from Amazon Redshift table
date_df = ( spark.read .format("io.github.spark_redshift_community.spark.redshift") .options(**redshiftOptions) .option("dbtable", "tickit.date") .load()
) # Assign a Data Frame to the above output which will be written back to Amazon Redshift
output_df= sales_df.join(date_df, sales_df.dateid == date_df.dateid, 'inner').where( col("year") == 2008).groupBy("qtr").sum("qtysold").select( col("qtr"), col("sum(qtysold)")).sort(["qtr"], ascending=[1]).withColumnRenamed("sum(qtysold)","total_quantity_sold") # Display the output
output_df.show() ## Lets drop the queryGroup for easy validation of push down queries
# Set User name for the query
userName = 'awsuser'
jdbc_iam_url_withUserName = jdbc_iam_url+'?user='+userName # Define the Amazon Redshift context
redshiftWriteOptions = { "url": jdbc_iam_url_withUserName, "tempdir": temp_dir, "aws_iam_role" : aws_role
} # Write the Data Frame back to Amazon Redshift
output_df.write .format("io.github.spark_redshift_community.spark.redshift") .mode("overwrite") .options(**redshiftWriteOptions) .option("dbtable", "tickit.test") .save()

Если вы планируете использовать предыдущий сценарий в своей среде, убедитесь, что вы заменили значения для следующих переменных соответствующими значениями для вашей среды: jdbc_iam_url, temp_dirи aws_role.

В следующем разделе мы рассмотрим шаги по запуску этого скрипта для агрегирования образца набора данных, доступного в Amazon Redshift.

Предпосылки

Прежде чем мы начнем, убедитесь, что выполнены следующие предварительные условия:

Развертывание ресурсов с помощью AWS CloudFormation

Выполните следующие шаги, чтобы развернуть стек CloudFormation:

  1. Войдите в Консоль управления AWS, затем запустите стек CloudFormation:
    BDB-2063-запуск-облачный-стек

Вы также можете скачать шаблон CloudFormation для создания ресурсов, упомянутых в этом посте, с помощью инфраструктуры как кода (IaC). Используйте этот шаблон при запуске нового стека CloudFormation.

  1. Прокрутите вниз до конца страницы, чтобы выбрать Я признаю, что AWS CloudFormation может создавать ресурсы IAM под Возможности, а затем выберите Создать стек.

Процесс создания стека занимает 15–20 минут. Шаблон CloudFormation создает следующие ресурсы:

    • Amazon VPC с необходимыми подсетями, таблицами маршрутов и шлюзом NAT.
    • Сегмент S3 с именем redshift-spark-databucket-xxxxxxx (обратите внимание, что xxxxxxx — это случайная строка, чтобы сделать имя корзины уникальным)
    • Кластер Amazon Redshift с образцами данных, загруженными в базу данных. dev и основной пользователь redshiftmasteruser. Для целей этого сообщения в блоге redshiftmasteruser с правами администратора. Однако в производственной среде рекомендуется использовать пользователя с детальным контролем доступа.
    • Роль IAM, которая будет использоваться для Amazon Redshift с возможностью запрашивать временные учетные данные из базы данных разработки кластера Amazon Redshift.
    • Студия Amazon EMR с необходимыми ролями IAM
    • Выпуск Amazon EMR версии 6.9.0 в кластере EC2 с необходимыми ролями IAM
    • Выпуск приложения Amazon EMR Serverless версии 6.9.0
    • Соединение с AWS Glue и задание AWS Glue версии 4.0
    • A Блокнот Jupyter для запуска с помощью Amazon EMR Studio с помощью Amazon EMR в кластере EC2
    • Сценарий PySpark для запуска с использованием Amazon EMR Studio и Amazon EMR Serverless.
  1. После завершения создания стека выберите имя стека redshift-spark и перейдите в Выходы

Мы используем эти выходные значения позже в этом посте.

В следующих разделах мы покажем шаги по интеграции Amazon Redshift для Apache Spark из Amazon EMR в Amazon EC2, Amazon EMR Serverless и AWS Glue.

Используйте интеграцию Amazon Redshift с Apache Spark в Amazon EMR на EC2.

Начиная с версии выпуска Amazon EMR 6.9.0 и выше, коннектор, использующий интеграцию Amazon Redshift для Apache Spark, и драйвер Amazon Redshift JDBC доступны локально в Amazon EMR. Эти файлы находятся под /usr/share/aws/redshift/ каталог. Однако в предыдущих версиях Amazon EMR сообщество версия spark-redshift соединитель доступна.

В следующем примере показано, как подключиться к Amazon Redshift с помощью ядра PySpark через Студия Amazon EMR блокнот. Стек CloudFormation создал Amazon EMR Studio, Amazon EMR в кластере EC2 и блокнот Jupyter, доступный для запуска. Чтобы пройти этот пример, выполните следующие шаги:

  1. Загрузите записную книжку Jupyter, доступную в корзине S3:
    • В выходных данных стека CloudFormation найдите значение для EMRStudioNotebook, который должен указывать на redshift-spark-emr.ipynb ноутбук доступен в корзине S3.
    • Выберите ссылку или откройте ссылку в новой вкладке, скопировав URL-адрес блокнота.
    • После того, как вы откроете ссылку, загрузите блокнот, выбрав Скачать, который сохранит файл локально на вашем компьютере.
  1. Получите доступ к Amazon EMR Studio, выбрав или скопировав ссылку, указанную в выходных данных стека CloudFormation для ключа. EMRStudioURL.
  2. На панели навигации выберите Workspaces.
  3. Выберите Создать рабочее пространство.
  4. Укажите имя для рабочей области, например redshift-spark.
  5. Развернуть Расширенная конфигурация раздел и выберите Присоединение рабочей области к кластеру EMR.
  6. Под Присоединение к кластеру EMR, выберите кластер EMR с именем emrCluster-Redshift-Spark.
  7. Выберите Создать рабочее пространство.
  8. После того, как рабочая область Amazon EMR Studio создана и находится в состоянии «Подключено», вы можете получить доступ к рабочей области, выбрав имя рабочей области.

Это должно открыть рабочую область в новой вкладке. Обратите внимание: если у вас есть блокировщик всплывающих окон, вам может потребоваться разрешить рабочей области открывать или отключить блокировщик всплывающих окон.

Теперь в рабочую область Amazon EMR Studio мы загружаем записную книжку Jupyter, которую скачали ранее.

  1. Выберите Загрузите чтобы просмотреть локальную файловую систему и загрузить блокнот Jupyter (redshift-spark-emr.ipynb).
  2. Выберите (двойной щелчок) redshift-spark-emr.ipynb Блокнот в рабочей области, чтобы открыть блокнот.

Блокнот предоставляет подробную информацию о различных задачах, которые он выполняет. Обратите внимание, что в разделе Определите переменные для подключения к кластеру Amazon Redshift., вам не нужно обновлять значения для jdbc_iam_url, temp_dirи aws_role потому что они обновляются для вас AWS CloudFormation. AWS CloudFormation также выполнил шаги, упомянутые в Предпосылки раздел записной книжки.

Теперь вы можете запустить ноутбук.

  1. Запустите отдельные ячейки, выбрав их, а затем выбрав Играть.

Вы также можете использовать комбинацию клавиш Shift + Enter or Shift+Возврат. Кроме того, вы можете запустить все ячейки, выбрав Запустить все ячейки на Run .

  1. Найдите операцию предиката pushdown, выполняемую в кластере Amazon Redshift интеграцией Amazon Redshift для Apache Spark.

Мы также можем видеть временные данные, хранящиеся на Amazon S3, в оптимизированном формате Parquet. Результат можно увидеть при запуске ячейки в разделе Получить последний запрос, выполненный в Amazon Redshift.

  1. Чтобы проверить таблицу, созданную заданием из Amazon EMR в Amazon EC2, перейдите в консоль Amazon Redshift и выберите кластер. redshift-spark-redshift-cluster на Панель подготовленных кластеров стр.
  2. В сведениях о кластере на Данные запроса Меню, выберите Запрос в редакторе запросов v2.
  3. Выберите кластер на панели навигации и подключитесь к кластеру Amazon Redshift, когда он запросит аутентификацию.
  4. Выберите Временные учетные данные.
  5. Что касается База данных, войти dev.
  6. Что касается , войти redshiftmasteruser.
  7. Выберите Сохранить.
  8. В области навигации разверните кластер redshift-spark-redshift-cluster, расширить базу данных разработчиков, расширить tickit, и развернуть таблицы чтобы перечислить все таблицы внутри схемы tickit.

Вы должны найти стол test_emr.

  1. Выберите (щелкните правой кнопкой мыши) таблицу test_emr, а затем выберите Выбрать стол для запроса таблицы.
  2. Выберите Run для запуска оператора SQL.

Используйте интеграцию Amazon Redshift с Apache Spark в Amazon EMR Serverless

Выпуск Amazon EMR версии 6.9.0 и выше обеспечивает интеграцию Amazon Redshift с JAR-файлами Apache Spark (управляемыми Amazon Redshift) и JAR-файлами JDBC Amazon Redshift локально в Amazon EMR Serverless. Эти файлы находятся под /usr/share/aws/redshift/ каталог. В следующем примере мы используем скрипт Python, доступный в корзине S3 с помощью стека CloudFormation, который мы создали ранее.

  1. В выходных данных стека CloudFormation запишите значение для EMRServerlessExecutionScript, где находится скрипт Python в корзине S3.
  2. Также обратите внимание на значение для EMRServerlessJobExecutionRole, которая представляет собой роль IAM, используемую при выполнении задания Amazon EMR Serverless.
  3. Получите доступ к Amazon EMR Studio, выбрав или скопировав ссылку, указанную в выходных данных стека CloudFormation для ключа. EMRStudioURL.
  4. Выберите Приложения под Serverless в навигационной панели.

Вы найдете приложение EMR, созданное стеком CloudFormation, с именем emr-spark-redshift.

  1. Выберите имя приложения, чтобы отправить задание.
  2. Выберите Отправить работу.
  3. Под Детали работы, Для Имя, введите идентифицируемое имя задания.
  4. Что касается Роль времени выполнения, выберите роль IAM, которую вы отметили в выходных данных стека CloudFormation ранее.
  5. Что касается Расположение скрипта, укажите путь к сценарию Python, указанному ранее в выходных данных стека CloudFormation.
  6. Развернуть раздел Искровые свойства и выберите Изменить в тексте
  7. Введите следующее значение в текстовое поле, которое указывает путь к redshift-connector, драйвер Amazon Redshift JDBC, spark-avro JAR и minimal-json JAR-файлы:
    --jars /usr/share/aws/redshift/jdbc/RedshiftJDBC.jar,/usr/share/aws/redshift/spark-redshift/lib/spark-redshift.jar,/usr/share/aws/redshift/spark-redshift/lib/spark-avro.jar,/usr/share/aws/redshift/spark-redshift/lib/minimal-json.jar

  8. Выберите Отправить работу.
  9. Подождите, пока задание завершится и статус выполнения отобразится как Успех.
  10. Перейдите к редактору запросов Amazon Redshift, чтобы проверить, успешно ли создана таблица.
  11. Проверьте выполнение запросов pushdown для группы запросов Amazon Redshift. emr-serverless-redshift. Вы можете запустить следующую инструкцию SQL для базы данных dev:
    SELECT query_text FROM SYS_QUERY_HISTORY WHERE query_label = 'emr-serverless-redshift' ORDER BY start_time DESC LIMIT 1

Вы можете видеть, что запрос pushdown и возвращаемые результаты хранятся в формате файла Parquet на Amazon S3.

Используйте интеграцию Amazon Redshift с Apache Spark на AWS Glue

Начиная с AWS Glue версии 4.0 и выше, задания Apache Spark, подключающиеся к Amazon Redshift, могут использовать интеграцию Amazon Redshift для драйвера Apache Spark и Amazon Redshift JDBC. Существующие задания AWS Glue, которые уже используют Amazon Redshift в качестве источника или цели, можно обновить до AWS Glue 4.0, чтобы воспользоваться преимуществами этого нового соединителя. Шаблон CloudFormation, представленный в этом посте, создает следующие ресурсы AWS Glue:

  • Подключение AWS Glue для Amazon Redshift – Соединение для установки соединения из AWS Glue с Amazon Redshift с использованием интеграции Amazon Redshift для Apache Spark.
  • Роль IAM, прикрепленная к заданию AWS Glue – Роль IAM для управления разрешениями на выполнение задания AWS Glue.
  • AWS Glue работа – Скрипт для задания AWS Glue, выполняющего преобразования и агрегации с использованием интеграции Amazon Redshift для Apache Spark.

В следующем примере используется соединение AWS Glue, прикрепленное к заданию AWS Glue с PySpark, и включает следующие шаги:

  1. На консоли AWS Glue выберите Коммутация в навигационной панели.
  2. Под Коммутация, выберите подключение AWS Glue для Amazon Redshift, созданное с помощью шаблона CloudFormation.
  3. Проверьте данные подключения.

Теперь вы можете повторно использовать это соединение в задании или в нескольких заданиях.

  1. На Соединители выберите задание AWS Glue, созданное стеком CloudFormation, в разделе Ваша работаили получить доступ к заданию AWS Glue, используя URL-адрес, предоставленный для ключа GlueJob в выводе стека CloudFormation.
  2. Получите доступ к сценарию для задания AWS Glue и проверьте его.
  3. На Детали работы вкладку, убедитесь, что Версия клея на Клей 4.0.

Это гарантирует, что в задании используются самые последние redshift-spark коннектор.

  1. Расширьте Дополнительные свойства и в Коммутация убедитесь, что соединение, созданное стеком CloudFormation, подключено.
  2. Проверьте параметры задания, добавленные для задания AWS Glue. Эти значения также доступны в выходных данных для стека CloudFormation.
  3. Выберите Сохранить , а затем Run.

Вы можете просмотреть статус выполнения задания на Run меню.

  1. После успешного завершения задания вы можете проверить вывод таблицы test-glue, созданной заданием AWS Glue.
  2. Мы проверяем выполнение запросов pushdown для группы запросов Amazon Redshift. glue-redshift. Вы можете запустить следующую инструкцию SQL для базы данных dev:
    SELECT query_text FROM SYS_QUERY_HISTORY WHERE query_label = 'glue-redshift' ORDER BY start_time DESC LIMIT 1

Лучшие практики

Помните о следующих рекомендациях:

  • Рассмотрите возможность использования интеграции Amazon Redshift для Apache Spark из Amazon EMR вместо использования redshift-spark коннектор (версия сообщества) для ваших новых заданий Apache Spark.
  • Если у вас есть существующие задания Apache Spark, использующие redshift-spark коннектор (версия сообщества), рассмотрите возможность их обновления, чтобы использовать интеграцию Amazon Redshift для Apache Spark.
  • Интеграция Amazon Redshift для Apache Spark автоматически применяет предикаты и запросы для оптимизации производительности. Мы рекомендуем использовать поддерживаемые функции (autopushdown) в вашем запросе. Интеграция Amazon Redshift для Apache Spark преобразует функцию в SQL-запрос и запускает запрос в Amazon Redshift. Эта оптимизация приводит к извлечению необходимых данных, поэтому Apache Spark может обрабатывать меньше данных и иметь более высокую производительность.
    • Рассмотрите возможность использования агрегатных функций выталкивания, таких как avg, count, max, minи sum для извлечения отфильтрованных данных для обработки данных.
    • Рассмотрите возможность использования логических операторов pushdown, таких как in, isnull, isnotnull, contains, endswithи startswith для извлечения отфильтрованных данных для обработки данных.
    • Рассмотрите возможность использования логических операторов pushdown, таких как and, orи not (или !) для извлечения отфильтрованных данных для обработки данных.
  • Роль IAM рекомендуется передавать с помощью параметра aws_iam_role для аутентификации Amazon Redshift из вашего приложения Apache Spark в Amazon EMR или AWS Glue. Роль IAM должна иметь необходимые разрешения для получения временных учетных данных IAM для аутентификации в Amazon Redshift, как показано в разделе этого блога «Примеры интеграции Amazon Redshift для Apache Spark в приложении Apache Spark».
  • Благодаря этой функции вам не нужно сохранять имя пользователя и пароль Amazon Redshift в диспетчере секретов и базе данных Amazon Redshift.
  • Amazon Redshift использует инструкцию UNLOAD SQL для хранения этих временных данных в Amazon S3. Приложение Apache Spark извлекает результаты из временного каталога (хранящегося в формате файла Parquet). Этот временный каталог на Amazon S3 не очищается автоматически и, следовательно, может привести к дополнительным затратам. Мы рекомендуем использовать Политики жизненного цикла Amazon S3 чтобы определить правила хранения для корзины S3.
  • Рекомендуется включить Ведение журнала аудита Amazon Redshift для регистрации информации о подключениях и действиях пользователей в вашей базе данных.
  • Рекомендуется включить Шифрование Amazon Redshift при хранении для шифрования ваших данных по мере того, как Amazon Redshift записывает их в свои центры обработки данных, и расшифровывать их для вас при доступе к ним.
  • Рекомендуется выполнить обновление до AWS Glue версии 4.0 и выше, чтобы использовать интеграцию Amazon Redshift для Apache Spark, которая доступна по умолчанию. При обновлении до этой версии AWS Glue эта функция будет использоваться автоматически.
  • Рекомендуется выполнить обновление до Amazon EMR версии 6.9.0 и выше, чтобы использовать интеграцию Amazon Redshift для Apache Spark. Вам не нужно явно управлять какими-либо драйверами или файлами JAR.
  • Рассмотрите возможность использования блокнотов Amazon EMR Studio для взаимодействия с данными Amazon Redshift в приложении Apache Spark.
  • Рассмотрите возможность использования AWS Glue Studio для создания заданий Apache Spark с помощью визуального интерфейса. Вы также можете переключиться на написание кода Apache Spark в Scala или PySpark в AWS Glue Studio.

Убирать

Выполните следующие шаги, чтобы очистить ресурсы, созданные как часть шаблона CloudFormation, чтобы гарантировать, что вам не будет выставлен счет за ресурсы, если вы больше не будете их использовать:

  1. Остановите бессерверное приложение Amazon EMR:
    • Получите доступ к Amazon EMR Studio, выбрав или скопировав ссылку, указанную в выходных данных стека CloudFormation для ключа. EMRStudioURL.
    • Выберите Приложения под Serverless в навигационной панели.

Вы найдете приложение EMR, созданное стеком CloudFormation, с именем emr-spark-redshift.

    • Если статус приложения отображается как «Остановлено», вы можете перейти к следующим шагам. Однако, если статус приложения Запущено, выберите имя приложения, затем выберите Остановить применение и Остановить применение для подтверждения.
  1. Удалите рабочую область Amazon EMR Studio:
    • Получите доступ к Amazon EMR Studio, выбрав или скопировав ссылку, указанную в выходных данных стека CloudFormation для ключа. EMRStudioURL.
    • Выберите Workspaces в навигационной панели.
    • Выберите рабочую область, которую вы создали, и выберите Удалить, а затем выберите Удалить для подтверждения.
  2. Удалите стек CloudFormation:
    • В консоли AWS CloudFormation перейдите к созданному ранее стеку.
    • Выберите имя стека, а затем выберите Удалить удалить стек и удалить ресурсы, созданные как часть этого поста.
    • На экране подтверждения выберите Удалить стопку.

Заключение

В этом посте мы объяснили, как можно использовать интеграцию Amazon Redshift для Apache Spark для создания и развертывания приложений с помощью Amazon EMR на Amazon EC2, Amazon EMR Serverless и AWS Glue для автоматического применения предикатов и запросов с расталкиванием для оптимизации производительности запросов к данным. в Amazon Redshift. Настоятельно рекомендуется использовать интеграцию Amazon Redshift для Apache Spark для удобного и безопасного подключения к Amazon Redshift из Amazon EMR или AWS Glue.

Вот что некоторые из наших клиентов говорят об интеграции Amazon Redshift с Apache Spark:

«Мы даем возможность нашим инженерам создавать свои конвейеры данных и приложения с помощью Apache Spark, используя Python и Scala. Нам нужно было индивидуальное решение, которое упростило бы операции и обеспечило более быструю и эффективную доставку для наших клиентов, и это то, что мы получили благодаря новой интеграции Amazon Redshift для Apache Spark».

—Гурон Консалтинг

«GE Aerospace использует аналитику AWS и Amazon Redshift для предоставления важных бизнес-идей, которые определяют важные бизнес-решения. Благодаря поддержке автоматического копирования из Amazon S3 мы можем создавать более простые конвейеры данных для перемещения данных из Amazon S3 в Amazon Redshift. Это ускоряет возможности наших специалистов по продуктам данных для доступа к данным и предоставления информации конечным пользователям. Мы тратим больше времени на добавление ценности с помощью данных и меньше времени на интеграцию».

—Дженерал Аэроспейс

«Мы сосредоточены на предоставлении самообслуживания доступа к данным для всех наших пользователей в Goldman Sachs. С помощью Legend, нашей платформы для управления и управления данными с открытым исходным кодом, мы даем пользователям возможность разрабатывать приложения, ориентированные на данные, и получать аналитические данные на основе данных в ходе нашего сотрудничества в сфере финансовых услуг. Благодаря интеграции Amazon Redshift с Apache Spark наша группа по платформе данных сможет получать доступ к данным Amazon Redshift с минимальными ручными действиями, что позволит использовать ETL без кода, что расширит наши возможности, чтобы инженерам было проще сосредоточиться на совершенствовании своего рабочего процесса по мере необходимости. они собирают полную и своевременную информацию. Мы ожидаем повышения производительности приложений и повышения безопасности, поскольку теперь наши пользователи могут легко получать доступ к последним данным в Amazon Redshift».

-Голдман Сакс


Об авторах

Гаган Брахми — старший специалист по архитектуре решений, занимающийся аналитикой больших данных и платформой AI/ML в Amazon Web Services. Гейган имеет более чем 18-летний опыт работы в области информационных технологий. Он помогает клиентам проектировать и создавать высокомасштабируемые, производительные и безопасные облачные решения на AWS. В свободное время он проводит время со своей семьей и исследует новые места.

Вивек Гаутам является архитектором данных со специализацией на озерах данных в AWS Professional Services. Он работает с корпоративными клиентами, создавая продукты для обработки данных, аналитические платформы и решения на AWS. Когда Вивек не занимается созданием и проектированием озер данных, он увлекается едой, а также любит исследовать новые места для путешествий и ходить в походы.

Нареш Гаутам является лидером в области аналитики данных и искусственного интеллекта и машинного обучения в AWS с 20-летним опытом работы. Ему нравится помогать клиентам разрабатывать высокодоступные, высокопроизводительные и экономичные решения для анализа данных и искусственного интеллекта и машинного обучения, чтобы предоставить клиентам возможность принимать решения на основе данных. . В свободное время он любит медитировать и готовить.

Бо Шарифи является инженером-разработчиком программного обеспечения в группе драйверов Amazon Redshift, где он руководит разработкой интеграции Amazon Redshift с коннектором Apache Spark. Он имеет более чем 20-летний опыт создания платформ, управляемых данными, в различных отраслях. В свободное время он любит проводить время со своей семьей и заниматься серфингом.

Отметка времени:

Больше от AWS Большие данные