1

Sqoop 1.4.6 を使用して Hadoop にデータをインポートしました。Sqoop は、HDFS のデータを拡張子のないファイル (csv 形式) にインポートして保存します。Apache Drill を使用してこのファイルからデータをクエリしましたが、Table not found エラーが発生しました。ストレージ プラグインの構成で、拡張子に null、空白 ("")、スペース (" ") を入れても、ファイルをクエリできませんでした。拡張子を付けてファイル名を変更した場合でも、ファイルを照会できました。構成ファイルに拡張子を入れても、null 拡張子以外は機能します。csv 形式で保存されたファイルをクエリできますが、拡張子は「mat」などです。

拡張子のないファイルを照会する方法はありますか?

4

2 に答える 2

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!"]  |
. . .
于 2015-07-22T21:31:32.600 に答える
0

私も同じ経験があります。まず、Oracle から Hadoop 2.7.1 に 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 ファイル システムで、「part-m-00000」の内容を cat すると、次の形式がコンソールに出力されます。

2015-11-07 17:45:40.0,6,8
2014-10-02 12:25:20.0,10,1
于 2015-11-30T20:56:36.720 に答える