AWS Glue Crawler создает пустые таблицы в Lake Formation

Я успешно перенес данные из базы данных MySQL RDS в корзины S3 с планом Lake Formation.

После проверки данных было правильно загружено примерно 41 из 60 таблиц.

Поиск ошибок выявил две вещи:

  1. Мой рабочий процесс blueprint не принимает все таблицы из-за этой ошибки в blueprint/workflow:

Ошибка при вызове o319.pyWriteDynamicFrame. Неизвестный тип '245 в столбце 9 из 14 двоичного набора результатов.

  1. Отсутствующие таблицы создаются, но в них нет данных. Из проверки свойств таблицы JSON это выполняется начальным сканированием.

Я понял, что эта ошибка из пункта 1 связана с распознаванием JSON как типа столбца с базами данных MySQL.

У кого-нибудь раньше была такая проблема? У меня нет опыта редактирования AWS драйвера JDBC на Glue, поскольку документация, как всегда, оставляет желать лучшего.

Есть ли очевидный обходной путь, который мне не хватает?

Вот скриншот рабочего процесса, помеченного как "сбой импорта".

Вот свойства таблицы JSON для таблицы (Success_table), которая была успешно загружена:

{
     "Name": "rds_DB_successful_table",
     "DatabaseName": "rds-ingestion",
     "CreateTime": "2020-06-23T14:07:04.000Z",
     "UpdateTime": "2020-06-23T14:07:20.000Z",
     "Retention": 0,
     "StorageDescriptor": {
          "Columns": [
               {
                    "Name": "updated_at",
                    "Type": "timestamp"
               },
               {
                    "Name": "name",
                    "Type": "string"
               },
               {
                    "Name": "created_at",
                    "Type": "timestamp"
               },
               {
                    "Name": "id",
                    "Type": "int"
               }
          ],
          "Location": "s3://XXX-data-lake/DB/rds_DB_successful_tableversion_0/",
          "InputFormat": "org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat",
          "OutputFormat": "org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat",
          "Compressed": false,
          "NumberOfBuckets": 0,
          "SerdeInfo": {
               "SerializationLibrary": "org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe",
               "Parameters": {
                    "serialization.format": "1"
               }
          },
          "SortColumns": [],
          "StoredAsSubDirectories": false
     },
     "TableType": "EXTERNAL_TABLE",
     "Parameters": {
          "CreatedByJob": "RDSCONNECTOR_etl_4_b968999a",
          "CreatedByJobRun": "jr_37cc04c6fd928b9ff7a77fd50d6a98397a30c08ce3d56fae3fd618594585daea",
          "LastTransformCompletedOn": "2020-06-23 14:07:20.508091",
          "LastUpdatedByJob": "RDSCONNECTOR_etl_4_b968999a",
          "LastUpdatedByJobRun": "jr_37cc04c6fd928b9ff7a77fd50d6a98397a30c08ce3d56fae3fd618594585daea",
          "SourceConnection": "RDS Connection Type",
          "SourceTableName": "DB_successful_table",
          "SourceType": "JDBC",
          "TableVersion": "0",
          "TransformTime": "0:00:15.347357",
          "classification": "PARQUET"
     },
     "IsRegisteredWithLakeFormation": true
}

Вот свойства таблицы JSON для таблицы (bad_table), которая была неудачно загружена, но создана:

{
     "Name": "_rds_DB_bad_table",
     "DatabaseName": "rds-ingestion",
     "Owner": "owner",
     "CreateTime": "2020-06-23T13:44:19.000Z",
     "UpdateTime": "2020-06-23T13:44:19.000Z",
     "LastAccessTime": "2020-06-23T13:44:19.000Z",
     "Retention": 0,
     "StorageDescriptor": {
          "Columns": [
               {
                    "Name": "office_id",
                    "Type": "int"
               },
               {
                    "Name": "updated_at",
                    "Type": "timestamp"
               },
               {
                    "Name": "created_at",
                    "Type": "timestamp"
               },
               {
                    "Name": "id",
                    "Type": "int"
               },
               {
                    "Name": "position",
                    "Type": "int"
               },
               {
                    "Name": "id",
                    "Type": "int"
               },
               {
                    "Name": "deadline",
                    "Type": "date"
               }
          ],
          "Location": "DB.bad_table",
          "Compressed": false,
          "NumberOfBuckets": -1,
          "SerdeInfo": {
               "Parameters": {}
          },
          "BucketColumns": [],
          "SortColumns": [],
          "Parameters": {
               "CrawlerSchemaDeserializerVersion": "1.0",
               "CrawlerSchemaSerializerVersion": "1.0",
               "UPDATED_BY_CRAWLER": "RDSCONNECTOR_discoverer_57904714",
               "classification": "mysql",
               "compressionType": "none",
               "connectionName": "RDS Connection Type",
               "typeOfData": "table"
          },
          "StoredAsSubDirectories": false
     },
     "PartitionKeys": [],
     "TableType": "EXTERNAL_TABLE",
     "Parameters": {
          "CrawlerSchemaDeserializerVersion": "1.0",
          "CrawlerSchemaSerializerVersion": "1.0",
          "UPDATED_BY_CRAWLER": "RDSCONNECTOR_discoverer_57904714",
          "classification": "mysql",
          "compressionType": "none",
          "connectionName": "RDS Connection Type",
          "typeOfData": "table"
     },
     "CreatedBy": "arn:aws:sts::724135113484:assumed-role/LakeFormationWorkflowRole/AWS-Crawler",
     "IsRegisteredWithLakeFormation": false
}

Возможно, ключ кроется в сравнении этих успешных и неудачных свойств таблицы JSON.

Любая помощь будет принята с благодарностью!

0 ответов

Другие вопросы по тегам