2016-05-18 4 views
0

Javaコードを使用してhiveコマンドを実行しようとしています。私のハイブはLinux仮想マシンにインストールされ、Javaコードはクライアントとして動作するリモートWindowsマシン上にあります。私は正常にハイブコマンドを呼び出すことができます:
ハイブ-e '選択* from mytable;'

しかし、loadコマンドで構文を使用しようとしたとき:
ハイブ-e 'LOAD DATA LOCAL INPATH' /home/mapr/file.csv 'INTO TABLE mytable;'

それは私に言ってエラースロー:
hive -e '<hiveコマンド>を使用してhive loadコマンドを実行します。

これは、可能性の高いファイルパスの近くに構文エラーのようだ「FAILED負荷文でStringLiteral近い 『INPATH』を期待して 『/』はParseExceptionライン1時23分不一致入力を」 "Select * from mytable"をエラーなく実行できるので、エスケープ文字の問題です。 誰でもハイブ-eを使用してハイブロードコマンドの構文を教えてもらえますか?

答えて

0

エラーメッセージを見ると、シングルクォートのエスケープ文字を2回使用し、ハイブコマンドをまとめていることが明らかです。

だから、エスケープ文字を区別するために一重引用符と二重引用符を使用するとうまくいきます。

新しいハイブのステートメントは、下記のことができます。

hive -e 'LOAD DATA LOCAL INPATH "/home/mapr/file.csv" INTO TABLE mytable;' 

・ホープこのヘルプあなた!

+0

kudos @Farooque、それは働いて、ありがとう。 –

関連する問題