Hiveテーブルをbeeline Hiveのcsvとしてエクスポートしようとしています。コマンド!sql select * from database1 > /user/bob/output.csv
を実行すると、構文エラーが発生します。
以下のコマンドを使用して、この時点でデータベースに正常に接続しました。クエリは、コンソールに正しい結果を出力します。
beeline -u 'jdbc:Hive2://[databaseaddress]' --outputformat=csv
また、ファイルがどこで終わるかはあまり明確ではありません。 hdfsのファイルパスが正しいはずですか?
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
さまざまなオプションがあります。
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
このコマンドを使用して、出力を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
次は私のために働いた
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