【问题标题】:Query Extensionless File using Apache Drill使用 Apache Drill 查询无扩展名文件
【发布时间】:2015-12-01 04:56:36
【问题描述】:

我使用 Sqoop 1.4.6 在 Hadoop 中导入数据。 Sqoop 将 HDFS 中的数据导入并保存在无扩展名的文件中,但采用 csv 格式。我使用 Apache Drill 从该文件中查询数据,但得到 Table not found 错误。在存储插件配置中,我什至在扩展名中添加了空、空白(“”)、空格(“”),但无法查询文件。当我使用扩展名更改文件名时,即使我能够查询文件。将任何扩展名放在配置文件中都可以使用空扩展名。我可以查询以 csv 格式保存但扩展名为“mat”或其他任何内容的文件。

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

【问题讨论】:

    标签: apache csv apache-drill sqoop


    【解决方案1】:

    您可以在存储插件配置中使用默认输入格式来解决此问题。例如:

    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!"]  |
    . . .
    

    【讨论】:

      【解决方案2】:

      我也有同样的经历。首先,我将 1 个表从 oracle 导入到 hadoop 2.7.1,然后通过钻查询。这是我通过 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": ","
          }
        }
      }
      

      然后,在 Drill cli 中,像这样查询:

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

      另外,在 hadoop 文件系统中,当我 cat 'part-m-00000' 的内容时,控制台上会打印以下格式:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-19
        • 2015-04-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多