文件系统存储插件

你可以注册一个存储插件,使用 Drill 用于连接本地的文件系统或是分布式文件系统,在 Hadoop 的 core-site.xml,例如 S3 或 HDFS。另外, Apache Drill 包含一个存储插件名叫 dfs,其指向本地的文件系统。

Drill 连接到一个文件系统

在 Drill 集群中,你通常不查询本地文件系统,替换为分布式文件系统。目前,你需要使用一个分布式文件系统时,连接多个 Drillbit 得到完整的,一致的查询结果,通过将文件复制到每个节点的分布式文件系统进行模拟,或使用 NFS,如 Amazon 的静态文件系统。

你配置连接属性到存储插件工作区间,让 Drill 连接分布式文件系统。例如,以下在客户端通过连接属性让 Drill 连接 HDFS 集群:

"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)。

{
  "type" : "file",
  "enabled" : true,
  "connection" : "file:///",
  "workspaces" : {
    "json_files" : {
      "location" : "/users/max/drill/json/",
      "writable" : false,
      "defaultInputFormat" : json
   }
},

connection 参数是配置 "file:///",连接 Drill 到本地文件系统。

查询文件在示例工作区间 json_files,你可以使用 USE 命令告诉 Drill 使用 json_files 的工作区间,内容如下所示:

USE dfs.json_files;
SELECT * FROM `donuts.json` WHERE type='frosted'

如果 json_files 工作区间不存在,你查询需要包含 donuts.json 文件的全路径:

SELECT * FROM dfs.`/users/max/drill/json/donuts.json` WHERE type='frosted';
Copyright © smartloli 2016 all right reserved,powered by GitbookModify: 2016-08-26 06:59:28