无法从镶木地板读取零件文件
Not able read part files from parquet
HIVE_CURSOR_ERROR: Can not read value at 0 in block 0 in file s3://xx/xxxx/part-xxxxxxxxxx.parquet.
我使用 AWS glue 动态框架写入创建了 parquet 文件 api,当我尝试从 glue 目录 table 读取 AWS athena 时,收到此错误。
当我试图通过动态框架通过胶水目录读取这个文件时,这似乎没问题,但 Athena 给出了上述错误。
使用 avro 格式,似乎没有问题。
CREATE EXTERNAL TABLE `table_name`(
`column_name_1` string,
`column_name_2` string
)
ROW FORMAT SERDE
'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION
's3://xxxxxxxxxxx/xxxxx/xxx/'
TBLPROPERTIES (
'CrawlerSchemaDeserializerVersion'='1.0',
'CrawlerSchemaSerializerVersion'='1.0',
'UPDATED_BY_CRAWLER'='xxxxxxxxxx',
'averageRecordSize'='xxxxx',
'classification'='parquet',
'compressionType'='none',
'objectCount'='xxxxx',
'recordCount'='xxx',
'sizeKey'='xxxx',
'typeOfData'='file')
athena 的 smallint 有问题,它没有空值
它不能与 smallint 和任何其他数据类型一起使用,因此我们会出现上述错误。
一个解决方案是在 parquet 中将 smallint 转换为 string 到 s3
HIVE_CURSOR_ERROR: Can not read value at 0 in block 0 in file s3://xx/xxxx/part-xxxxxxxxxx.parquet.
我使用 AWS glue 动态框架写入创建了 parquet 文件 api,当我尝试从 glue 目录 table 读取 AWS athena 时,收到此错误。
当我试图通过动态框架通过胶水目录读取这个文件时,这似乎没问题,但 Athena 给出了上述错误。
使用 avro 格式,似乎没有问题。
CREATE EXTERNAL TABLE `table_name`(
`column_name_1` string,
`column_name_2` string
)
ROW FORMAT SERDE
'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION
's3://xxxxxxxxxxx/xxxxx/xxx/'
TBLPROPERTIES (
'CrawlerSchemaDeserializerVersion'='1.0',
'CrawlerSchemaSerializerVersion'='1.0',
'UPDATED_BY_CRAWLER'='xxxxxxxxxx',
'averageRecordSize'='xxxxx',
'classification'='parquet',
'compressionType'='none',
'objectCount'='xxxxx',
'recordCount'='xxx',
'sizeKey'='xxxx',
'typeOfData'='file')
athena 的 smallint 有问题,它没有空值
它不能与 smallint 和任何其他数据类型一起使用,因此我们会出现上述错误。
一个解决方案是在 parquet 中将 smallint 转换为 string 到 s3