1.行格式和指定分隔符:
row format delimited --行格式
FIELDS TERMINATED BY ' ' --指定列分隔符
'任意字符' ----》按照里面的内容进行分隔
2.把本地数据加载到表中
本地数据加载到表中的实质是拷贝/复制,命令如下:
load data local inpath '本地文件路径' into table teacher;
3.把文件上传的数据加载到hdfs中
3.1 先在hdfs上建一个文件夹,命令如下:
第一步:hadoop dfs -mkdir /文件名;
eg:hadoop dfs -mkdir /test
3.1.2把本地文件,上传到hdfs上的刚建的文件夹下,命令如下:
第二步:hadoop dfs -put 本地文件名称 /hdfs上文件夹的名称
eg:hadoop dfs -put aa.txt /test
4.把hdfs文件加载到本地
4.1hdfs数据加载到表中其实质是剪切,命令如下:
load data inpath 'hdfs上的文件路径' into table 表名(hive中的表名)
eg:load data inpath '/test/aa.txt' into table teacher ;
5.内部表和外部表特点:
-- 内部表的特点:
-- 1.创建表的时候没有关键字
-- 2.数据默认存储到hdfs上的/user/hive/warehouse/
-- 3.删除内部表,表会直接删除元数据和存储数据
-- 外部表特点:
-- 1.外部表关键字:external
-- 2.外部表数据存储路径自定义
-- 3.删除外部表,表仅仅会删除元数据,并不会删除数据
6.分区表特点:
-- 分区表
-- 分区表是将数据以文件夹为分区单位分割的一种表
-- 大白话:一个分区一个文件夹 可以有多个文件
7.hive中4个by的区别
order by
全局排序,只有一个reduce;
缺点:当数据量非常大时,耗时太长,效率低下,适用于数据量较小的场景;
优点:数据全局排序;
sort by
对每一个reducer内部的数据进行排序,全局结果集来说不是排序的,即只能保证每一个reduce输出的文件中的数据是按照规定的字段进行排序的;适用于数据量较大,但对排序要求不严格的场合,可以大幅度提升执行效率;
备注:需要你预先设置reduce个数,结果各个reduce文件内部有序,全局无序;
Distrbute By
类似MR中Partition,进行分区,结合sort by使用。
这边需要设置reduces的数量为分区的数量,否则不会启动相应的reducer去进行任务的执行,这最终会导致不能完全分区;
Cluster By
当Distribute by和Sorts by字段相同时,可以使用Cluster by方式。Cluster by除了具有Distribute by的功能外还兼具Sort by的功能。但是排序只能是升序排序,不能指定排序规则为ASC或者DESC。