hive创建表

hive默认的记录和字段分隔符

分隔符描述
\n对于文本文件来说,每一行都是一条记录,换行符可以分割记录
^A用于分割字段。
^B用户分割Array 和 Struct 中的元素。或Map键值对。
^CMap中键和值的分割。


建表时可以不采用这些默认分隔符,指定使用其他分隔符。当有其他程序使用不同的规则写数据时,这是非常必要的。


CREATE TABLE employees(

name STRING,

salary FLOAT,

subordinates ARRAY<STRING>,

deductions MAP<STRING,FLOAT>,

address STRUCT<street:STRING, city:STRING, state:STRING, zip :INT>

)

ROW FORMAT DELIMITED    -------(这是一组关键字,必须要写写在其他设置分隔符(含字段分隔符,map、struct 分隔符前面

[COLLECTION ITEMS TERMINATED BY '\002' ] ---------(这是array 等的分隔符,一般需用修改。)

FIELDS TERMINATED BY '\t';


以上是修改默认字段分隔符,指定为\t的语句,一般也就需要修改这里而已。


下面定义一个按照逗号进行分隔的表。


CREATE TABLE some_table(

first STRING,

second FLOAT,

third DOUBLE

)

ROW FORMAT DELIMITED

FIELDS TERMINATED BY ',' ;


Hive 的读时模式

当用户想传统数据库写入数据时候,不管是采用装载外部数据的方式,还是采用将一个查询的输出结构写入的方式,或者是使用UPDATE 语句时,数据库对于存储

都具有完全的控制力。传统数据库是写实模式,即数据在写入数据库时对模式进行检查。


Hive 对底层存储并没有这样的控制。对于Hive要查询的数据,有很多种方式对其进行创建,修改,设置损坏。因此Hive 不会在数据记载时进行验证,而是在查询时进行,也就是读时模式。


如果模式和文件内容不匹配的话,如果每行记录中的字段个数少于对应的欧式中定义的字段个数的话,建辉看到查询结果中有很多的null值。如果某些字段是数值型的,但是hive在读取时发现存在非数值型的字符串值的时候,哪些字段将会返回null。除此之外hive,都激励尝试尽可能将各种错误恢复过来。



创建数据库和表可以指定路径。对于不想使用默认的表路径,那么最好是使用外部表。















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值