Hive 명령 및 관련 프로필
16925 단어 빅 데이터
셸 명령
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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
spark 의 2: 원리 소개Google Map/Reduce 를 바탕 으로 이 루어 진 Hadoop 은 개발 자 에 게 map, reduce 원 어 를 제공 하여 병렬 일괄 처리 프로그램 을 매우 간단 하고 아름 답 게 만 들 었 습 니 다.S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.