Как получить данные из AWS RDS в скрипте задания AWS Glue и соответствующим образом преобразовать данные и вставить их обратно в aws-rds? - PullRequest
0 голосов
/ 21 мая 2019

Я хочу вставить данные из s3 bucket csv через AWS Glue, но вставка данных зависит от данных, хранящихся в AWS RDS (например, если эти данные уже присутствуют, то не вставляются или, если уже присутствуют, и только некоторые атрибуты этих данныхобновляется, то обновите значения).Есть ли способ извлечь данные из RDS в сценарии задания AWS Glue и затем соответствующим образом преобразовать данные.

Я также думал о вызове AWS lambda после завершения задания AWS Glue.Есть ли какой-нибудь код для сценария склеивания aws, чтобы вызвать лямбду после завершения работы склеивания aws, или какой-либо способ получить ответ на склеивание aws, например, SNS, или что-то, с помощью чего мы можем вызвать лямбда?

Я хочу это после вставкиданных в таблице aws rds, вызывается хранимая процедура, которая будет обрабатывать данные

1 Ответ

0 голосов
/ 21 мая 2019

Нам удалось вставить данные прямо в кластер MySQL Aurora из заданий Glue и избежать дубликатов, просто отправив операторы INSERT ON DUPLICATE KEY UPDATE. Это выглядит примерно так:

import mysql

# Other logic here...

# Convert to DataFrame (from a DynamicFrame) 
df = mapping.toDF()

# Connect to MySQL
db = mysql.connect(glueContext, 'name-of-mysql-connection', 'db')
cursor = db.cursor()

insert_statement = """
  INSERT INTO my_table
  (column1, column2, updated_at)
  VALUES(%s, %s, NOW())
  ON DUPLICATE KEY UPDATE
  column1 = %s,
  column2 = %s,
  updated_at = NOW()
  """

# Execute each statement
for row in df.rdd.collect():
  cursor.execute(insert_statement, (
    row['column1'],
    row['column2'],
    row['column1'],
    row['column2']
  ))

# Commit to the database
db.commit()
db.close()
...