Apache Drill:如何查询S3存储桶中的所有文件?

时间:2017-06-27 16:08:06

标签: amazon-web-services amazon-s3 apache-drill

我在OSX上使用Apache Drill 1.10。我有一个包含大约150个文件的S3存储桶,我已经设置了a connection between the two as per the Drill documentation

我可以看到存储桶中的所有文件,来自Drill:

jdbc:drill:zk=local> USE `s3`.`root`;
+-------+--------------------------------------+
|  ok   |               summary                |
+-------+--------------------------------------+
| true  | Default schema changed to [s3.root]  |
+-------+--------------------------------------+
1 row selected (1.123 seconds)

jdbc:drill:zk=local> SHOW files; 
<shows table of 15 files>

我可以成功查询单个文件:

jdbc:drill:zk=local> select * from s3.`ocds-b5fd17-00ec7c92-54f3-4c50-8214-8b8c0cf9ff09-140281-qc54303.json`;
<returns results>

但是如何在整个目录中查询?在本地文件系统上,我只提供了一个像dfs/path/*.json这样的通配符,但这似乎不适用于S3:

jdbc:drill:zk=local> select * from s3.`*.json`;
Error: VALIDATION ERROR: Can not create a Path from an empty string
SQL Query null

2 个答案:

答案 0 :(得分:1)

以下查询将在根目录上运行:

select * from s3.`.`;

答案 1 :(得分:-1)

我想出来了,在这里记录它是为了其他任何有同样问题的人的利益。

在存储桶的根目录中创建一个目录,例如, releases,并将文件放在那里。

然后您可以使用以下命令查询目录中的所有文件:

select * from s3.`releases`;