大数据学习

Hive 基本操作

2018-06-30  本文已影响11人  袭明

准备工作

最好浏览器打开地址:http://master:50070,以便直观的查看hdfs上的文件。【master为安装hive的节点ip对应的hostname】

1. 数据库操作

1.1 创建数据库
create database wj123;
//或
create schema wj111;
1.2 查看数据库
show databases;
1.3 删除数据库
drop database wj123;
1.4 使用数据库
use wj111;

2. 表的操作

2.1 创建表加载数据

官方文档有关于表的创建的详细范式,有需要的可以 这里查看。

这里只列举几个简单的例子以供参考,我的宗旨是:流程先走通,细节慢慢打磨:)

例1:给定user-logs-large.txt文件,在hive上创建user_logs 表,加载相应数据

create table user_logs (
user_name string,
action_type string,
ip_address string
)
row format delimited
fields terminated by '\t'
stored as textfile;
load data inpath '/test/user/log/user-logs-large.txt' overwrite into table user_logs;
2.2 创建外部表加载数据

首先区分一下什么是外部表,什么是内部表

外部表创建范式:

CREATE EXTERNAL TABLE page_view(viewTime INT, userid BIGINT,
     page_url STRING, referrer_url STRING,
     ip STRING COMMENT 'IP Address of the User',
     country STRING COMMENT 'country of origination')
 COMMENT 'This is the staging page view table'
 ROW FORMAT DELIMITED FIELDS TERMINATED BY '\054'
 STORED AS TEXTFILE
 LOCATION '<hdfs_location>';

例2:给定province_user.txt文件,创建外部表加载province_user 数据。

前两步同例1,上传文件到hadoop目录/test/user/province_user.

建表语句:

create external table if not exists province_user(
  user_id string,
  user_name string,
  province_type int,
  gender_type string,
  province_name string
)
row format delimited
fields terminated by ';'
location '/test/user/province_user';    
2.3 使用serder正则表达式的形式加载access_log数据文件
drop table if exists access_log;
create external table access_log(
  host STRING,
  identity STRING,
  auser STRING,
  access_time STRING,
  request STRING,
  status STRING,
  size STRING,
  referer STRING,
  agent STRING
)
row format serde 'org.apache.hadoop.hive.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
  "input.regex" = "([^ ]*) ([^ ]*) ([^ ]*) (-|\\[[^\\]]*\\]) ([^ \"]*|\"[^\"]*\") (-|[0-9]*) (-|[0-9]*)(?: ([^ \"]*|\"[^\"]*\") ([^ \"]*|\"[^\"]*\"))?"
)
STORED AS TEXTFILE
location '/external/access_log_20160429';

总结: delimited 适用于文本;serde适用于二进制文件,需要正则解析的原数据文件

2.4 复制表

只复制表结构

create table access_log_copy like access_log
2.5 克隆表

不止复制表结构,还复制表数据

create table access_log_clone as 
select * from access_log
2.6 把access_log 表中满足某条件的日志单独放到一个表中,并且用orc的格式来存储
create table access_log_s
stored as orc
as
select * from access_log where 【某条件】

上一篇下一篇

猜你喜欢

热点阅读