web-dev-qa-db-ja.com

ビーラインハイブでcsvとしてエクスポート

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

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

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

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

17
Defcon

Hiveバージョンが0.11.0以上の場合、次を実行できます。

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

hive/beelineからテーブルを保存しますディレクトリにローカルファイルシステムに。


または、ビーラインを使用して、SELECTクエリをyourSQLFile.sqlに保存し、次を実行します。

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

また、これは結果をローカルファイルシステムに保存しますファイルに


Hiveから、データをHDFSのどこかに保存するには:

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;

次に、次を使用してデータをローカルファイルに収集できます。

hdfs dfs -getmerge /WhereDoYou/Like

これは、ビーラインのみを使用してデータを取得する別のオプションです。

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
26
ozw1z5rd

さまざまなオプションがあります。

1)ビーライン出力の作成方法をポイントまで制御し、それをLinuxでファイルに保存するだけです。例えば

beeline --outputformat = csv2 xxx> output.csv(以下のbeelineヘルプの関連パラメーターを参照)

2)より制御し、パフォーマンスを向上させるために、私は少しJavaツールを1回作成しました。実際には数行のjdbcコードのみです。

3)そして最後にアナが書いたように。 Yopuは、HDFSの外部テーブルにテーブルを書き込むだけで、必要な出力形式を指定できます。

いいね

'|'で終了する外部テーブルテストROW FORMAT区切りフィールドの作成ロケーション「/ tmp/myfolder」を選択* mytableから;

次に、ローカルファイルシステムでその出力を取得できます

hadoop fs -getmerge/tmp/myfolder myoutput.csv

0
AMRESH PANDEY

このコマンドを使用して、出力をCSV形式でbeelineから保存できます。

beeline -u 'jdbc:Hive2://bigdataplatform-dev.nam.nsroot.net:10000/;principal=Hive/[email protected];ssl=true' --outputformat=csv2 --verbose=false  --fastConnect=true   --silent=true -f $query_file>out.csv

SQLクエリファイルを$ query_fileに保存します。

結果はout.csvになります。

ここに完全なサンプルがあります: hivehoney

0
Alex B

次は私のために働いた

Hive --silent=true --verbose=false --outputformat=csv2 -e "use <db_name>; select * from <table_name>" > table_name.csv


ビーラインを使用することの利点の1つは、Hiveノードで実行している場合、ホスト名またはユーザー/パスワードを指定する必要がないことです。

一部の列にカンマを含む文字列値がある場合、tsv(タブ区切り)の方が適切に機能します

Hive --silent=true --verbose=false --outputformat=tsv -e "use <db_name>; select * from <table_name>" > table_name.tsv
0
smishra