Drill:工作空间

工作空间

你可以在存储插件的配置项里,配置多个工作空间。工作空间定义了本地或是分布式文件系统里的子目录下的文件。当你查询时,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 } },

将子目录定义为工作空间,可以使查询简化,这对于重复查询同一个文件相当有用。当你在工作空间的location域配置了一个个长长的路径名,在查询的时候,你不需要输入这个长长的路径名,只需要输工作空间名和小圆点就行了:

<workspace name>.`<location>`

\<location>是子目录的名字。

如果你查询的数据源,是你并没有设置成默认schema的插件的,需要把插件的名字带上。(这里假设你没有使用USE plugin.workspace 语句来连接到指定的存储插件):

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

覆盖 dsf.default 选项

在有些场景下,比如用户没有读根目录的权限的情况下,你需要覆盖掉dfs.default这个隐藏选项。你需要把下面这么一个叫default的workspace 添加到dfs插件的配置里。

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

无工作空间的Hive 和HBase

你是无法在Apache Drill安装的HBase和Hive 插件选项里配置工作空间的,虽然它们看起来也是按工作空间工作的。每个Hive插件的配置都包含了一个叫default的工作空间,这个工作空间指向了hive的元数据。当你查询Hive的default 工作空间时,你可以在查询语句里忽略工作空间的名字:

SELECT * FROM hive.customers LIMIT 10;
SELECT * FROM hive.`default`.customers LIMIT 10;

提示: Default 是一个关键词,关键词用作表名,字段名等标识符时,需要用反引号括起来。

因为HBase插件完全不适用工作空间,你可以简单地使用这样的查询:

SELECT * FROM hbase.customers LIMIT 10;

发表评论

电子邮件地址不会被公开。 必填项已用*标注