我试图从s3加载一个文件到Athena来执行查询操作。但是所有的列值都被添加到了第一列。
我有以下格式的文件:
id,user_id,personal_id,created_at,updated_at,active
34,34,43,31:28.4,27:07.9,TRUE
下面是我得到的输出:
表创建查询:
CREATE EXTERNAL TABLE `testing`(
`id` string,
`user_id` string,
`personal_id` string,
`created_at` string,
`updated_at` string,
`active` string)
ROW FORMAT SERDE
'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
's3://testing2fa/'
TBLPROPERTIES (
'transient_lastDdlTime'='1665356861')
谁能告诉我我哪里错了?
2条答案
按热度按时间rjee0c151#
您应该将
skip.header.line.count
添加到表属性中以跳过第一行。由于您将所有列都定义为字符串数据类型,Athena无法区分表头和第一行。添加了属性的DDL:
slwdgvem2#
Serde需要一些参数来识别CSV文件,例如:
请参阅:LazySimpleSerDe for CSV, TSV, and custom-delimited files - Amazon Athena
另一种方法是使用AWS Glue为您创建表。在AWS Glue控制台中,您可以创建Crawler并将其指向您的数据。当您运行Crawler时,它将自动在Amazon Athena中创建与提供的数据文件匹配的表定义。