2015-07-03 48 views
1

我使用Sqoop 1.4.6在Hadoop中導入數據。 Sqoop以HDFS格式導入數據並將其保存爲無擴展文件,但格式爲csv。我用Apache Drill查詢這個文件中的數據,但得到了Table not found錯誤。在存儲插件配置中,我甚至在擴展中放置了null,空白(「」),空格(「」),但無法查詢文件。甚至當我用擴展名更改文件名時,我能夠查詢文件。將任何擴展名放在配置文件中,而不是空擴展名。我可以查詢以csv格式保存的文件,但擴展名爲'mat'或任何其他文件。使用Apache Drill查詢Extensionless文件

有什麼方法可以查詢無擴展名的文件嗎?

回答

2

您可以在存儲插件配置中使用默認輸入格式來解決此問題。例如:

select * from dfs.`/Users/khahn/Downloads/csv_line_delimit.csv`; 
+-------------------------+ 
|   columns   | 
+-------------------------+ 
| ["hello","1","2","3!"] | 
. . . 

更改文件名來刪除擴展和修改插件配置「位置」和「defaultInputFormat」:

{ 
    "type": "file", 
    "enabled": true, 
    "connection": "file:///", 
    "workspaces": { 
    "root": { 
     "location": "/Users/khahn/Downloads", 
     "writable": false, 
     "defaultInputFormat": "csv" 
    }, 

查詢一個沒有擴展名的文件。

0: jdbc:drill:zk=local> select * from dfs.root.`csv_line_delimit`; 
+-------------------------+ 
|   columns   | 
+-------------------------+ 
| ["hello","1","2","3!"] | 
. . . 
0

我有同樣的經歷。首先,我從oracle導入1個表格到hadoop 2.7.1,然後通過鑽取查詢。這是我的插件配置通過Web界面設置:

{ 
    "type": "file", 
    "enabled": true, 
    "connection": "hdfs://192.168.19.128:8020", 
    "workspaces": { 
    "hdf": { 
     "location": "/user/hdf/my_data/", 
     "writable": false, 
     "defaultInputFormat": "csv" 
    }, 
    "tmp": { 
     "location": "/tmp", 
     "writable": true, 
     "defaultInputFormat": null 
    } 
    }, 
    "formats": { 
    "csv": { 
     "type": "text", 
     "extensions": [ 
     "csv" 
     ], 
     "delimiter": "," 
    } 
    } 
} 

然後,在鑽CLI,這樣的查詢:

USE hdfs.hdf 
SELECT * FROM part-m-00000 

此外,在Hadoop中的文件系統,當我的貓「的內容部分 - m-00000',控制檯上印有以下格式:

2015-11-07 17:45:40.0,6,8 
2014-10-02 12:25:20.0,10,1