23

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

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

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

また、ファイルの最終的な場所が明確ではありません。hdfsの正しいファイルパスである必要がありますか?

4

4 に答える 4

39

ハイブのバージョンが少なくとも 0.11.0 の場合、次を実行できます。

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

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


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

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

また、これにより、結果がローカル ファイル システムのファイルに保存されます。


ハイブから、データを 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
于 2016-09-23T20:17:40.143 に答える