可以根据导出的地方不一样,将这些方式分为三种:
1.导出到本地文件系统;
2.导出到HDFS中;
3.导出到Hive的另一个表中
一、保存结果到本地
方法1:调用hive标准输出,将查询结果写到指定的文件中
这个方法最为常见,sql的查询结果将直接保存到/tmp/out.txt中
$ hive -e "select user, login_timestamp from user_login" > /tmp/out.txt
当sql脚本过多时,也可以使用 -f sql文件名 ,按下面的方式执行查询,并保存结果
$ hive -f file.sql > /tmp/out.txt
下面是file.sql的内容:
$ cat file.sql
select user, login_timestamp from user_login
方法2:使用INSERT OVERWRITE LOCAL DIRECTORY结果到本地
hive> insert overwrite local directory "/tmp/out/"
> select user, login_time from user_login;
这条HQL的执行需要启用Mapreduce完成,运行完这条语句之后,将会在本地文件系统的/tmp/out/目录下生成文件,这个文件是Reduce产生的结果(这里生成的文件名是000000_0)
我们也可以在导出时指定字段分割符:
hive> insert overwrite local directory "/tmp/out/&