1 原生数据类型案例

文件archer.txt中记录了相关信息,内容如下所示,其中字段之间分隔符为制表符\t,要求在Hive中建表映射成功该文件。

1    后羿  5986    1784    396 336 remotely    archer
2   马可波罗    5584    200 362 344 remotely    archer
3   鲁班七号    5989    1756    400 323 remotely    archer
4   李元芳 5725    1770    396 340 remotely    archer
5   孙尚香 6014    1756    411 346 remotely    archer
6   黄忠  5898    1784    403 319 remotely    archer
7   狄仁杰 5710    1770    376 338 remotely    archer
8   虞姬  5669    1770    407 329 remotely    archer
9   成吉思汗    5799    1742    394 329 remotely    archer
10  百里守约    5611    1784    410 329 remotely    archer  assassin

字段含义:id、name(英雄名称)、hp_max(最大生命)、mp_max(最大法力)、attack_max(最高物攻)、defense_max(最大物防)、attack_range(攻击范围)、role_main(主要定位)、role_assist(次要定位)。

分析一下:字段都是基本类型,字段的顺序需要注意一下。字段之间的分隔符是制表符,需要使用row format语法进行指定。

建表语句:

--创建数据库并切换使用
create database handsome;
use handsome;--ddl create table
create table t_archer(id int comment "ID",name string comment "英雄名称",hp_max int comment "最大生命",mp_max int comment "最大法力",attack_max int comment "最高物攻",defense_max int comment "最大物防",attack_range string comment "攻击范围",role_main string comment "主要定位",role_assist string comment "次要定位"
) comment "王者荣耀射手信息"
row format delimited fields terminated by "\t";

建表成功之后,在Hive的默认存储路径下就生成了表对应的文件夹,把archer.txt文件上传到对应的表文件夹下。

hadoop fs -put archer.txt  /user/hive/warehouse/handsome.db/t_archer

执行查询操作,可以看出数据已经映射成功。

想一想:Hive这种能力是不是比mysql一条一条insert插入数据方便多了?

2 复杂数据类型案例

文件hot_hero_skin_price.txt中记录了手游《王者荣耀》热门英雄的相关皮肤价格信息,内容如下,要求在Hive中建表映射成功该文件。

1,孙悟空,53,西部大镖客:288-大圣娶亲:888-全息碎片:0-至尊宝:888-地狱火:1688
2,鲁班七号,54,木偶奇遇记:288-福禄兄弟:288-黑桃队长:60-电玩小子:2288-星空梦想:0
3,后裔,53,精灵王:288-阿尔法小队:588-辉光之辰:888-黄金射手座:1688-如梦令:1314
4,铠,52,龙域领主:288-曙光守护者:1776
5,韩信,52,飞衡:1788-逐梦之影:888-白龙吟:1188-教廷特使:0-街头霸王:888

字段:id、name(英雄名称)、win_rate(胜率)、skin_price(皮肤及价格)

分析一下:前3个字段原生数据类型、最后一个字段复杂类型map。需要指定字段之间分隔符、集合元素之间分隔符、map kv之间分隔符。

建表语句:

create table t_hot_hero_skin_price(id int,name string,win_rate int,skin_price map<string,int>
)
row format delimited
fields terminated by ','
collection items terminated by '-'
map keys terminated by ':' ;

建表成功后,把hot_hero_skin_price.txt文件上传到对应的表文件夹下。

hadoop fs -put hot_hero_skin_price.txt  /user/hive/warehouse/handsome.db/t_hot_hero_skin_price

执行查询操作,可以看出数据已经映射成功。

select * from t_hot_hero_skin_price;

想一想:如果最后一个字段以String类型来定义,后续使用方便吗?

3 默认分隔符案例

文件team_ace_player.txt中记录了手游《王者荣耀》主要战队内最受欢迎的王牌选手信息,内容如下,要求在Hive中建表映射成功该文件。

1^A成都AG超玩会^A一诺
2^A重庆QGhappy^AHurt
3^ADYG^A久诚
4^A上海EDG.M^A浪浪
5^A武汉eStarPro^ACat
6^ARNG.M^A暴风锐
7^ARW侠^A渡劫
8^ATES滔搏^A迷神
9^A杭州LGD大鹅^A伪装
10^A南京Hero久竞^A清融

字段:id、team_name(战队名称)、ace_player_name(王牌选手名字)

分析一下:数据都是原生数据类型,且字段之间分隔符是\001,因此在建表的时候可以省去row format语句,因为hive默认的分隔符就是\001。

建表语句:

create table t_team_ace_player(id int,team_name string,ace_player_name string
);

建表成功后,把team_ace_player.txt文件上传到对应的表文件夹下。

hadoop fs -put team_ace_player.txt  /user/hive/warehouse/handsome.db/t_team_ace_player

执行查询操作,可以看出数据已经映射成功。

select * from t_team_ace_player;

想一想:字段以\001分隔建表时很方便,那么采集、清洗数据时对数据格式追求有什么启发?你青睐于什么分隔符?

4 指定数据存储路径

文件team_ace_player.txt中记录了手游《王者荣耀》主要战队内最受欢迎的王牌选手信息,字段之间使用的是\001作为分隔符。

要求把文件上传到HDFS任意路径下,不能移动复制,并在Hive中建表映射成功该文件。

create table t_team_ace_player_location(
id int,
team_name string,
ace_player_name string)
location ‘/tmp’;

Hive(6):数据定义语言(DDL)案例相关推荐

  1. 数据操作语言DML及数据定义语言DDL的区别

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 数据操作 ...

  2. 数据定义语言 - DDL

    写在前面:博主是一只经过实战开发历练后投身培训事业的"小山猪",昵称取自动画片<狮子王>中的"彭彭",总是以乐观.积极的心态对待周边的事物.本人的技 ...

  3. 02 数据定义语言DDL

    数据定义语言DDL Data Definition Language-数据定义语言:create / drop / alter 创建数据库 create database school default ...

  4. 【ClickHouse SQL 极简教程】ClickHouse SQL之数据定义语言 DDL

    1.1. ClickHouse SQL之数据定义语言 DDL  本节介绍 ClickHouse 中进行数据库.表结构的定义和管理. 1.1.1. 概述 在SQL中,数据定义语言( DDL ) 用来创建 ...

  5. 带你学MySQL系列 | 什么是数据定义语言(DDL)呢?

    如果你是刚刚学习MySQL的小白,在你看这篇文章之前,请先看看下面这些文章.有些知识你可能掌握起来有点困难,但请相信我,按照我提供的这个学习流程,反复去看,肯定可以看明白的,这样就不至于到了最后某些知 ...

  6. 数据定义语言DDL(保姆级教学)

    目录 DDL: 1.数据库的创建: 2.由于重复创建同名数据库会报错 3.注意如果默认字符集为Latin1,其不支持中文,所以改为: 数据库的创建: 数据表的创建 属性的数据类型 1.数值类型: 2. ...

  7. SQL中数据操作语言 (DML) 和数据定义语言 (DDL)

     可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL). SQL (结构化查询语言)是用于执行查询的语法.但是 SQL 语言也包含用于更新.插入和删除记录的语法. ...

  8. 大数据Hive数据定义语言DDL

    目录 1 数据定义语言(DDL)概述 1.1 DDL语法的作用 1.2 Hive中DDL使用 2 Hive DDL建表基础 2.1 完整建表语法树 3 Hive数据类型详解 3.1 整体概述 3.2 ...

  9. MySQL基础篇:数据定义语言DDL

    文章目录 1.介绍 2.操作数据库Database 创建数据库 查看有哪些数据库 删除数据库 选择数据库 查看当前正在使用哪个数据库 3.表结构的操作 查看当前数据库的所有表 创建表结构 查看表结构 ...

  10. Hive数据定义语言DDL

    文章目录 1 Apache Hive客户端使用 2 Hive编译工具 3 Hive SQL DDL建表基础语法 3.1 Hive数据类型详解 3.2 Hive读写文件机制 3.3 Hive数据存储路径 ...

最新文章

  1. Python翻转字典,以及解决IndentationError: expected an indented block报错!
  2. 7限制cpu使用_Kubernetes 资源配额使用指南 | Linux 中国
  3. CH - 0502 七夕祭(思维+中位数优化+前缀和优化)
  4. Cookiecutter
  5. 给你的网页添加随机BGM背景音乐
  6. ASP.NET中GridView数据导出EXCEL小结
  7. c语言自定义函数案例情景,第4周 C语言及程序设计提高例程-3 体验自定义函数...
  8. matlab 曲线拟合--视频编码中PSNR计算及码率计算
  9. 在超链接href中实现form的提交
  10. ubuntu-安装qt+gdb-imagewatch
  11. PHP代码审计基础知识
  12. vscode利用ssh远程连接linux虚拟机
  13. Python函数的返回值
  14. pyecharts动态图表嵌入ppt
  15. 【数据结构】—— 树状数组
  16. 大宗商品交易平台:解决期货的最后“一公里”
  17. Ubuntu| 学习使用Git和Gitee
  18. java数组常见异常:下标越界、空指针异常
  19. 微信小程序-实现上下、左右布局
  20. 华为穿戴数据同步到微信运动

热门文章

  1. spring 事务中先删除再插入后唯一键冲突 delete then insert duplicate key
  2. 水文预报-分析法推求单位线
  3. 小红书6000浏览量算高吗?笔记浏览量提升技巧看这里
  4. 信用卡使用的诸多误区、技巧
  5. MYSQL 备份到底怎么办,XTRABACKUP 还是 MEB(2)--mysqlbackup MEB
  6. STM32F103VBT6 使用16M晶振和8M晶振 RCC设置有何不同?
  7. Scrapy框架的学习(一)
  8. tio-websocket-server 源码浅析
  9. 你们有了解过前端开发吗?风风雨雨30年,前端开发变迁史
  10. OSChina 周二乱弹 ——寡人不是程序员,不去写bug。