在 Apache Drill 上制作存储插件到 HDFS

Making storage plugin on Apache Drill to HDFS

我正在尝试为 Hadoop (hdfs) 和 Apache Drill 制作存储插件。 实际上我很困惑,我不知道为 hdfs:// 连接设置什么端口,以及为位置设置什么。 这是我的插件:

 {
 "type": "file",
 "enabled": true,
 "connection": "hdfs://localhost:54310",
 "workspaces": {
 "root": {
  "location": "/",
  "writable": false,
  "defaultInputFormat": null
},
"tmp": {
  "location": "/tmp",
  "writable": true,
  "defaultInputFormat": null
}
 },
"formats": {
  "psv": {
  "type": "text",
  "extensions": [
    "tbl"
  ],
  "delimiter": "|"
},
"csv": {
  "type": "text",
  "extensions": [
    "csv"
  ],
  "delimiter": ","
},
"tsv": {
  "type": "text",
  "extensions": [
    "tsv"
  ],
  "delimiter": "\t"
},
"parquet": {
  "type": "parquet"
},
"json": {
  "type": "json"
},
"avro": {
  "type": "avro"
   }
 }
}

那么,设置 localhost:54310 是否正确,因为我通过命令得到了它:

 hdfs -getconf -nnRpcAddresses 

或者是:8020 ?

第二个问题,location需要设置什么?我的 hadoop 文件夹位于:

/usr/local/hadoop

,在那里你可以找到 /etc /bin /lib /log ... 那么,我需要在我的数据节点上设置位置吗?

第三个问题。当我连接到 Drill 时,我会通过 sqlline 而不是像这样连接我的动物园管理员:

  !connect jdbc:drill:zk=localhost:2181 

我的问题是,在我制作存储插件后,当我用zk连接到Drill时,我可以查询hdfs文件吗?

如果这是一个菜鸟问题,我很抱歉,但我在互联网上没有找到任何有用的东西,或者至少它没有帮助我。 如果您能向我解释一些事情,我将不胜感激。

根据演习 docs,

  {
    "type" : "file",
    "enabled" : true,
    "connection" : "hdfs://10.10.30.156:8020/",
    "workspaces" : {
      "root" : {
        "location" : "/user/root/drill",
        "writable" : true,
        "defaultInputFormat" : null
      }
    },
    "formats" : {
      "json" : {
        "type" : "json"
      }
    }
  }

"connection",

输入namenode服务器地址。

如果您不确定这个地址。 检查 core-site.xml 中的 fs.default.namefs.defaultFS 属性。

即将"workspaces",

您可以在此保存工作区。在上面的示例中,有一个 workspace,名称为 root,位置为 /user/root/drill这是您的 HDFS 位置。

如果在/user/root/drillhdfs目录下有文件,可以使用这个工作空间名查询。

示例:abc在这个目录下。

 select * from dfs.root.`abc.csv`

插件创建成功后,即可开始钻取,开始查询。

无论工作区如何,您都可以查询任何目录。

假设你想在/tmp/data hdfs目录中查询employee.json

查询是:

select * from dfs.`/tmp/data/employee.json`

我有类似的问题,Drill 无法读取 dfs 服务器。最后,问题是由namenode端口引起的。 namenode web默认地址UI是http://localhost:50070/

namenode服务器的默认地址是hdfs://localhost:8020/。