2016-09-19 18 views
4

ビーラインハイブでcsvとしてハイブテーブルをエクスポートしようとしています。 !sql select * from database1 > /user/bob/output.csvというコマンドを実行すると、構文エラーが発生します。ビーラインハイブでcsvとしてエクスポート

この時点で、以下のコマンドを使用して正常にデータベースに接続しました。クエリはコンソールで正しい結果を出力します。

beeline -u 'jdbc:hive2://[databaseaddress]' --outputformat=csv 

また、ファイルがどこで終わるかはあまり明確ではありません。 hdfsのファイルパスは正しいはずですか?

答えて

7

でローカルファイルシステムでその出力を得ることができます。

INSERT OVERWRITE LOCAL DIRECTORY '/tmp/directoryWhereToStoreData' 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY "\n" 
SELECT * FROM yourTable; 

ハイブ/ビーラインテーブルをローカルファイルシステム上のディレクトリに格納する。


また、真っすぐで、yourSQLFile.sqlであなたのSELECTクエリを保存して実行します。

beeline -u 'jdbc:hive2://[databaseaddress]' --outputformat=csv2 -f yourSQlFile.sql > theFileWhereToStoreTheData.csv 

また、これは、ローカルファイルシステム内のファイルに結果を格納します。


ハイブから、HDFSにどこかにデータを格納します。これは、取得するための別のオプションです

hdfs dfs -getmerge /WhereDoYou/Like 

CREATE EXTERNAL TABLE output 
LIKE yourTable 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n' 
LOCATION 'hfds://WhereDoYou/Like'; 

INSERT OVERWRITE TABLE output SELECT * from yourTable; 

は、あなたが使用してローカルファイルにデータを収集することができますビーラインのみを使用するデータ:

env HADOOP_CLIENT_OPTS="-Ddisable.quoting.for.sv=false" beeline -u "jdbc:hive2://your.hive.server.address:10000/" --incremental=true --outputformat=csv2 -e "select * from youdatabase.yourtable" 

に取り組んで:

Connected to: Apache Hive (version 1.1.0-cdh5.10.1) 
Driver: Hive JDBC (version 1.1.0-cdh5.10.1) 
Transaction isolation: TRANSACTION_REPEATABLE_READ 
Beeline version 1.1.0-cdh5.10.1 by Apache Hive 
+0

私は気づいた一つ奇妙なことをANA名を削除...それを改善するためにいくつかの努力をすることができ'-e'クエリの後に置くか、クエリスイッチを使って' -f'ファイルを置くとうまく動作します。奇妙なことに、これらは名前付き引数だと思ったが、beelineはクエリ後のargsを無視するようだ。私はデフォルトの表形式を使い続けました。 – Davos

+0

Hadoopエコシステムが進行中のため、バージョンを追加してください。 – ozw1z5rd

+0

私はAWSでこれを使用しています。もし私が 'beeline --version'を実行すると、Hive 2.3.2-amzn-0 – Davos

0

異なるオプションがあります。

1)ビーライン出力がどのように出力されるかを制御し、それをlinuxでファイルに保存するだけです。例えば

真っすぐ--outputformat = CSV2 xxx>のoutput.csvより多くの制御とパフォーマンスを向上させるため

2)私はかつて、ほとんどのJavaツールを書きました(下のビーラインのヘルプから関連するパラメータを参照してください)。実際にはほんの数行のjdbcコードです。

3)そして最後にアナが書いた。 YopuはテーブルをHDFSの外部テーブルに書き込み、必要な出力フォーマットを指定するだけです。

で終了し、外部テーブルのテスト行形式区切られたフィールドを作成するよう

「|」ロケーション "/ tmp/myfolder" as select * from mytable;

ハイブバージョンが、実行することができ、少なくとも0.11.0であるときは、その後、

HadoopのFS -getmergeを/ tmp/myfolderなどmyoutput.csv

+0

あなたの答えは、HDPのフォーラムからコピーされて、あなたはまた、 '「doesnの--outputformat'、 – hisi

関連する問題