文件系统存储插件
你可以注册一个存储插件,使用 Drill 用于连接本地的文件系统或是分布式文件系统,在 Hadoop 的 core-site.xml,例如 S3 或 HDFS。另外, Apache Drill 包含一个存储插件名叫 dfs,其指向本地的文件系统。
Drill 连接到一个文件系统
在 Drill 集群中,你通常不查询本地文件系统,替换为分布式文件系统。目前,你需要使用一个分布式文件系统时,连接多个 Drillbit 得到完整的,一致的查询结果,通过将文件复制到每个节点的分布式文件系统进行模拟,或使用 NFS,如 Amazon 的静态文件系统。
你配置连接属性到存储插件工作区间,让 Drill 连接分布式文件系统。例如,以下在客户端通过连接属性让 Drill 连接 HDFS 集群:
1. "connection": "hdfs://<IP Address>:<Port>/"
在集群的节点上查询 HDFS 上的文件,你可以简单改变连接,在 dfs 存储插件中,将 file:/// 改为 hdfs:///。
为了改变 dfs 存储插件配置,指向不同的本地或分布式文件系统,使用 connection 属性:
- 本地文件系统示例:
```
- {
- "type": "file",
- "enabled": true,
- "connection": "file:///",
- "workspaces": {
- "root": {
- "location": "/user/max/donuts",
- "writable": false,
- "defaultInputFormat": null
- }
- },
- "formats" : {
- "json" : {
- "type" : "json"
- }
- }
- } ``` - 分布式文件系统示例:
```
- {
- "type" : "file",
- "enabled" : true,
- "connection" : "hdfs://10.10.30.156:8020/",
- "workspaces" : {
- "root" : {
- "location" : "/user/root/drill",
- "writable" : true,
- "defaultInputFormat" : null
- }
- },
- "formats" : {
- "json" : {
- "type" : "json"
- }
- }
- } ```
为了连接 Hadoop 文件系统,你需要包含 IP 地址和端口号。
查询本地文件示例
以下示例展示一个文件类型的存储插件配置,在名叫 json_files 的工作区间中。配置指向 Drill 的 /users/max/drill/json/ 目录在本地文件系统中(dfs)。
1. {
2. "type" : "file",
3. "enabled" : true,
4. "connection" : "file:///",
5. "workspaces" : {
6. "json_files" : {
7. "location" : "/users/max/drill/json/",
8. "writable" : false,
9. "defaultInputFormat" : json
10. }
11. },
该 connection 参数是配置 "file:///",连接 Drill 到本地文件系统。
查询文件在示例工作区间 json_files,你可以使用 USE 命令告诉 Drill 使用 json_files 的工作区间,内容如下所示:
1. USE dfs.json_files;
2. SELECT * FROM `donuts.json` WHERE type='frosted'
如果 json_files 工作区间不存在,你查询需要包含 donuts.json 文件的全路径:
1. SELECT * FROM dfs.`/users/max/drill/json/donuts.json` WHERE type='frosted';
