赞
踩
N.1.1 load导入
1)load是本地导入或hdfs导入到hive。 数据操纵语言(Data Manipulation Language, DML) 2)语法: hive (default)> load data [local] inpath '本地文件路径' [overwrite] into table 表名 [partition(1级分区字段=值[,2级分区字段=值]...)] ; 注释: (1)load data:表示加载数据 (2)local:表示从本地加载数据到复制到hive表;否则从HDFS加载数据移动到到hive表 (3)inpath:表示加载数据的路径 (4)overwrite:表示覆盖表中已有数据 (比如分区下有多个文件,如果覆盖,原有的文件都会删除,因为被覆盖),否则表示追加。 (5)into table:表示加载到哪张表 (6)partition:表示上传到指定分区 |
N.1.2 Insert导入
1)Insert 是查询结果导入hive旧表。一般使用在静态分区(需要具体指定) 2)基本插入数据 (目前发现hive插入数据不能指定单个字段插入, 而且要一条的数据插入,插入的字段不能大写要小写) hive (default)> insert into table 表名 [partition(1级分区字段=值[,2级分区字段=值]) values(a,b,...)] ; 3)单张表查询模式插入 hive (default)> insert overwrite into table 表名1 [partition(1级分区字段=值[,2级分区字段=值])] select * from 表名2 [where 分区字段=值]; 注意:overwrite是必要的,不可少。 4)多张表查询模式插入 注释:从表3查询出来的结果给表1和表2做为数据插入,其中表1和表2可以是临时要创建的新字段,也可以是旧字段,当然3个表也可以是相同。 注意:overwrite是必要的,不可少。 hive (default)> from 表名3 insert overwrite table 表名1 [partition(新/旧分区字段=值[,...])] select id, name where 分区字段=值[ and ...] insert overwrite table 表名2 [partition(新/旧分区字段=值[,...])] select id, name [where 分区字段=值[ and ...]] |
N.1.3 As Select导入
1)As Select是查询结果导入到hive新表。 hive (default)>create table [ if not exists ] 表名 [ as select 列名 from 查询表名 ] 注意:不支持创建外部表,不能使用external。 |
N.1.4 Location导入
1)创建hive表时通过Location指定加载数据路径。 2)创建表,并指定在hdfs上的位置 hive (default)>create [ external ] table [ if not exists ] 表名 [ (列名 类型 [comment '注释'], ...) ] [ location /路径/表名 ] 而hdfs中create的表名在hdfs是看不到的,只有 location 的表名可以看到,虽然上下的两个表名可以不一致,但是一般使用一样容易区分,这样就该表下如果有数据就可以进行访问。 |
N.1.5 Import导入
1)import导入是不通过查询从一个hive旧表导入到另外一个hive旧表的方法。 2)注意:先用export导出到中间目录(导出会附带有一个元数据文件),然后中间目录再import数据导入。 hive (default)> export table 表名1 to '中间目录'; --中间目录自定义 hive (default)> import table 表名2 from '中间目录'; 3)这里到导入不是分区表,如果要是用分区表就要加 partition 4)注释: 表名1的数据要导入给表名2 ,表的结构是要相同的,内部表对内部表,外部表对外部表,且字段结构个数都要相同。 |
N.2.1 Insert导出
1)将查询的结果导出到本地,数据之间无间隔(无分隔的话,在本地查看文件是数据堆砌在一起的) 没有路径的话会自动创建路径。这里的overerite都是必有的,不可以缺少。 hive (default)> insert overwrite local directory '本地路径' select * from 表名; 2)将查询的结果格式化导出到本地,数据之间"\t"间隔 (无分隔的话,在本地查看文件是数据堆砌 在hive执行select的结果一样) hive (default)> insert overwrite local directory '本地路径' row format delimited fields terminated by '分隔符' select * from 表名; 3)将查询的结果导出到HDFS上(没有local) 注:虽然同是HDFS,但不是copy操作,它是移动操作 hive (default)> insert overwrite directory 'hdsf路径'' row format delimited fields terminated by '分隔符' select * from student; |
N.2.2 Hadoop命令导出
hive (default)> dfs -get hdfs路径 本地路径; |
N.2.3 HiveShell命令导出
基本语法:(hive -f/-e 执行语句或者脚本 > file(自己创建)) “-e”不进入hive的交互窗口执行sql语句,>表示追加。 [itstar@bigdata111hive]$ hive -e 'select * from default.student;' > 本地路径; |
N.2.4 Export导出
hive (default)> export table 表名 to 'hdfs路径'; |
N.2.5 Sqoop导出
(后续讲) |
注意:Truncate只能删除管理表即内部表的表中数据,不能删除外部表中数据 hive (default)> truncate table 表名; |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。