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.`.`;
我在 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.`.`;