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

Apache Drill: How to query all files in an S3 bucket?

我在 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

我想通了,把它记录在这里,以供遇到同样问题的其他人受益。

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

然后你可以查询目录下的所有文件:

select * from s3.`releases`;

以下查询将 运行 遍历根目录:

select * from s3.`.`;