我使用Sqoop 1.4.6在Hadoop中导入数据。 Sqoop以无扩展名文件导入并保存HDFS中的数据,但采用csv格式。我使用Apache Drill来查询此文件中的数据但是找不到Table not error错误。在Storage Plugin配置中,我甚至将null,空格(“”),空格(“”)放在扩展名中,但无法查询文件。当我用扩展名更改文件名时,我甚至可以查询文件。在配置文件中放置任何扩展名都不是null扩展名。我可以查询以csv格式保存的文件,但扩展名为“mat”或其他任何内容。
有没有办法查询无扩展名文件?
答案 0 :(得分:2)
您可以在存储插件配置中使用默认输入格式来解决此问题。例如:
select * from dfs.`/Users/khahn/Downloads/csv_line_delimit.csv`;
+-------------------------+
| columns |
+-------------------------+
| ["hello","1","2","3!"] |
. . .
更改文件名以删除扩展名并修改插件配置" location"和" 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!"] |
. . .
答案 1 :(得分:0)
我有同样的经历。首先,我从oracle导入了1个表到hadoop 2.7.1,然后通过drill查询。这是我通过Web UI设置的插件配置:
{
"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文件系统中,当我抓住' part-m-00000'的内容时,控制台上会打印以下格式:
2015-11-07 17:45:40.0,6,8
2014-10-02 12:25:20.0,10,1