AWS Glue Job создает новый столбец в Redshift, если обнаружен другой тип данных для того же столбца в файле паркета из S3 - PullRequest
0 голосов
/ 02 марта 2020

Я пытаюсь загрузить паркетный файл, который в S3 в Redshift, используя Glue Job. Когда я запускаю Glue Job в первый раз, он создает таблицу и загружает данные, но при запуске во второй раз, изменяя тип данных столбца 1, задание не завершается сбоем, вместо этого создается новый столбец в Redshift и добавляются данные.

Например: здесь я меняю тип данных целого числа

FileName **abc**
Code,Name,Amount
'A','XYZ',200.00

FileName **xyz**
Code,Name,Amount
'A','XYZ',200.00

В Redshift

Output after processing both the above file:
Code Name Amount Amount_String
A    XYZ  200.00
A    XYZ         200.00

Код

import os
import sys
from pyspark import SparkConf, SparkContext
from pyspark.sql import SparkSession
from pyspark.sql.window import Window
from pyspark.sql import SQLContext
from datetime import date

from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from awsglue.context import GlueContext
from awsglue.job import Job
from awsglue.dynamicframe import DynamicFrame

## @params: [TempDir, JOB_NAME]
args = getResolvedOptions(sys.argv, ['TempDir','JOB_NAME'])

spark = SparkSession.builder.getOrCreate()
glueContext = GlueContext(SparkContext.getOrCreate())

spark.conf.set('spark.sql.session.timeZone', 'Europe/London')

#sc = SparkContext()

data_source = "s3://bucket/folder/data/"
#read delta and source dataset
employee = spark.read.parquet(data_source)


sq_datasource0 = DynamicFrame.fromDF(employee, glueContext, "new_dynamic_frame")

datasink4 = glueContext.write_dynamic_frame.from_jdbc_conf(frame = sq_datasource0, catalog_connection = "redshiftDB", connection_options = {"dbtable": "employee", "database": "dbname"}, redshift_tmp_dir = args["TempDir"], transformation_ctx = "datasink4")

Я хочу потерпеть неудачу Приклейте задание, если проблема связана с несоответствием типов данных из файла. Буду признателен, если вы предоставите какие-либо рекомендации по решению этой проблемы.

1 Ответ

0 голосов
/ 02 марта 2020

Возможно, для вашей конфигурации гусеничного устройства выбран 1-й или 2-й вариант, как показано на следующем рисунке:

enter image description here

Если вы не хотите измените свою таблицу при изменении структуры файла S3, вам нужно отредактировать свой искатель и установить «Параметры конфигурации», чтобы выбрать третий параметр «Игнорировать изменение и не обновлять таблицу в каталоге данных».

Дайте мне знать, как дела, и любезно проголосуйте / примите, если это решит вашу цель.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...