问题导读:
1、Hive表数据四种导出方式是?
2、导出命令中LOCAL的作用及有无的区别?
3、导出命令中是否可以向导入命令一样使用INTO?
4、如何自定义导出文件的列分隔符?
5、hive的-e和-f参数的作用及如何使用其来导出数据?
6、hive shell环境中source命令的作用?
我们以test1表为例演示几种数据导出方式,test1表中的数据内容如下:
hive> select * from test1;
OK
Tom 24.0 NanJing Nanjing University
Jack 29.0 NanJing Southeast China University
Mary Kake 21.0 SuZhou Suzhou University
John Doe 24.0 YangZhou YangZhou University
Bill King 23.0 XuZhou Xuzhou Normal University
Time taken: 0.064 seconds, Fetched: 5 row(s)
一、导出数据至本地文件系统
(1) 导出数据
hive> insert overwrite local directory "/home/hadoopUser/data"
> select name,age,address
> from test1;
/home/hadoopUser/data是一个目录,一个文件或者多个文件将会被写到该目录下,具体个数取决于调用的reducer的个数。此处的local表示导出到本地文件系统,如果不加local,则表示导出到分布式文件系统。
(2) 查看导出的数据
Tom^A24.0^ANanJing
Jack^A29.0^ANanJing
Mary Kake^A21.0^ASuZhou
John Doe^A24.0^AYangZhou
Bill King^A23.0^AXuZhou
二、导出数据至分布式文件系统在本地文件系统目录/home/hadoopUser/data中生成了一个000000_0文件,里面的内容如上所示。每个列以^A(八进制\001)分隔。
(1) 导出数据
hive> insert overwrite directory "/output"
> select name,age,address
> from test1;
此处与第一种方法的不同之处就在于没有local关键字,目录/output为分布式文件系统的一个目录,也可以写全:hdfs://master-server/output
(2) 查看导出的数据
结果和第一种方法一样
注意:如果我们将overwrite改成into,就像数据导入表一样,结果会怎么样。
hive&g