启动虚拟环境——>打开xshell
输入start-all.sh 启动所有Hadoop服务
输入jps 查看hadoop所有服务是否正常启动(共6项服务)
输入ls / 查看指定目录下所有文件,/代表根目录
输入cd /opt 进入opt目录
输入ls 查看opt目录下所有文件
输入cd module 进入module目录
输入ls
输入cd apache-hive.3.1.1-bin/ 进入apache
输入hive 进入hive环境
2.2 DDL语言
2.2.2 创建表——数据类型
show databases; -- 查看所有数据库
create database lagou; --创建lagou数据库
show databases; --查看所有数据库
use lagou; --进入lagou数据库
show tables; --查看该数据库下的表
create table 表名(id int,name string); --创建一个表
show create table 表名; --查看建表信息
desc 表名; --查看表结构
浏览器输入
http://192.168.5.100:50070/explorer.html#/user/hive/warehouse/lagou.db/test_create_table
选择utilities——>browse the file system查看刚才出创建的数据库和表
insert into向表中插入一条数据
select * from 表 --查看表中的数据
再刷新浏览器,就会出现刚才插入的记录
创建外部表:关键字——external
create external talbe text_external_1(id int,name string) location '/datas/test_external_1'
路径必须加引号。如果未指定路径,该外部数据库与text_create_table在同一位置下。路径的最后的名称最好与数据库名一致,否则HDFS环境与hive中的名字会不一致。
去浏览器中查看可以看到datas目录下有text_external_1表
向该外部表中插入一条数据并查看
like复制表结构,不复制数据
comment为表或字段增加描述
查询建表法——create [external] table 表名 as select 语句; 复制表结构+数据
2.2.3 创建表——分隔符
(1)字段(fields)分隔符
语法:fields terminated by '\t'
-- 设置字段分隔符
create table test_delimit(id int,name string) row format delimited fields terminated by '^B';
-- 查看字段分隔符
desc formatted test_delimit;
(2)数组array类型成员分隔符
语法:collection items terminated by ','
-- 指定|为字段分隔符,,为数据分隔符 create table sales_info( sku_id string comment '商品id', sku_name string comment '商品名称', id_array array<string> comment '商品相关id列表') row format delimited fields terminated by '|' collection items terminated by ',';
装载数据
load data local inpath '/home/hadoop/datas/data1.txt' overwrite into tablesales_info;
(3)map字典的key-value分隔符
语法:map keys terminated by ':';
先在hive中创建好表结构
create table mapkeys( sku_id string comment '商品id', sku_name string comment '商品名称', state_map map<string,string> comment '商品状态信息') row format delimited fields terminated by '|' collection items terminated by ',' map keys terminated by ':';
在linux虚拟环境中创建本地文件
(4)行分隔符(必须放在最后,目前仅支持\n)
语法:lines terminated by '\n'
(5)使用多字符作为分隔符
使用MultiDelimitSerDE实现
--创建多分割符表 CREATE TABLE test_MultiDelimit(id int, name string ,tel string) ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe' WITH SERDEPROPERTIES ("field.delim"="##") STORED AS TEXTFILE;