繁体   English   中英

即使 AWS s3 中没有文件,AWS Athena 创建外部表也会成功吗?

[英]AWS Athena create external table succeeds even if AWS s3 doesn't have file in it?

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它会尝试 map 任何 CSV 在athena-workspace/athena-input/ bucket_name前缀中的任何 CSV 使用ROW FORMATSERDEPROPERTIES解析文件. 它还会跳过第一行,假设它是 header。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM