create external table reason ( reason_id int,
retailer_id int,
reason_code string,
reason_text string,
ordering int,
creation_date date,
is_active tinyint,
last_updated_by int,
update_date date
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
"separatorChar" = "\t",
"quoteChar" = "'",
"escapeChar" = "\\"
)
STORED AS TEXTFILE
location 's3://bucket_name/athena-workspace/athena-input/'
TBLPROPERTIES ("skip.header.line.count"="1");
上面的查询成功执行,但是,在提供的位置没有文件!!!成功执行后,表被创建,是空的。这怎么可能?
即使我把文件上传到提供的位置,创建的表还是空的!!!
Athena不是一个数据存储,它只是一个无服务器的工具,使用类似SQL的表达式来读取S3中的数据。
Amazon Athena是一个交互式查询服务,可以使用标准SQL轻松分析Amazon S3中的数据。Athena是无服务器的,所以没有基础设施需要管理,你只需为你运行的查询付费。
这个查询是在创建表的元数据,它不会写到那个位置,而是从那里读取。
如果你把一个CSV放到这个位置,然后执行 select * from reason
的前缀中的任何CSV进行映射。athena-workspace/athena-input/
桶内 bucket_name
到您的数据格式,使用 ROW FORMAT
和 SERDEPROPERTIES
来解析文件。它也会跳过第一行,假设它是一个头。