2016-08-31 29 views
0

我正在尝试为Hadoop(hdfs)和Apache Drill制作存储插件。 其实我很困惑,我不知道要为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" 
    } 
} 
} 

那么,是TI正确设置本地主机:54310,因为我得到了与命令:

hdfs -getconf -nnRpcAddresses 

,或者是:8020?

第二个问题,我需要设置位置?我的Hadoop文件夹是:

/usr/local/hadoop 

,在那里你可以找到在/ etc /斌/ lib中/日志......所以,我需要对我的数据节点设置位置,还是?

第三个问题。当我连接到钻,我经历sqlline,比连接上我的饲养员像:这里

!connect jdbc:drill:zk=localhost:2181 

我的问题是,当我做存储插件,当我连接与ZK来钻去,我可以查询hdfs文件吗?

如果这是一个noob问题,我很抱歉,但我没有在互联网上找到任何有用的东西,或者至少它没有帮助我。 如果你能解释我一些东西,我会非常感激。

回答

2

按照钻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的服务器地址。

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

来到"workspaces"

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

如果您在/user/root/drill hdfs目录下有文件,可以使用此工作区名称查询它们。

例如:abc在此目录下。

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

在成功创建插件,你就可以开始演练,并开始查询。

你可以不管查询任何目录的工作空间。

说出要查询employee.json/tmp/data HDFS目录。

查询:

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

嗯,同时我做了hadoop多节点集群。但是,我仍然无法查询hdfs文件夹。我检查了我的* core-site.xml *并在连接站点:'hdfs:// hadoop-master:9000'。我去了apache drill * dfs *插件和*连接*我写了完全一样的行。我还在hdfs中制作了文件夹,并将其命名为** parquet **。当我试图从钻取查询时,这是我的查询:'SELECT * FROM dfs。'/ parquet/file.parquet';'我得到这个错误: *查询失败:PARSE ERROR: ,列21 1号线,列23:表 'dfs./file.parquet' 未找到 [wq9u34jnj1223在Hadoop主:31010] –

+0

@Superbrain_bug检查我的回答的最后一道防线。它的'符号不是单引号(')现在试试:'''SELECT * FROM dfs.' /拼花/ file.parquet';''' –

+0

是啊是啊,我一直在用他,我想念打字,我SRY 此外,当我试图使用'与HDFS SHOW FILES'://配置,我得到了这样的错误:**查询失败:系统错误:故障处理SQL ** 但是,我可以切换模式。 –

0

我有类似的问题,钻头无法读取DFS服务器。最后,问题是由namenode端口引起的。 namenode网页界面的默认地址是http://localhost:50070/

的NameNode服务器的默认地址为HDFS://本地主机:8020 /。

相关问题