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");
上面的查询成功执行,但是在提供的位置没有文件!!!执行成功后,表被创建并为空。这怎么可能?
即使我上传文件到提供的位置,创建的表仍然是空的!!
1条答案
按热度按时间kzmpq1sx1#
athena不是一个数据存储,它只是一个使用类似sql的表达式读取s3中数据的无服务器工具。
AmazonAthena是一种交互式查询服务,它使使用标准sql分析AmazonS3中的数据变得非常容易。athena是无服务器的,因此没有可管理的基础设施,您只需为运行的查询付费。
此查询正在创建表的元数据,它不会写入从中读取的位置。
如果你把一个csv放到这个位置
select * from reason
它将尝试Map前缀为的任何csvathena-workspace/athena-input/
桶内bucket_name
使用ROW FORMAT
以及SERDEPROPERTIES
解析文件。它也会跳过第一行,假设它是一个标题。