- 设置字段分隔符的时候,如果使用多个字符,实际产生作用的就是第一个。
- 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 作用于后面的所有列