Спростіть і прискоріть програми Apache Spark на даних Amazon Redshift за допомогою інтеграції Amazon Redshift для Apache Spark

Спростіть і прискоріть програми Apache Spark на даних Amazon Redshift за допомогою інтеграції Amazon Redshift для Apache Spark

Вихідний вузол: 2597866

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

Інтеграція Amazon Redshift для Apache Spark допомагає розробникам легко створювати та запускати програми Apache Spark на даних Amazon Redshift. Розробники можуть використовувати аналітику AWS і сервіси машинного навчання, наприклад Amazon EMR, Клей AWS та Amazon SageMaker щоб без зусиль створювати програми 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 (версія спільноти) і скорочує час, необхідний для підготовки до завдань аналітики та ML. Вам потрібно лише вказати підключення до свого сховища даних, і ви зможете почати працювати з даними Amazon Redshift із програм на базі Apache Spark протягом кількох хвилин.

Ви можете використовувати кілька можливостей висунення для таких операцій, як сортування, агрегування, обмеження, об’єднання та скалярні функції, щоб лише релевантні дані переміщувалися зі сховища даних Amazon Redshift до споживаючої програми Apache Spark. Це дозволяє покращити продуктивність ваших програм. Адміністратори Amazon Redshift можуть легко ідентифікувати SQL, згенерований програмами на основі Spark. У цій публікації ми покажемо, як можна дізнатися SQL, згенерований завданням Apache Spark.

Крім того, інтеграція Amazon Redshift для Apache Spark використовує формат файлу Parquet під час розміщення даних у тимчасовому каталозі. Amazon Redshift використовує оператор UNLOAD SQL для зберігання цих тимчасових даних Служба простого зберігання Amazon (Amazon S3). Програма 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
  • Клієнт ML використовує 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 Elastic (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-launch-cloudformation-stack

Ви також можете завантажити шаблон 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 Studio з необхідними ролями IAM
    • Випуск Amazon EMR версії 6.9.0 на кластері EC2 із необхідними ролями IAM
    • Версія програми Amazon EMR Serverless 6.9.0
    • З’єднання AWS Glue і завдання AWS Glue версії 4.0
    • A Блокнот Юпітера для запуску за допомогою 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 через an Amazon EMR Studio блокнот. Стек 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. На панелі навігації виберіть Робочі області.
  3. Вибирати Створити робочу область.
  4. Введіть, наприклад, назву робочої області redshift-spark.
  5. Розгорнути Розширена конфігурація розділ і виберіть Приєднайте робочу область до кластера EMR.
  6. під Підключіть до кластера EMR, виберіть кластер EMR із назвою emrCluster-Redshift-Spark.
  7. Вибирати Створити робочу область.
  8. Після того, як робочий простір Amazon EMR Studio створено та перебуває в статусі «Прикріплено», ви можете отримати доступ до робочого простору, вибравши назву робочого простору.

Це має відкрити робочу область у новій вкладці. Зверніть увагу: якщо у вас є блокувальник спливаючих вікон, вам, можливо, доведеться дозволити робочій області відкривати або вимкнути блокувальник спливаючих вікон.

У Amazon EMR Studio Workspace тепер ми завантажуємо блокнот 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. Запустіть окремі клітинки, виділивши їх, а потім вибравши Play.

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

  1. Знайдіть операцію зсуву предикату, яка виконується на кластері 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. Select Тимчасові облікові дані.
  5. для Database, введіть dev.
  6. для ім'я користувача, введіть redshiftmasteruser.
  7. Вибирати зберегти.
  8. Розгорніть кластер на панелі навігації redshift-spark-redshift-cluster, розширити базу даних розробників, розгорнути tickit, і розгорнути таблиці щоб перелічити всі таблиці всередині схеми tickit.

Ви повинні знайти стіл test_emr.

  1. Виберіть (клацніть правою кнопкою миші) таблицю test_emr, Потім виберіть Виберіть таблицю щоб запитати таблицю.
  2. Вибирати прогін щоб запустити оператор SQL.

Використовуйте інтеграцію Amazon Redshift з Apache Spark на Amazon EMR Serverless

Випуск Amazon EMR версії 6.9.0 і вище забезпечує інтеграцію Amazon Redshift для Apache Spark JAR (під керуванням Amazon Redshift) і Amazon Redshift JDBC JAR також локально на 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. Вибирати додатків при Без сервера у навігаційній панелі.

Ви знайдете програму 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. Перевірте виконання запитів для групи запитів 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

Ви бачите, що запит і результати повернення зберігаються у форматі файлу Parquet на Amazon S3.

Використовуйте інтеграцію Amazon Redshift з Apache Spark на AWS Glue

Починаючи з AWS Glue версії 4.0 і вище, завдання Apache Spark, які підключаються до Amazon Redshift, можуть використовувати інтеграцію Amazon Redshift для Apache Spark і драйвер JDBC Amazon Redshift. Існуючі завдання AWS Glue, які вже використовують Amazon Redshift як джерело або ціль, можна оновити до AWS Glue 4.0, щоб скористатися перевагами цього нового з’єднувача. Шаблон CloudFormation, наданий у цій публікації, створює такі ресурси AWS Glue:

  • Клейове з’єднання AWS для Amazon Redshift – Підключення для встановлення з’єднання від AWS Glue до Amazon Redshift за допомогою інтеграції Amazon Redshift для Apache Spark
  • Роль IAM, прикріплена до завдання AWS Glue – Роль IAM для керування дозволами на виконання завдання AWS Glue
  • Робота з клеєм AWS – Сценарій для завдання 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. Вибирати зберегти , А потім прогін.

Ви можете переглянути статус виконання завдання на прогін Вкладка.

  1. Після успішного виконання завдання ви можете перевірити результат таблиці test-glue, створеної завданням AWS Glue.
  2. Ми перевіряємо запити, що запускаються для групи запитів 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 для отримання відфільтрованих даних для обробки даних.
    • Розгляньте можливість використання булевих операторів, що розповсюджуються, наприклад in, isnull, isnotnull, contains, endswith та startswith для отримання відфільтрованих даних для обробки даних.
    • Розгляньте можливість використання логічних операторів зсуву, наприклад 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 Serverless:
    • Отримайте доступ до Amazon EMR Studio, вибравши або скопіювавши посилання, надане в результатах стеку CloudFormation для ключа EMRStudioURL.
    • Вибирати додатків при Без сервера у навігаційній панелі.

Ви знайдете програму EMR, створену стеком CloudFormation із назвою emr-spark-redshift.

    • Якщо статус програми відображається як Зупинено, можна переходити до наступних кроків. Однак, якщо статус програми — Запущено, виберіть назву програми, а потім виберіть Зупинити застосування та Зупинити застосування знову підтвердити.
  1. Видаліть робочу область Amazon EMR Studio:
    • Отримайте доступ до Amazon EMR Studio, вибравши або скопіювавши посилання, надане в результатах стеку CloudFormation для ключа EMRStudioURL.
    • Вибирати Робочі області у навігаційній панелі.
    • Виберіть робочу область, яку ви створили, і виберіть видаляти, Потім виберіть видаляти знову підтвердити.
  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».

— Huron Consulting

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

—GE Aerospace

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

— Goldman Sachs


Про авторів

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

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

Нареш Гаутам є лідером аналітики даних і AI/ML в AWS з 20-річним досвідом, який із задоволенням допомагає клієнтам розробляти високодоступні, високопродуктивні та економічно ефективні рішення для аналізу даних і AI/ML, щоб надати клієнтам можливість приймати рішення на основі даних. . У вільний час захоплюється медитацією та кулінарією.

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

Часова мітка:

Більше від Великі дані AWS