工作区间

你可以定义一个或多个工作区间在存储插件配置中。工作区间定义在本地文件的子目录或是分布式文件系统中。当你运行查询时,Drill 搜索工作区间在去定位数据。隐藏默认的工作区间,dfs.default,指向文件系统的根目录。

以下 dfs 存储插件配置展示一些示例的工作区间:

{
    "type": "file",
    "enabled": true,
    "connection": "file:///",
    "workspaces": {
      "root": {
        "location": "/",
        "writable": false,
        "defaultInputFormat": null
      },
      "tmp": {
        "location": "/tmp",
        "writable": true,
        "defaultInputFormat": null
      },
      "emp": {
        "location": "/Users/user1/emp",
        "writable": true,
        "defaultInputFormat": null
      },
      "donuts": {
        "location": "/Users/user1/donuts",
        "writable": true,
        "defaultInputFormat": null
      },
      "sales": {
        "location": "/Users/user1/sales",
        "writable": true,
        "defaultInputFormat": null
      }
    },

配置工作区间包含子目录简化查询,这个在查询相同的文件时非常重要。在工作区位置属性中配置一个长路径名后,替代使用数据源的完整路径名,在使用时,你只需在 FROM 语法后面使用点即可。

<workspace name>.`<location>`

这里的 <location> 代表子目录的路径名,例如 /users/max/drill/json

当你没有设置默认的存储插件的 Schema 名称,去查询数据源,需要包含插件名称。下的语法不使用 USE 语法连接存储插件:

<plugin>.<workspace name>.`<location>`

覆盖 dfs.default

你可能想重写隐藏的默认工作区间,而用户又没有访问根目录的权限。增加以下内容到工作区间,进入到 dfs 存储插件,重写默认的工作区间:

"default": {
  "location": "</directory/path>",
  "writable": true,
  "defaultInputFormat": null
}

无工作区间的 Hive 和 HBase

在安装的 Apache Drill 中,工作区间中可能不包含 hivehbase 存储插件,在 Drill 通过 Hive 的数据库展示来作为工作区间。每个 hive 存储插件包含一个 default 工作区间指向 Hive 的元数据。当你在 hive default 工作区间中查询文件和表时,你可以从查询中省略工作区间的名称。

例如,你在 default workspace 查询 Hive 表的时候,使用以下查询得到的结果是一样的:

示例

SELECT * FROM hive.customers LIMIT 10;
SELECT * FROM hive.`default`.customers LIMIT 10;
注意:默认是保留字。在后面,当用作标识符时,必须使用保留字。

由于 HBase 插件不适用于一个工作区间,你可以使用以下查询:

SELECT * FROM hbase.customers LIMIT 10;
Copyright © smartloli 2016 all right reserved,powered by GitbookModify: 2016-08-26 06:59:28