第十四天:hive命令行操作



第14天:Cli命令行操作讲解
 hive命令行
 使用静音模式执行一个查询,把结果集导出


 $HIVE_HOME/bin/hive -S -e 'select a col from tab1 a' > tab1.csv


 不进入交互模式,执行一个hive script


 $HIVE_HOME/bin/hive -f /home/my/hive-script.sql  :-f执行一个文件


 hive-script.sql是使用hive sql语法编写的脚本文件,执行的
 过程和-e类似,区别是从文件加载sql


但是sql文件,对于bash来说,不能使用变量,而使用-e的方式,
可以在bash里使用变量(但是对于sql文件的形式,
可以利用程序基于变量动态生成sql文件,在执行,稍微麻烦点);


这里可以和静音模式-S 联合使用,通过第三方程序调用,
第三方程序通过hive的标准输出获取结果集。




我理解的意思是:
不用进入hive的命令行模式啊,
直接这样执行,能把login表中的信息打印出来,
然后你可以在后面加上> 重定向符号,这样可以把
打印的信息,输入到一个 .sql 或者.cvs里面。
hive -e 'select * from login'; 
> hadoop/hive/hivetest.txt








执行一个查询
hive -e 'select a col from tab1 a'
之后过程中,会在中断上显示mapreduce的进度,执行完毕后,
最后把查询结果输出到终端上,
接着hive进程退出,不会进入交互模式。
使用静音模式执行一个查询, hive -S -e 'select * from login'
加入 -S 终端上的输出不会有mapreduce的进程,
执行完毕,,只会把查询结果输出到终端上面,这个静音模式
很实用 通过第三方程序的调用,第三方程序通过hive的标准
输出获取结果集。


hive Cli常用操作
hive交互式模式
当 $HIVE_HOME/bin/hive 执行时,
没有-e 或者-f 选项,会进入交互式shell模式下


quit 退出交互式shell
exit 退出交互式shell


reset 重置配置为默认
set= 修改特定变量的值
注意:如果变量名拼写错误,不会报错


set 输出用户要覆盖的hive的配置变量
set -v 输出所有hadoop和hive的配置变量


add file
add mr
add archive 添加一个活多个file,jar,archive到分布式缓存


list file
list jar
list archive 输出已经添加到分布式缓存的资源


delete file
delete jar
delete archive   从分布式缓存红棕移除指定的资源


! command 从hive shell执行一个shell命令
dfs 从hiveshell执行一个dfs命令
《query string 执行一个hive查询,然后输出结果到标准输出
source file 在cli里执行一个hive脚本文件。






hive数据类型
列类型
hive支持的数据类型如下:
原生类型:
tinyint
smallint
int
bigint
boolean
float
double
string
binary(hive 0.8以上才支持
timestamp(hive 0.8以上才可用


复杂类型:
arrays:array
maps:map
structs; struct
union


union类型
union
类型可以在同一时间点,保持恰好有一个指定的数据类型,
您可以使用create_union的UDF创建一个实例类型。
create table union_test(foo uniontype
,struct>);


select foo from union_test;


{0,1}
{1.2,0}
{2,["three","four"]}


常量
数值类型:
默认,数值类型认为是int,除非
int超出了int的范围,那么会被解释为bigint
或者是如下的后缀,在数值中呗使用
 type postfix example
 tinyint   Y 100Y
 smallint  S 100S
 bigin   L     100L


 字符串类型
  字符串可以使用单引号(') 或者(“)
  hive在字符串中使用C-style的转义
  浮点类型
  浮点类型数值,呗假定为双浮点类型,目前
  不支持科学计数法


  null值的处理
  遗漏的值按代表为特殊值null,要导入null字段
  的数据,需要查阅使用serDe的文档,
  默认的文本格式使用lazy





你可能感兴趣的:(__Hive)