Hive 转换数据类型后导入表

Hive 的内置数据类型可以分为两大类:基础数据类型和复杂数据类型。其中基础数据类型包括 tinyint,smallint,int,bigint,boolean,float,double,string,binary,timestamp,decimal,char,varchar,date
复杂类型包括array,map,struct,union,这些复杂类型是由基础类型组成的。
而hive数据类型的转换包括隐式转换和显式转换。
比如我们对两个不同数据类型的数字进行比较,假如一个数据类型是INT型,另一个是SMALLINT类型,那么SMALLINT类型的数据将会被隐式转换地转换为INT类型,这个道理和Java中的一样;但是我们不能隐式地将一个INT类型的数据转换成SMALLINT或TINYINT类型的数据,这将会返回错误,除非你使用了CAST操作,就是显式转换。

SELECT name, salary FROM employees
WHERE cast(salary AS FLOAT) < 100000.0;

  这样salary将会显示的转换成float。如果salary是不能转换成float,这时候cast将会返回NULL!
  对cast有一下几点需要说明的:
  (1)、如果将浮点型的数据转换成int类型的,内部操作是通过round()或者floor()函数来实现的,而不是通过cast实现!
  (2)、对于BINARY类型的数据,只能将BINARY类型的数据转换成STRING类型。如果你确信BINARY类型数据是一个数字类型(a number),这时候你可以利用嵌套的cast操作,比如a是一个BINARY,且它是一个数字类型,那么你可以用下面的查询:

SELECT (cast(cast(a as string) as double)) from src;

对于Date类型的数据,只能在Date、Timestamp以及String之间进行转换。下表将进行详细的说明:
Hive 转换数据类型后导入表_第1张图片

你可能感兴趣的:(Hive,大数据入门,hive)