2

私のcsvファイルは次のようになります:

"SMTEX","GSN","KOF",1.71,"2014-01-06 13:32:21"
"NXEX","JS","FIM",1.99,"2014-01-14 09:52:11"
"SMTEX","WT","VUX",0.82,"2014-01-23 02:22:37"

このデータを次の方法でハイブにインポートします。

hive -e 'CREATE TABLE playground.stuff (
             ex_id STRING,
             game_id  STRING,
             user_id       STRING,
             price         FLOAT,
             date          TIMESTAMP)  ROW FORMAT DELIMITED FIELDS TERMINATED BY ",";'
hive -e 'LOAD DATA LOCAL INPATH "/path/to/csv" INTO TABLE playground.stuff;'

ただし、タイムスタンプは解析されていないようです。私が得る出力は次のとおりです。

hive> select * from stuff;
OK
"SMTEX" "GSN"   "KOF"   1.71    NULL
"NXEX"  "JS"    "FIM"   1.99    NULL
"SMTEX" "WT"    "VUX"   0.82    NULL

私は何を間違っていますか?

4

3 に答える 3

1

Github ( https://github.com/ogrodnek/csv-serde ) csv-serde-1.1.2-0.11.0-all.jar に jar があります。ダウンロードして、コマンド プロンプトで Hive クエリを実行しているときに jar を追加します。

(上記Githubリンクより抜粋)

jar パス/to/csv-serde.jar を追加します。

create table my_table(a string, b string, ...) 行フォーマット serde 'com.bizo.hive.serde.csv.CSVSerde' テキストファイルとして保存;

これにより、引用された値で問題が解決しました。

Hue を使用して引用された csv データを Hive にアップロードする場合は、以下のビデオに従ってください。 http://gethue.com/hadoop-tutorial-create-hive-tables-with-headers-and/

于 2016-02-20T22:37:58.030 に答える
1

二重引用符だと思います。形式は「yyyy-mm-dd hh:mm:ss」ではなく、yyyy-mm-dd hh:mm:ss である必要があります。二重引用符も文字列フィールドで終わることに気付くでしょう。

コメントに基づいて回答を編集します。

Hive はネイティブで二重引用符をサポートしていませんが、これを行うことができる csv serde があります: https://github.com/ogrodnek/csv-serde

于 2014-02-25T14:49:28.057 に答える
0

この投稿のタイトルにあるフォーマット文字列を考えると、ライブラリ解析関数を使用する場合、日付/時刻フォーマットの一般的な大文字と小文字が重要であることに注意してください。

MMは月を表し、mmは分を表します。混乱しないように。

24 時間表記のHHと 12 時間表記のhhは、重要な別の例です。

于 2016-02-04T08:22:59.347 に答える