Отметка времени не загружается в таблицу Redshift из Glue

У меня есть отметка времени в формате YYYY-MM-DD XX:XX:XX в файле csv, который хранится в S3, но когда я использую тип данных отметки времени для загрузки в базу данных Redshift с помощью Glue, столбец отметки времени имеет значение NULL. Похоже, что формат действителен, но я также пробовал форматы YYYYMMDD XXXXXX и YYMMDD XX:XX:XX на всякий случай.

Мое отображение в Glue идет от метки времени к метке времени, а тип данных столбца таблицы также является меткой времени. Ex данных в формате csv:

1,2016 Summer,2016-06-22 00:00:00

Фактический выход:

Line |    Term     |    Date
-----+-------------+------------
   1 | 2016 Summer |  

Ожидаемый результат:

Line |    Term     |        Date
-----+-------------+---------------------
   1 | 2016 Summer | 2016-06-22 00:00:00

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

Код:

val datasource37 = glueContext.getCatalogSource(database = "data", tableName = "term", redshiftTmpDir = "", transformationContext = "datasource37").getDynamicFrame()
val applymapping37 = datasource37.applyMapping(mappings = Seq(("id", "bigint", "id", "bigint"), ("name", "string", "name", "varchar(256)"), ("date", "timestamp", "date_start", "timestamp")), caseSensitive = false, transformationContext = "applymapping37")
val resolvechoice37 = applymapping37.resolveChoice(choiceOption = Some(ChoiceOption("make_cols")), transformationContext = "resolvechoice37")
val dropnullfields37 = resolvechoice37.dropNulls(transformationContext = "dropnullfields37")
val datasink37 = glueContext.getJDBCSink(catalogConnection = "dataConnection", options = JsonOptions("""{"dbtable": "term", "database": "data"}"""), redshiftTmpDir = args("TempDir"), transformationContext = "datasink37").writeDynamicFrame(dropnullfields37)

person vtbiggi    schedule 17.08.2018    source источник
comment
Можете ли вы добавить свой сценарий Glue?   -  person Yuriy Bondaruk    schedule 18.08.2018
comment
Да, я отредактировал свой вопрос, чтобы включить его сейчас.   -  person vtbiggi    schedule 20.08.2018


Ответы (1)


Я закончил отображение строки -> метка времени, и это сработало. У Glue он автоматически отображался от отметки времени до отметки времени, поэтому я решил, что это правильно.

Ex:

val applymapping37 = datasource37.applyMapping
                     (mappings = Seq(("id", "bigint", "id", "bigint"),
                     ("name", "string", "name", "varchar(256)"), 
                     ("date", "string", "date_start", "timestamp")),
                     caseSensitive = false, transformationContext = "applymapping37")
person vtbiggi    schedule 22.08.2018