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