2016-08-31 35 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 /。

相關問題