[随笔][Hive][记事本]

喜欢而已 提交于 2019-12-01 22:19:30
  • 设置字段分隔符的时候,如果使用多个字符,实际产生作用的就是第一个。
  • create table lilybak row format delimited fields terminated by "hello" as select name, age from lily; 生成的文件中的分隔符就是一个h字符。
  • 如果一个字段没有只,那么对应的就是null。

外部表和内部表

  • 一个表为管理表,删除表的的元数据的时候存储表数据的目录一同被删除,无论这个目录是hive创建的还是创建的时候已经存在的。
  • 一个外部表,删除表的元数据的时候存储表的数据的目录不被删除,无论这个目录是hive创建的还是已经存在的。
  • 创建一个表的时候,如果不使用location关键字,则使用默认的创建位置和默认的目录名字。无论是管理表还是外部表,都可以在创建的时候指定存储目录。

  • 分区:按照某些字段的取值将数据分目录存放。数据在存储的时候需要手动指定分区,也就是指定将数据存储在哪个子目录下。
  • 分桶:对某个字段进行哈希,哈希相同的存放到同一个文件中,防止热块。这个处理起来可能比较慢,不是简单的拷贝,需要读取文件然后存文件。

  • 试图是一个逻辑表,元数据中纪录了该表中的每个字段对应着哪个表的哪个字段,本身在文件系统中并没有创建用于存储该表的数据的目录。

  • load data 是原样拷贝。如果目标目录中不存在同名文件,则文件名都不改变,如果存在,则使用文件名_copy_id的方式命名。
  • 如果使用overwrite,则目标表的对应的目录会被删除,然后创建要给用于存储目标表的目录。
  • 如果inpath给的是一个目录,则把该目录下所有的文件都导入。

  • 如果一个字段是空值,那么和这个字段有关的所有数学表达式的结果都是空值NULL。
  • distinct 作用于后面的所有列

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!