При работе сканера клея AWS он не распознает столбцы меток времени.
Я правильно отформатировал метки времени ISO8601 в своем файле CSV. Сначала я ожидал, что Glue автоматически классифицирует их как метки времени, а это не так.
Я также попробовал пользовательский классификатор меток времени по этой ссылке https://docs.aws.amazon.com/glue/latest/dg/custom-classifier.html
Вот как выглядит мой классификатор
Это также неправильно классифицирует мои метки времени.
Я поместил в отладчик grok (https://grokdebug.herokuapp.com/) мои данные, например
id,iso_8601_now,iso_8601_yesterday
0,2019-05-16T22:47:33.409056,2019-05-15T22:47:33.409056
1,2019-05-16T22:47:33.409056,2019-05-15T22:47:33.409056
и совпадает на обоих
* *% Тысяча двадцать-один {TIMESTAMP_ISO8601: временная метка}
% {YEAR} -% {MONTHNUM} -% {MONTHDAY} [T]% {HOUR}:?% {MINUTE} (? ::?% {SECOND})?% {ISO8601_TIMEZONE}?
import csv
from datetime import datetime, timedelta
with open("timestamp_test.csv", 'w', newline='') as f:
w = csv.writer(f, delimiter=',')
w.writerow(["id", "iso_8601_now", "iso_8601_yesterday"])
for i in range(1000):
w.writerow([i, datetime.utcnow().isoformat(), (datetime.utcnow() - timedelta(days=1)).isoformat()])
Я ожидаю, что клей AWS автоматически классифицирует столбцы iso_8601 как метки времени. Даже при добавлении пользовательского классификатора grok он не классифицирует ни один из столбцов как метку времени.
Оба столбца классифицируются как строки.
Классификатор активен на гусеничном ходу
Вывод таблицы timestamp_test сканером
{
"StorageDescriptor": {
"cols": {
"FieldSchema": [
{
"name": "id",
"type": "bigint",
"comment": ""
},
{
"name": "iso_8601_now",
"type": "string",
"comment": ""
},
{
"name": "iso_8601_yesterday",
"type": "string",
"comment": ""
}
]
},
"location": "s3://REDACTED/_csv_timestamp_test/",
"inputFormat": "org.apache.hadoop.mapred.TextInputFormat",
"outputFormat": "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat",
"compressed": "false",
"numBuckets": "-1",
"SerDeInfo": {
"name": "",
"serializationLib": "org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe",
"parameters": {
"field.delim": ","
}
},
"bucketCols": [],
"sortCols": [],
"parameters": {
"skip.header.line.count": "1",
"sizeKey": "58926",
"objectCount": "1",
"UPDATED_BY_CRAWLER": "REDACTED",
"CrawlerSchemaSerializerVersion": "1.0",
"recordCount": "1227",
"averageRecordSize": "48",
"CrawlerSchemaDeserializerVersion": "1.0",
"compressionType": "none",
"classification": "csv",
"columnsOrdered": "true",
"areColumnsQuoted": "false",
"delimiter": ",",
"typeOfData": "file"
},
"SkewedInfo": {},
"storedAsSubDirectories": "false"
},
"parameters": {
"skip.header.line.count": "1",
"sizeKey": "58926",
"objectCount": "1",
"UPDATED_BY_CRAWLER": "REDACTED",
"CrawlerSchemaSerializerVersion": "1.0",
"recordCount": "1227",
"averageRecordSize": "48",
"CrawlerSchemaDeserializerVersion": "1.0",
"compressionType": "none",
"classification": "csv",
"columnsOrdered": "true",
"areColumnsQuoted": "false",
"delimiter": ",",
"typeOfData": "file"
}
}