Hive命令使用记录

简介: Hive命令使用记录

Hive命令使用记录


a53fa7633514475fa766316fab7a2e3e.jpeg


操作一些常用的Bash Shell 命令:


> hive>紧跟一个"!" 号+Bash Shell 命令, 结尾加";"。

hive>!pwd;hive>!ls /home/user


操作HDFS 平台相关的命令:


去掉HDFS 平台命令前的Hadoop 关键字,其他保留,以";"号结尾。

hive>dfs -ls /


注释:相当于

[zhangsan@node01-]$ hadoop dfs -ls/


命令查询的结果,但不同的是Hadoop dfs 每次运行的时候都会`单独启用一个JVM`, 而

hive>dfs -ls /

命令是在 单线程 下运行的, 感觉上比前者快很多。



查看当前使用的数据库

通过`current_database()`查看当前使用的数据库。

hive>SELECT current_database();OK
Default
hive>


也可以通过 hive.ch.print.current.db  参数设定来显示当前数据是哪一个,如果值为true, 则显示当前数据信息, 为false 则不显示当前数据信息。


hive>set hive.cli.print.current.db=true;hive (default)>set hive.cli.print.current.db=false;hive>


其中default 说明当前使用的是默认的数据库default。



创建表的时候通过location 指定数据存储位置, 加载数据

load data inpath '/test/employees.txt' into table employee;


注意:

在通过location 指定数据存储位置时,要注意HDFS 已经存在的数据的存储格式。Hive

属于典型的 读时模式设计 , 如果原有HDFS 文件目录构成中, 指定表名所在文件夹下 既有文件夹又有文件 , 数据读时会出现 NULL值 现象。


在进行数据加载时,每次加载一回,系统都会在指定表的位置增加一个文件,由于HDFS

不适合小文件的存储, 故用户在进行数据加载时, 应注意一批加栽数据不要过小, 以免出

现小文件过多的情况。



隐式类型转换的规则如下


  • 任何整数类型可以隐式地转换为一个范围更广的类型。
  • 所有整数类型、FLOAT 和STRING 类型都能隐式转换为DOUBLE 。
  • TINYINT 、SM凡LINT 和INT 都可以转换为FLOAT 。
  • BOOLEAN 类型不能转换为其他任何类型。
  • TIMESTAMP 可以被隐式转换为STRING。


使用 cast 操作 显式 进行数据类型转换, 如cast('l'AS INT) 是把字符串 '1' 转换成整数值1 。


例如:对于员工表employee, salary 列是使用FLOAT 数据类型的。现在,假设这个字段使用的数据类型是STRING, 那么如何才能将其作为FLOAT 值进行计算呢?

SELECT name, salary FROM employee
WHERE cast (salary ASFLOAT)<100000.0;


如果例子中的salary 字段的值不是合法的浮点数字符串, Hive 会返回NULL 。


类型转换函数的语法是cast(value AS Type), 如果强制类型转换失败, 例如执行cast('x'AS INT),表达式就会返回空值NULL。


注意:将浮点数转换成整数的推荐方式是round()或者floor()函数,而不是使用类型转换操作符cast。


下例在求所有"Income Taxes" 大于0.1 的值, 本应只查询出"ManagerWang" 一条数据, 却查出了3 条数据。


hive>SELECT uname, salary, deductions FROM user info where deductions ["Income Taxes"]>0. 1;OK
ManagerWang 12000.0{"Income Taxes":0.2,"Provident Fund":0.1,"Insurance":0.13)ManagerLi 8000.0{"Income Taxes":0.1,"Provident Fund":0.08,"Insurance":0.13}ManagerZhao 7000.0{"·Income Taxes":0.1,"Provident Fund":0.08,"Insurance":0.13)Time taken:0.794 seconds, Fetched:3 row(s)


hive>DESC userinfo;OK
uname
salary
subordinates
deductions
string
floatarray<string>map<string,float>address struct<province:string,city:string,zip:int>


为什么会发生这样的情况?


原来用户写一个浮点数(如0.1) 时, Hive会将该值保存为 double型 , 而之前定义deductions这个Map的值的类型是float型的, 这意味着Hive将隐式地将税收减免值(deductions)转换为double类型后再进行比较。


但此例中, 0.1 的最近似的精确值应 略大于 0.1, 0.1 对于float类型是0.1000001, 而对于double类型是0.100000000001。这是因为 8个字节的double值具有更多的小数位 。当表中的float值通过Hive转换为double值时, 其产生的double值是0.1000000100000,

这个值实际要比0.100000000001 大。


结束!

目录
相关文章
|
SQL 分布式计算 Shell
Hive教程(05)- Hive命令汇总(上)
Hive教程(05)- Hive命令汇总(上)
247 0
|
SQL HIVE
50 Hive显示命令
50 Hive显示命令
44 0
|
SQL 分布式计算 Hadoop
|
4月前
|
SQL 存储 分布式计算
Linux退出Hive命令
【8月更文挑战第14天】
|
7月前
|
SQL 数据库 HIVE
Hive【基础知识 05】常用DDL操作(数据库操作+创建表+修改表+清空删除表+其他命令)
【4月更文挑战第8天】Hive【基础知识 05】常用DDL操作(数据库操作+创建表+修改表+清空删除表+其他命令)
112 0
|
SQL 分布式计算 HIVE
Hive教程(05)- Hive命令汇总(下)
Hive教程(05)- Hive命令汇总(下)
138 0
Hive教程(05)- Hive命令汇总(下)
|
7月前
|
SQL 分布式计算 分布式数据库
Hive命令大全
Hive命令大全
117 2
|
SQL 分布式计算 Hadoop
Hive的安装与配置——第2关:Hive Shell入门基础命令
Hive的安装与配置——第2关:Hive Shell入门基础命令
1453 0
Hive的安装与配置——第2关:Hive Shell入门基础命令
|
SQL IDE 开发工具
Python脚本执行hive SQL命令
Python脚本执行hive SQL命令
|
SQL 分布式计算 Hadoop
Apache Hive--DDL--修改表&amp;显示命令| 学习笔记
快速学习 Apache Hive--DDL--修改表&amp;显示命令
114 0
Apache Hive--DDL--修改表&amp;显示命令| 学习笔记