Apache Drill无法设置默认工作区

时间:2016-11-16 10:24:53

标签: apache-drill

目前我只能在dfs.tmp.工作区工作,这非常烦人。所以我尝试change the default workspace到一个新的(现有的)文件夹(由钻取用户拥有):

"workspaces": {
    "default": {
      "location": "/var/drill",
      "writable": true,
      "defaultInputFormat": null
    },
    "root": {
      "location": "/",
      "writable": false,
      "defaultInputFormat": null
    },
...

但它不起作用:

CREATE TABLE `test` as SELECT 'Test' FROM (VALUES(1))

返回以下错误,表示修改后的设置将被忽略。

  

org.apache.drill.common.exceptions.UserRemoteException:PARSE ERROR:根模式是不可变的。在根模式中不允许创建或删除表/视图。使用' USE模式'选择模式。命令。

我也尝试过前缀(没有成功)

CREATE TABLE dfs.default.`test` as SELECT 'Test' FROM (VALUES(1))
  

PARSE ERROR:遇到"。默认"在第1行,第17栏。

还尝试重新启动钻取并使root可写。

4 个答案:

答案 0 :(得分:1)

添加这个答案只是为了结合ColemanTO和devツ两个现有的答案  并举例说明。

因此,就像到目前为止所说的其他答案一样,“查询”中保留了“默认”一词。您正确地引用docs来创建新的默认工作区,以便定义可写根(/)工作区。但是,documentation还给出了一个示例,为了实际引用自定义“默认”工作区,您需要添加反引号。

所以如果你添加了一个工作区

{
  "type": "file",
  "enabled": true,
  "connection": "hdfs:///",
  "config": null,
  "workspaces": {
    "default": {
      "location": "/some/path",
      "writable": true,
      "defaultInputFormat": null
    }
  ...
  }
 ...
}

你会在如下的查询中引用:

SELECT * FROM dfs.`default`.`path/relative/to/custom/default/location` LIMIT 10;

如果是原始发布的问题,您还可以创建一个名为“var_drill”的新工作区,这样您就不必在查询中转义关键字“default”。

答案 1 :(得分:0)

在工作区中使用除default之外的任何其他名称。

对于Drill,

defaultreserved keyword

答案 2 :(得分:0)

“注意:默认是保留字。在后面的刻度中用作标识符时,必须附加保留字。”

答案 3 :(得分:0)

是默认值是保留关键字,应在反引号中指明