Hive 명령 및 관련 프로필

16925 단어 빅 데이터
Hive 명령 및 관련 프로필
셸 명령
Hive 데이터베이스 조작
db 데이터베이스 만 들 기
create database db;

모든 데이터베이스 보기
show databases;

데이터베이스 경로 및 정보 보기
describe database db;

db 라 는 데이터베이스 삭제
drop database db;

데이터베이스 db 사용
use db;

Hive 데이터 시트 작업
cat 라 는 내부 표를 만 듭 니 다.
create table cat(cat_id string,cat_name string) row format delimited fields terminated by '\t'  stored as textfile;

cat 1 이라는 외부 표를 만 듭 니 다.
create external table cat1(cat_id string,cat_name string);

모든 시계 보기
show tables;

cat 표 구 조 를 수정 하여 두 필드 를 추가 합 니 다.
alter table cat add columns (group_id string,cat_code string);

시계 이름 cat 1 을 cat 2 로 변경 합 니 다.
alter table cat1 rename to cat2;

cat 표 구조 보기
desc cat;

cat 구조 와 같은 표 cat 3 만 들 기
create table cat3 like cat;

데이터 가 져 오기 및 내 보 내기
Hive cat 표 에 Linux 로 컬 파일 가 져 오기
load data local inpath '/data/ab' into table cat;

HDFS 중 / my hive / ab1 의 내용 을 Hive cat 표 에 가 져 옵 니 다.
load data inpath '/myhive/ab1' into table cat;

표 cat 에서 데 이 터 를 cat 2 로 가 져 옵 니 다.
insert into table cat2 select * from cat;

or
insert overwrite table cat2 select * from cat;

표 cat 의 데이터 조회
select * from cat limit 10;

표 cat 의 데 이 터 를 Linux 로 컬 파일 '/ data / out' 로 내 보 냅 니 다.
insert overwrite local directory '/data/out' select group_id,concat('\t',group_name) from cat;

표 cat 의 데 이 터 를 HDFS 로 내 보 냅 니 다.
insert overwrite directory '/myhive2/out' select group_id,concat('\t',group_name) from cat;

표 cat 3 를 만 들 고 cat 에서 데 이 터 를 가 져 옵 니 다.
create table cat3 as select * from cat;

Hive 파 티 션 시트 작업
파 티 션 테이블 goods 만 들 기
create table goods(goods_id string,goods_status string) partitioned by (cat_id string) row format delimited fields terminated by '\t'; 

파 티 션 시트 에 데 이 터 를 가 져 옵 니 다.
1. hive 에 없 으 면 먼저 데 이 터 를 hive 에 올 려 야 합 니 다.
create table goods_1(goods_id string,goods_status string,cat_id string) row format delimited fields terminated by '\t';

2. 데이터 가 hive 에 있 으 면 goods 에 직접 가 져 올 수 있 습 니 다.
insert into table goods partition(cat_id = ‘52052’) select goods_id,goods_status from goods_1 where cat_id='52052';

표 goods 의 파 티 션 보기
show partitions goods;

수정 표 파 티 션
alter table goods partitions(cat_id=52052) rename to partition(cat_id=52051);

goods 의 표 파 티 션 삭제
alter table goods drop if exists partition (cat_id='52051');

Hive 조회
일반 검색
select * from table buyer_log limit 10;

별명 조회
select b.id,b.ip from buyer_log b limit 10;

한정 조회 (where)
select buyer_id from buyer_log where opt_type=1 limit 10;

두 표 또는 여러 표 연합 조회
select l.dt,f.goods_id from buyer_log l,buyer_favorite f where l.buyer_id=f.buyer_id limit 10;

다 중 테이블 삽입
from buyer_log
insert overwrite table buyer_log1 select *
insert overwrite table buyer_log2 select *;

다 중 디 렉 터 리 출력 파일
from buyer_log
insert overwrite local directory '/data/hive3/out' select *
insert overwrite local directory '/data/hive3/out1' select *;

Hive 그룹 정렬
전역 정렬 order by
select * from table goods order by click_num desc limit 10;

부분 정렬 sort by
select * from goods sort by goods_id; 

그룹 검색 그룹 by
select dt,count(buyer_id) from goods group by dt;

distribute by 배포 (데 이 터 는 buyer id 에 따라 여러 파일 에 배포)
insert overwrite local directory '/data/out' select * from goods distribute by buyer_id;

\ # \ # \ # \ # Order by 와 Sort by 비교
Order by 의 조회 결 과 는 모든 데이터 의 전체 정렬 입 니 다. Reduce 수 는 하나 뿐 입 니 다. Reduce 작업 이 힘 들 기 때문에 데이터 양 이 많 으 면 오래 걸 리 고 결과 가 나 오지 않 을 수 있 으 므 로 출력 항목 수 를 지정 해 야 합 니 다.
Sort by 는 모든 Reduce 에서 정렬 을 합 니 다. 그의 Reduce 수 는 여러 개 일 수 있 습 니 다. 이것 은 모든 Reduce 에서 나 온 데이터 가 질서 가 있 음 을 보장 합 니 다. 그러나 여러 개의 Reduce 에서 나 온 데 이 터 를 합 친 것 이 반드시 질서 가 있 는 것 은 아 닙 니 다. 따라서 Sort by 가 부분 정렬 을 마 친 후에 전체 정렬 을 한 번 더 해 야 합 니 다. 먼저 그룹 내 에서 정렬 한 다음 에 각 그룹 을 정렬 하면 됩 니 다.데이터 양 이 많은 상황 에서 적지 않 은 효율 을 높 일 수 있다.
\ # \ # \ # \ # Distribute by 와 Group by 비교
Distribute by 는 설정 한 조건 을 통 해 Map 단 에서 데 이 터 를 나 누 어 Reduce 단 에 주 고 지정 한 필드 에 따라 데 이 터 를 출력 Reduce 파일 로 나 눕 니 다.
Group by 의 역할 은 일정한 규칙 을 통 해 하나의 데이터 세트 를 몇 개의 작은 구역 으로 나 눈 다음 에 몇 개의 작은 구역 에 대해 데이터 처 리 를 하 는 것 이다. 예 를 들 어 한 전자상거래 가 1 년 동안 상품 판매 상황 을 통계 하려 면 Group by 를 이용 하여 1 년 의 데 이 터 를 매달 구분 한 다음 에 매달 잘 팔 리 는 상품 의 10 위 권 을 통계 할 수 있다.
둘 다 Key 값 에 따라 데 이 터 를 구분 하고 Reduce 작업 을 사용 합 니 다. 유일 하 게 다른 것 은 Distribute by 는 단순 한 분산 데이터 일 뿐 Group by 는 같은 Key 데 이 터 를 한데 모 으 고 후속 은 취 합 작업 이 어야 합 니 다.
프로필
환경 변수 설정
vim /etc/profile

#set hive environment
export HIVE_HOME=/usr/hive/apache-hive-2.1.1-bin
export PATH=$PATH:$HIVE_HOME/bin

source /etc/profile

Hive - env. sh 설정
HADOOP_HOME=/usr/hadoop/hadoop-2.7.3

hive-site.xml(slave1)
<configuration>
<property>
  <name>hive.metastore.warehouse.dirname>
  <value>/user/hive_remote/warehousevalue>
property>
<property>
  <name>javax.jdo.option.ConnectionURLname>
  <value>jdbc:mysql://slave2:3306/hive?createDatabaseIfNotExist=truevalue>
property>
<property>
  <name>javax.jdo.option.ConnectionDriverNamename>
  <value>com.mysql.jdbc.Drivervalue>
property>
<property>
  <name>javax.jdo.option.ConnectionUserNamename>
  <value>rootvalue>
property>
<property>
  <name>javax.jdo.option.ConnectionPasswordname>
  <value>123456value>
property>
<property>
  <name>hive.metastore.schema.verificationname>
  <value>falsevalue>
property>
<property>
  <name>datanucleus.schema.autoCreateAllname>
  <value>truevalue>
property>
configuration>

hive-site.xml(master)
<configuration>
<property>
  <name>hive.metastore.warehouse.dirname>
  <value>/user/hive_remote/warehousevalue>
property>
<property>
  <name>hive.metastore.localname>
  <value>falsevalue>
property>
<property>
  <name>hive.metastore.urisname>
  <value>thrift://slave1:9083value>
property>
configuration>

Hive 서버 시작 (slave 1)
$HIVE_HOME/bin/hive --service metastore

Hive client 시작 (master)
$HIVE_HOME/bin/hive

셸 스 크 립 트
vim sh1
cd /apps/hive/bin;
hive -e 'show databases;'

chmod +x sh1
./sh1

좋은 웹페이지 즐겨찾기