Проблема с чтением битового типа данных из MySQL и преобразованием в Redshift с помощью AWS Glue - PullRequest
0 голосов
/ 25 октября 2018

У меня есть таблица в базе данных MySQL, которая содержит столбец с именем activity, который имеет тип данных BIT.При преобразовании в INT он может принимать значения 1,2 или 3.

При использовании сканера в AWS Glue он распознает activity как BOOLEAN.Я попытался отредактировать схему для таблицы и изменить тип данных для activity на INT, но Glue по-прежнему считывает его как BOOLEAN при выполнении задания.

Я также пытался использовать ApplyMapping для преобразования его в INT, но безуспешно.

Есть идеи, как решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Я решил эту проблему, отправив запрос в базу данных MySQL, где я ЧИСТАЛ БИТ как INT при чтении его в Glue, используя:

pushdown_query = "(SELECT col1, CAST(activity AS INT) AS activity FROM my_table) my_table"

df = glueContext.read.format("jdbc")\
.option("driver", "com.mysql.jdbc.Driver") \
.option("url", db_url) \
.option("dbtable", pushdown_query) \
.option("user", db_user) \
.option("password", db_pass).load()
0 голосов
/ 15 ноября 2018

Вы можете использовать вместо этого код spark / pySpark для чтения таблицы в базе данных MySQL.Например, использование pySpark будет выглядеть следующим образом:

jdbcUrl = "jdbc:mysql://{0}:{1}/{2}".format(jdbcHostname, jdbcPort, jdbcDatabase)
connectionProperties = {
  "user" : jdbcUsername,
  "password" : jdbcPassword,
  "driver" : "com.mysql.jdbc.Driver"
}
employees_table = spark.read.jdbc(jdbcUrl, "employees", connectionProperties)

Более подробную информацию можно найти по этой ссылке: Источники данных Spark Надеемся, что спарк будет работать намного лучше, чем AWS Glue навыводя схему.

...