Hive学习(二)-数据导入及导出
来源:互联网 发布:大堀惠 知乎 编辑:程序博客网 时间:2024/05/18 23:13
首先,要知道HIve中表的列(field)是以何种方式分隔的。
Hive表中默认的记录何字段分割符
分隔符描述\n对于文本文件来说,每行都是一条记录,因此换行符可以进行分隔^A(Ctrl+A)用于分隔字段(列),在create table语句中可以使用八进制编码\001表示^B用于分隔ARRAY或者struct中的元素,或用于MAP中键-值对之间的分隔。在create table语句中可以使用八进制编码\002表示^C用于MAC中键何值之间的分隔。在create table语句中可以使用八进制编码\003表示
对于常见的文本文件,比如.CSV和.TSV格式的文件,它们分别是以逗号(,)和制表符(\t)进行列分割的。
现在创建一张表:
hive> create table MAC1SN(ID int,MAC string,CPLSH string,SN string) row format delimited fields terminated by ',';
该表以逗号进行列分隔。
一.数据导入
1.从文件导入
现在上传数据到MAC1SN中。数据在文件234.csv中,该文件在本地文件系统的用户主目录(~)下面。
hive> load data local inpath '234.csv' into table mac1sn;Loading data to table default.mac1snOKTime taken: 25.792 secondshive> dfs -ls -R /user/hive/warehouse;Found 1 itemsdrwxr-xr-x - zhang supergroup 0 2017-04-20 10:23 /user/hive/warehouse/mac1sn-rwxr-xr-x 1 zhang supergroup 4295 2017-04-20 10:23 /user/hive/warehouse/mac1sn/234.csvhive>
可以看到数据已经上传成功了。
使用load data命令时,需要注意,当使用local关键字时,是从本地加载;如果不使用local关键字,是从hdfs加载。
2.查询导入
先创建一张新表(mac2sn),结构和mac1sn一样。
hive>create table mac2sn like mac1sn;
现在将从mac1sn查询到的数据导入到mac2sn:
hive> insert into table mac2sn select * from mac1sn where ID>100;
hive> select * from mac2sn;
OK
101 00231F70CDC6 042540 I331150423S042540
102 00231F70CD82 042541 I331150423S042541
103 00231F70CD99 042542 I331150423S042542
104 00231F70D8B0 042543 I331150423S042543
Time taken: 0.752 seconds, Fetched: 4 row(s)
hive>
可以看到数据导入成功了。
3.查询创建表并加载数据
hive> create table mac3sn as select * from mac1sn where ID between 80 and 85;
hive> select * from mac3sn;
OK
80 00231F70D9B6 042519 I331150423S042519
81 00231F70D94E 042520 I331150423S042520
82 00231F70E46A 042521 I331150423S042521
83 00231F70DE17 042522 I331150423S042522
84 00231F70D94A 042523 I331150423S042523
85 00231F70D988 042524 I331150423S042524
Time taken: 0.69 seconds, Fetched: 6 row(s)
hive>
4.分区表导入
先创建一张分区表
hive> create table macsn(ID string,MAC string,CPLSH string,SN string) partitioned by(Pro string) row format delimited fields terminated by ',';
注意:创建分区表时,partitioned一定要写在row等关键字的最前面。
hive> load data local inpath '234.csv' into table macsn partition(Pro='SC');hive>select * from mac1sn;
可以看到有5列数据,最后一列的值是'SC'。
二.数据导出
将查询的结果导出到目标文件中:
方法1:
zhang@Desktop1:~$ hive -e "select * from mac1sn where ID>100";#这里演示查询
Logging initialized using configuration in jar:file:/usr/local/apache-hive-2.1.1-bin/lib/hive-common-2.1.1.jar!/hive-log4j2.properties Async: true
OK
101 00231F70CDC6 042540 I331150423S042540
102 00231F70CD82 042541 I331150423S042541
103 00231F70CD99 042542 I331150423S042542
104 00231F70D8B0 042543 I331150423S042543
Time taken: 14.932 seconds, Fetched: 4 row(s)
zhang@Desktop1:~$ hive -S -e "select * from mac1sn where ID>100" > ~/query.txt;#这里将查询到的结果导出到query.txt
zhang@Desktop1:~$ cat ~/query.txt
101 00231F70CDC6 042540 I331150423S042540
102 00231F70CD82 042541 I331150423S042541
103 00231F70CD99 042542 I331150423S042542
104 00231F70D8B0 042543 I331150423S042543
zhang@Desktop1:~$
其中的-e命令表示命令执行结束后hive CLI立即退出;-S命令可以开启静默模式,这样在输出结果中去掉“OK”,“Time taken”等行以及其他一些无关紧要的东西。
方法2:
hive> insert overwrite local directory 'query' select * from mac1sn where ID between 80 and 85;//将查询结果导入数据到本地的query文件夹中
hive>!ls query;
000000_0
hive> !cat query/000000_0;
8000231F70D9B6042519I331150423S042519
8100231F70D94E042520I331150423S042520
8200231F70E46A042521I331150423S042521
8300231F70DE17042522I331150423S042522
8400231F70D94A042523I331150423S042523
8500231F70D988042524I331150423S042524
hive>
如果导入时不加入local关键字,则是导入到hdfs中。可以使用"dfs -cat 导入目录"查看导入结果。
- Hive学习(二)-数据导入及导出
- Hive 导入导出数据
- hive数据导入导出
- hive 导入导出数据
- hive导入导出数据
- hive导入/导出数据
- hive 使用方法-建表及导入导出数据(一)
- Hive数据导入和导出
- hive导入和导出数据
- Hive数据导入和导出
- hive导入导出数据案例
- hive 数据的导入导出
- Hive 之 导入导出数据
- hive&&beeline 数据导入导出
- Hive数据导入、sqoop数据导入导出
- hive学习笔记——Hive表中数据的导入和导出
- Hive的数据导入导出,插入,加载
- Hive常用数据导入导出总结
- Device supports x86, armeabi-v7a, but APK only supports armeabi 设备x86
- md5.JS
- iOS开发 OC与java相对应的3DES加解密
- RCNN SPPNET FastRCNN FasterRCNN YOLO SSD系列深度学习检测方法梳
- 这是一个密码记录
- Hive学习(二)-数据导入及导出
- 内存泄漏问题及解决
- Spring Aop
- ueditor使用过程遇到的问题
- 【笔记】数据库--Database Design(尚待完善)
- EL表达式之sessionScope
- Java四种引用类型
- 使用ESP8266制作一个微型气象站
- 过滤从linux抓取的空字符串