使用Apache Drill查询无扩展文件

时间:2015-07-03 11:17:28

标签: apache csv apache-drill sqoop

我使用Sqoop 1.4.6在Hadoop中导入数据。 Sqoop以无扩展名文件导入并保存HDFS中的数据,但采用csv格式。我使用Apache Drill来查询此文件中的数据但是找不到Table not error错误。在Storage Plugin配置中,我甚至将null,空格(“”),空格(“”)放在扩展名中,但无法查询文件。当我用扩展名更改文件名时,我甚至可以查询文件。在配置文件中放置任何扩展名都不是null扩展名。我可以查询以csv格式保存的文件,但扩展名为“mat”或其他任何内容。

有没有办法查询无扩展名文件?

2 个答案:

答案 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