Существует 2 возможных способа доступа к данным из RDS в glue etl (spark):
1-й вариант :
- Создание клеевого соединения поверх RDS
- Создайте клеевой гусеничный ход поверх этого клеевого соединения, созданного на первом шаге
- Запустите сканер, чтобы заполнить каталог клея базой данных и таблицей, указывающей на таблицы RDS.
- Создание динамического фрейма в glue etl с использованием только что созданной базы данных и таблицы в каталоге клея.
Пример кода:
from pyspark.context import SparkContext
from awsglue.context import GlueContext
glueContext = GlueContext(SparkContext.getOrCreate())
DyF = glueContext.create_dynamic_frame.from_catalog(database="{{database}}", table_name="{{table_name}}")
2-й вариант
Создание фрейма данных с использованием spark sql:
url = "jdbc:postgresql://<rds_host_name>/<database_name>"
properties = {
"user" : "<username>",
"password" : "<password>"
}
df = spark.read.jdbc(url=url, table="<schema.table>", properties=properties)
Примечание:
- Для создания базы данных с использованием spark sql вам понадобится передать postgres jdbc jar.
- Я попробовал первый метод для glue etl и второй метод для оболочки python (dev-endpoint)