2016-09-02 7 views
1

ハイブでjavaプログラムを使用してデータをロードしようとしています。私は自分のマシンからファイルをロードしています。データをロードするウィンドウ内のファイルパスを使用してクエリハイブ

stmt.executeQuery("load data local inpath 'file:///C:/sample/Documents/sample1.txt' into table " + tablename); 

私は、データがハイブに正しくセットされている

stmt.executeQuery("load data local inpath '/home/sample/sample1.txt' into table " + tablename); 

Ubuntuマシンでプログラムを実行するとき、私は、私はしかし、次の例外

Caused by: java.lang.RuntimeException: java.net.URISyntaxException:Expected scheme-specific part at index 2: C: 
    at java.net.URI$Parser.fail(URI.java:2829) 
    at java.net.URI$Parser.failExpecting(URI.java:2835) 
    at java.net.URI$Parser.parse(URI.java:3038) 
    at java.net.URI.<init>(URI.java:753) 

を取得しています。このプログラムを実行するとデータベース。

Windowsでプログラムを実行すると例外が発生します。これをどうすれば解決できますか?

+0

まず、ローカルからHadoopにデータを送信する必要があると思います。 'hadoop fs -put'のJava API equiを検索するために、データがHadoopに入ったら、簡単にデータを読み込むことができます。 – abhiieor

+0

HDFSの@abhiieor ya私はファイルにアクセスすることができます。私の疑問は、Ubuntuマシンでプログラムを実行するときです。ファイルパスを変更してWindowsを試してみると、上記の例外が表示されます。 –

答えて

0

Windowsのパス(Uri)構文はubuntuとは異なります。 ubuntuでは、Windowsの場合と同様にバックスラッシュを使用してフォワードスラッシュを使用します。

Windowsの場合:C:\ Users \ユーザーシステム\デスクトップ\デシベル

のLinux:/home/sample/sample1.txt」

だから、URIの構文を変更してみてください。

+0

パスを変更したときに次の例外が発生します。原因:java.lang.RuntimeException:java.net.URISyntaxException:絶対パスの絶対パスでの相対パス –

+0

ローカルのキーワードとfile://を使用していると思います。これを試してください:ローカルのC:\ sample \ Documents \ sample1.txt内のローカルデータを読み込みます。あなたはローカルキーワードを使用しているときにファイルシステムを言及する必要はありません。 –

+0

私は 'C:\ sample \ Documents \ sample1.txt'のようなパスを与えると、無効なエスケープシーケンスのようなエラーが表示されるので、この 'C:\\ sample \\ Documents \\ sample1.txt'同じ例外と私はパスからfile://を削除しました。 –

関連する問題