У меня недавно возникли проблемы с установкой десятичной дроби в схеме таблицы склеивания. Мне пришлось создать мою схему с помощью AWS cli.
То, что у меня было немного по-другому, это был паркет на моем s3-датаке.
Следующая команда cli создает схему на основе на json:
aws glue create-table --database-name example_db --table-input file://example.json
Следующие example.json
ссылаются на файлы паркета на s3://my-datalake/example/{dt}/
, где dt
- это раздел моей таблицы. И dec_col
- это столбец с типом decimal(10,2)
:
{
"Name": "example",
"Retention": 0,
"StorageDescriptor": {
"Columns": [
{
"Name": "id",
"Type": "int"
},
{
"Name": "dec_col",
"Type": "decimal(10,2)"
}
],
"Location": "s3://my-datalake/example/",
"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
},
"PartitionKeys": [
{
"Name": "dt",
"Type": "date"
}
],
"TableType": "EXTERNAL_TABLE",
"Parameters": {
"classification": "parquet"
}
}
Таким образом, вы можете определить тип как decimal
с масштабом и точностью, что вам и нужно.