「Hive」Hive与MySQL技术差异点(一):数据库数据表的定义和数据的导入导出及删除

本文主要内容

  1. 数据库数据表的定义;

  2. Hive语句注意事项;

  3. DDL语句HQL与MySQL的差异点;

  4. Hive的数据类型及数据类型转换;

  5. 建表分隔符,分区表、分桶表、外部表的技术与意义;

  6. 普通表、分区表和分桶表数据的导入、导出及删除方式和注意事项。

目录

本文主要内容

第一节 数据库数据表定义

0.1 HQL语句注意事项

0.2 Hive-DDL知识图谱

1.1 数据类型

1.1.1 数据类型转换

1.1.2 常用日期函数

1.2 分隔符

1.3 分区表

1.3.1 分区表技术与意义

1.3.2 分区表类型

1.4 分桶表

1.5 外部表

第二节 数据导入导出及删除

2.1 装载/插入数据

2.1.1 普通表

2.1.2 分区表

2.1.3 分桶表

2.2 导出数据

2.3 删除数据

2.3.1 删除所有数据

2.3.2 删除表部分数据


  • MySQL中虽然有表分区,但因为有数据仓库的存在,所以MySQL中就没有介绍了

  • 排序中distribute by 不是排序是分区,sort by + distribute by=cluster by

第一节 数据库数据表定义

0.1 HQL语句注意事项

  • HQL语言大小写不敏感内容(条件where ,if/ case when)HDFS路径名分大小写;

  • HQL可以写在一行或者多行;

  • 关键字不能被缩写也不能分行;

  • 各子句一般要分行写 (美化的问题);

  • 使用缩进提高语句的可读性 (美化的问题);

  • -- 为注释符号(只有这一个);

0.2 Hive-DDL知识图谱

  • 如果想要删除增减字段,建议使用create table 新表 as 旧表,再把旧表删了,这种操作对文件没有影响,只是有一部分关系没有映射而已。
  • Hive与MySQL差异点
  1. 数据表DDL 删除字段HQL语句更加复杂,但表结构一般不会随便更改,这里就不作讲解。

  2. 分区编辑,因为在MySQL阶段没有介绍,所以在这里重点讲解;

  3. 除以上两点,其它语句Hive与MySQL基本一样

  • 创建删除数据库
Create Database if not Exists Lagou_HiveClass;
use Lagou_HiveClass;--使用数据库

1.1 数据类型

  • 1.字符串类型常用String,为了节省空间也用Varchar/Char;

  • 2.Misc类常用Boolean ;Binary——1/0(相当于MySQL中的bit);

  • 3.复合类:示例见“1.2分隔符”建表语句及截图

    1. ARRAY数组——同一种类型(全是姓名;全是ID);

    2. MAP——两种类型{例如:(张三,北京)}

    3. Struct——(列名1,类型1;列名2,类型2;···)

    4. 联合体一般不用,这里不作介绍

  • 4.日期时间类型timestamp类型为HQL专有的类型,而MySQL没有单独的时间戳类型,需要用长整型存储

  • 注意:日期时间类型文件装载时,源文件是("年-月-日")以”-“连接的才能正常显示数据
    • 若源文件数据是("年/月/日")以“/"连接时的,该如何解决?

      1. 先将该字段数据类型改成字符串型(此时,能显示日期数据);

        • alter table 表名 change column 旧列名 新列名 varchar(50);

        • 也可以重新建表改字段类型

      2. 再把字符串类型改成时间类型的数据放入创建的新表,删除旧表;

      create table 新表名 as
      SELECT (旧表原有的其他字段),
        to_date(from_unixtime(unix_timestamp(reg_time,'yyyy/mm/dd'))) as 字段名 
      from 旧表;       --reg_time为旧表日期字段
      drop table 旧表; --此时,数据为正常的年-月-日时间类型

1.1.1 数据类型转换

  1. cast(列名 as 要转换的类型)

  2. convert(数据类型,列名)

  3. 有些操作会自动转换数据类型,如下:

  • ①如果将浮点型的数据转换成int类型的,内部操作是通过round()或者floor()函数来实现的,而不是通过cast实现!

  • ②对于BINARY类型(二进制)的数据,只能将BINARY类型的数据转换成STRING类型。如果你确信BINARY类型数据是一个数字类型(a number),这时候你可以利用嵌套的cast操作。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

满眼凄迷i

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

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

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

打赏作者

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

抵扣说明:

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

余额充值