如何以csv2格式从beeline hive下载数据?
How to download data from beeline hive in csv2 format?
我在通过直线从配置单元下载数据时遇到问题。
我想将 table 下载到以 csv 作为字段分隔符的文件中。如果列值有逗号,则该值需要用引号引起来。
我知道beeline 为这个用例提供了输出格式csv2。
但我没有得到预期的结果。
我为此创建了包含数据的示例 table。
0: jdbc:hive2://ip:10000/default> DESC samp_ret;
+-------------+------------+----------+--+
| col_name | data_type | comment |
+-------------+------------+----------+--+
| intvar | int | |
| stringvar1 | string | |
| stringvar2 | string | |
+-------------+------------+----------+--+
3 rows selected (0.081 seconds)
0: jdbc:hive2://ip:10000/default> SELECT * FROM samp_ret ;
+------------------+----------------------+----------------------+--+
| samp_ret.intvar | samp_ret.stringvar1 | samp_ret.stringvar2 |
+------------------+----------------------+----------------------+--+
| 1 | one,ONE | One |
| 2 | 2 | Two |
| 3 | | Three |
| 4 | four,FOUR | |
| 5 | five'FIVE | Five |
| 6 | six',SIX | Six |
+------------------+----------------------+----------------------+--+
6 rows selected (0.164 seconds)
我正在尝试将此数据下载到应用程序服务器,但出于某种原因,我没有看到包含用引号引起来的逗号的记录。
使用的直线命令是,
beeline -u jdbc:hive2://ip:10000/default?zeroDateTimeBehavior=round -n yumecorp yumehive org.apache.hive.jdbc.HiveDriver --showHeader=false --outputformat=csv2 --silent -e "SELECT * FROM dev.samp_ret " > /tmp/samp_ret.out
输出为 ,
如您在输出中所见,如果列值包含逗号,则显示为 ^@
如果我在这里遗漏了什么,请告诉我。
导出下面属性在shell执行你的beeline命令之前
bash$ export HADOOP_CLIENT_OPTS="-Ddisable.quoting.for.sv=false"
然后执行beeline导出命令
beeline -u jdbc:hive2://ip:10000/default?zeroDateTimeBehavior=round -n yumecorp yumehive org.apache.hive.jdbc.HiveDriver --showHeader=false --outputformat=csv2 --silent -e "SELECT * FROM dev.samp_ret " > /tmp/samp_ret.out
示例:
我在
之后的表中有 2 个字符串列
hive> select * from i;
+-------+---------+--+
| i.id | i.name |
+-------+---------+--+
| 1 | kl,kl |
| 2 | ll,mm |
+-------+---------+--+
现在导出到 name 列值
中包含“”的 csv 文件
bash$ export HADOOP_CLIENT_OPTS="-Ddisable.quoting.for.sv=false"
bash$ beeline --showHeader=false --outputformat=csv2 --silent -e "SELECT * FROM default.i" > samp_ret.out
bash$ cat samp_ret.out
1,"kl,kl"
2,"ll,mm"
有关详细信息,请参阅此 hive Jira。
我在通过直线从配置单元下载数据时遇到问题。
我想将 table 下载到以 csv 作为字段分隔符的文件中。如果列值有逗号,则该值需要用引号引起来。
我知道beeline 为这个用例提供了输出格式csv2。
但我没有得到预期的结果。
我为此创建了包含数据的示例 table。
0: jdbc:hive2://ip:10000/default> DESC samp_ret;
+-------------+------------+----------+--+
| col_name | data_type | comment |
+-------------+------------+----------+--+
| intvar | int | |
| stringvar1 | string | |
| stringvar2 | string | |
+-------------+------------+----------+--+
3 rows selected (0.081 seconds)
0: jdbc:hive2://ip:10000/default> SELECT * FROM samp_ret ;
+------------------+----------------------+----------------------+--+
| samp_ret.intvar | samp_ret.stringvar1 | samp_ret.stringvar2 |
+------------------+----------------------+----------------------+--+
| 1 | one,ONE | One |
| 2 | 2 | Two |
| 3 | | Three |
| 4 | four,FOUR | |
| 5 | five'FIVE | Five |
| 6 | six',SIX | Six |
+------------------+----------------------+----------------------+--+
6 rows selected (0.164 seconds)
我正在尝试将此数据下载到应用程序服务器,但出于某种原因,我没有看到包含用引号引起来的逗号的记录。
使用的直线命令是,
beeline -u jdbc:hive2://ip:10000/default?zeroDateTimeBehavior=round -n yumecorp yumehive org.apache.hive.jdbc.HiveDriver --showHeader=false --outputformat=csv2 --silent -e "SELECT * FROM dev.samp_ret " > /tmp/samp_ret.out
输出为 ,
如您在输出中所见,如果列值包含逗号,则显示为 ^@
如果我在这里遗漏了什么,请告诉我。
导出下面属性在shell执行你的beeline命令之前
bash$ export HADOOP_CLIENT_OPTS="-Ddisable.quoting.for.sv=false"
然后执行beeline导出命令
beeline -u jdbc:hive2://ip:10000/default?zeroDateTimeBehavior=round -n yumecorp yumehive org.apache.hive.jdbc.HiveDriver --showHeader=false --outputformat=csv2 --silent -e "SELECT * FROM dev.samp_ret " > /tmp/samp_ret.out
示例:
我在
之后的表中有 2 个字符串列hive> select * from i;
+-------+---------+--+
| i.id | i.name |
+-------+---------+--+
| 1 | kl,kl |
| 2 | ll,mm |
+-------+---------+--+
现在导出到 name 列值
中包含“”的 csv 文件bash$ export HADOOP_CLIENT_OPTS="-Ddisable.quoting.for.sv=false"
bash$ beeline --showHeader=false --outputformat=csv2 --silent -e "SELECT * FROM default.i" > samp_ret.out
bash$ cat samp_ret.out
1,"kl,kl"
2,"ll,mm"
有关详细信息,请参阅此 hive Jira。