工作区间
你可以定义一个或多个工作区间在存储插件配置中。工作区间定义在本地文件的子目录或是分布式文件系统中。当你运行查询时,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 中,工作区间中可能不包含 hive
和 hbase
存储插件,在 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;