我正在尝试将我的 hive 表导出为beeline hive 中的csv。当我运行命令!sql select * from database1 > /user/bob/output.csv
时,它给了我语法错误。
我现在已使用以下命令成功连接到数据库。该查询在控制台上输出正确的结果。
beeline -u 'jdbc:hive2://[databaseaddress]' --outputformat=csv
另外,不清楚文件的最终位置。应该是hdfs中的文件路径正确吗?
最佳答案
当配置单元版本至少为0.11.0时,您可以执行:
INSERT OVERWRITE LOCAL DIRECTORY '/tmp/directoryWhereToStoreData'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY "\n"
SELECT * FROM yourTable;
从hive / beeline将表存储到本地文件系统上的目录中。
或者,使用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
这是仅使用beeline获取数据的另一种选择:
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配置单元中导出为csv,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39577036/