Hive的DDL--复杂类型的数据表指定分隔符

案例一:

# 创建一个文档,姓名和工作地点之间用制表符'\t'分隔,地点之间以','分隔
[xiaokang@hadoop hive_data]$ vi complex_array.txt
zhangsan        beijing,shanghai,shenzhen
lisi    chengdu,chongqing,guizhou
# 创建表
hive (xiaoliu)> create table complex_array(name string,work_locations array<string>)
              > row format delimited
              > fields terminated by '\t'
              > collection items terminated by ',';
OK
Time taken: 0.08 seconds
# 上传文档至hdfs
[xiaokang@hadoop hive_data]$ hadoop fs -put complex_array.txt /user/hive/warehouse/xiaoliu.db/complex_array
# 查看
hive (xiaoliu)> select * from complex_array;
OK
complex_array.name  complex_array.work_locations
zhangsan  ["beijing","shanghai","shenzhen"]
lisi  ["chengdu","chongqing","guizhou"]
# 映射成功

案例二:

[xiaokang@hadoop hive_data]$ vi t_map.txt
1,小刘,听歌:非常喜欢-跳舞:喜欢-游泳:一般般
2,奕博,打游戏:非常喜欢-篮球:非常喜欢-吃饭:非常喜欢
3,海龙,吃饭:非常喜欢-学习:喜欢
hive (xiaoliu)> create table t_map(id int,name string,hobby map<string,string>)
              > row format delimited
              > fields terminated by ','
              > collection items terminated by '-'
              > map keys terminated by ':';
OK
Time taken: 0.087 seconds
[xiaokang@hadoop hive_data]$ hadoop fs -put t_map.txt /user/hive/warehouse/xiaoliu.db/t_map
hive (xiaoliu)> select * from t_map;
OK
t_map.id  t_map.name  t_map.hobby
1  小刘  {"听歌":"非常喜欢","跳舞":"喜欢","游泳":"一般般"}
2  奕博  {"打游戏":"非常喜欢","篮球":"非常喜欢","吃饭":"非常喜欢"}
3  海龙  {"吃饭":"非常喜欢","学习":"喜欢"}

建表语句的解释:

row format delimited表示使用内置分隔符
fields terminated by ','字段之间采用逗号分隔,因此:"1"是一个字段,"小刘"是一个字段,"唱歌:非常喜欢-跳舞:喜欢-游泳:一般般"是一个字段
collection items terminated by '-'集合元素使用"-"来分割
map keys terminated by ':'集合元素中的key使用’:'分割

案例一、二 小结:

①建表的时候一定要根据结构化数据文件的分隔符类型来指定分隔符
②建表的字段个数和字段类型要跟结构化数据中的个数类型一致
③分隔符一般使用内置的来指定 row format delimited 分割字段 分割集合 等等

案例三

①hive建表的时候默认的分隔符是’\001’,若在建表的时候没有指明分隔符,load文件的时候文件的分隔符需要的是’\001’,若文件分隔符不是’\001’,程序不会报错,但表查询的结果会全部为’null’。
②用vi编辑器Ctrl+v然后Ctrl+a后输入的’^A’即为’\001’

#创建t_t5,不指定分隔符
hive (xiaoliu)> create table t_t5(id int,attention string);
[xiaokang@hadoop hive_data]$ vi t_t5.txt
1^A微信公众号
2^A大象吃西瓜
[xiaokang@hadoop hive_data]$ hadoop fs -put t_t5.txt /user/hive/warehouse/xiaoliu.db/t_t5
hive (xiaoliu)> select * from t_t5;
OK
t_t5.id  t_t5.attention
1  微信公众号
2  大象吃西瓜

您的点赞支持是小编更新文章的最大动力

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小刘新鲜事儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值