在直线配置单元中导出为 csv
Export as csv in beeline hive
我正在尝试将我的配置单元 table 导出为直线配置单元中的 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 将 table 存储到本地文件系统上的目录 中。
或者,使用直线,将您的 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
您可以使用此命令以 CSV 格式保存来自 beeline
:
的输出
beeline -u 'jdbc:hive2://bigdataplatform-dev.nam.nsroot.net:10000/;principal=hive/bigdataplatform-dev.net@NAMUXDEV.NET;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
与使用直线相比的一个优点是,如果您在配置单元节点上 运行,则不必提供主机名或 user/pwd。
当某些列的字符串值包含逗号时,tsv(制表符分隔)效果更好
hive --silent=true --verbose=false --outputformat=tsv -e "use <db_name>; select * from <table_name>" > table_name.tsv
CSV 输出格式:
$ beeline -u jdbc:hive2://192.168.0.41:10000/test_db -n user1 -p password **--outputformat=csv2** -e "select * from t1";
自定义分隔符的输出格式:
$ beeline -u jdbc:hive2://192.168.0.41:10000/test_db -n user1 -p password **--outputformat=dsv** **--delimiterForDSV='|'** -e "select * from t1";
运行 命令在后台并重定向到文件:
$nohup `$ beeline -u jdbc:hive2://192.168.0.41:10000/test_db -n user1 -p password --outputformat=csv2 -e "select * from t1"; > output.csv 2> log` &
参考网址:
https://dwgeek.com/export-hive-table-into-csv-format-using-beeline-client-example.html/
https://dwgeek.com/hiveserver2-beeline-command-line-shell-options-examples.html/
我正在尝试将我的配置单元 table 导出为直线配置单元中的 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 将 table 存储到本地文件系统上的目录 中。
或者,使用直线,将您的 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
您可以使用此命令以 CSV 格式保存来自 beeline
:
beeline -u 'jdbc:hive2://bigdataplatform-dev.nam.nsroot.net:10000/;principal=hive/bigdataplatform-dev.net@NAMUXDEV.NET;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
与使用直线相比的一个优点是,如果您在配置单元节点上 运行,则不必提供主机名或 user/pwd。
当某些列的字符串值包含逗号时,tsv(制表符分隔)效果更好
hive --silent=true --verbose=false --outputformat=tsv -e "use <db_name>; select * from <table_name>" > table_name.tsv
CSV 输出格式:
$ beeline -u jdbc:hive2://192.168.0.41:10000/test_db -n user1 -p password **--outputformat=csv2** -e "select * from t1";
自定义分隔符的输出格式:
$ beeline -u jdbc:hive2://192.168.0.41:10000/test_db -n user1 -p password **--outputformat=dsv** **--delimiterForDSV='|'** -e "select * from t1";
运行 命令在后台并重定向到文件:
$nohup `$ beeline -u jdbc:hive2://192.168.0.41:10000/test_db -n user1 -p password --outputformat=csv2 -e "select * from t1"; > output.csv 2> log` &
参考网址:
https://dwgeek.com/export-hive-table-into-csv-format-using-beeline-client-example.html/ https://dwgeek.com/hiveserver2-beeline-command-line-shell-options-examples.html/