Amazon web services 选择雅典娜中的文件

Amazon web services 选择雅典娜中的文件,amazon-web-services,amazon-athena,Amazon Web Services,Amazon Athena,我用的是雅典娜。创建表时指定的文件夹位置中有2个文件。如何在执行查询时选择特定文件?文件的位置由CREATE TABLE语句的location参数指定 您可以指定一个路径,该路径中的所有文件都将包含在表中 如果您只希望包含一个文件,您可能会指定文件的完整密钥(完整路径和文件名),它可能只会查询该路径。当然,这需要在创建表中指定。您不能在SELECT语句中更改路径。以下几项没有特定顺序: 最好不要将S3中的“文件夹”视为文件夹。我知道web GUI中的按钮显示“创建文件夹”。不幸的是,各种桌面客户

我用的是雅典娜。创建表时指定的文件夹位置中有2个文件。如何在执行查询时选择特定文件?

文件的位置由
CREATE TABLE
语句的
location
参数指定

您可以指定一个路径,该路径中的所有文件都将包含在表中


如果您只希望包含一个文件,您可能会指定文件的完整密钥(完整路径和文件名),它可能只会查询该路径。当然,这需要在
创建表
中指定。您不能在
SELECT
语句中更改路径。

以下几项没有特定顺序:

最好不要将S3中的“文件夹”视为文件夹。我知道web GUI中的按钮显示“创建文件夹”。不幸的是,各种桌面客户端都延续了这一趋势(感谢S3浏览器)。考虑S3存储桶中的文件夹的方式是,它们是对象键的一部分(有时我认为它们是一个“标记”)。如果您开始使用API,这将有助于减少混淆

因此,Athena将很难区分具有相似密钥的文件,并且不能只指定一个文件。在下面的示例中,假设我将car-makers.csv和car-names.csv加载到一个名为“SOMEBUCKET”的bucket中,并带有标记“SOMETAG”

如果我运行以下DDL:

CREATE EXTERNAL TABLE IF NOT EXISTS carnames_and_makers (
  id int,
  make string,
  model string
)
ROW FORMAT DELIMITED
 FIELDS TERMINATED BY ','
 LINES TERMINATED BY '\n'
LOCATION 's3://SOMEBUCKET/SOMETAG/';
我将在carnames_和_makers中结束与carnames和汽车制造商的合作 桌子

很遗憾,您无法指定对象

CREATE EXTERNAL TABLE IF NOT EXISTS carnames_just_names (
  id int,
  make string,
  model string
)
ROW FORMAT DELIMITED
 FIELDS TERMINATED BY ','
 LINES TERMINATED BY '\n'
LOCATION 's3://SOMEBUCKET/SOMETAG/car-names.csv';
导致如下错误:

FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:Got exception: java.io.IOException Can't make directory for path 's3://SOMEBUCKET/SOMETAG/car-names.csv' since it is a file.)
我希望这个解释有帮助

使用以下网站提供的cars数据集:

这不起作用-您可以指定文件夹,但不能指定文件。