- 빅데이터 탐색 개요
- 빅데이터 탐색에 활용되는 기술
- 탐색 파일럿 실행 1단계 - 탐색 아키텍처
- 탐색 파일럿 실행 2단계 - 탐색 환경 구성
- 탐색 파일럿 실행 3단계 - 탐색 기능 구현
- 탐색 파일럿 실행 4단계 - 탐색 기능 테스트
- 5개 주제 영역의 Mart 구성
- SmartCar 상태 정보 데이터 생성 100대
- SmartCar 상태 정보 적재 - 플럼을 통해 수집
- SmartCar 운전자 운행 로그 데이터 생성 100대
- HBase 적재 확인
- 레디스 과속차량 확인
- 주제영역 1. 스마트카 상태 정보 모니터링 - 워크플로 작성
- 주제영역 2. 스마트카 운전자 운행 기록 - 워크플로 작성
- 주제영역 3. 이상 운전 패턴 스마트카 정보 - 워크플로 작성
- 주제영역 4. 긴급 점검이 필요한 스마트카 정보 - 워크플로 작성
- 주제영역 5. 스마트카 운전자 차량 용품 구매 이력 정보 - 워크플로 작성
서버의 부하를 줄여주기 위해 사용하지 않는 것들은 중지!
- CM 카프카, 플럼 중지
- 모바텀에서 레디스 중지
휴 사이트 접속, 로그인
탐색 파일럿 실행 4단계 - 데이터탐색 기능 구현 및 테스트
- 데이터 탐색 자동화와 마트 구성
- External 적재 데이터 => Managed 통합 시키는 우지 워크플로우 잡
- Managed 영역과 Mart 영역을 하나의 절차로 구성
5개 주제 영역의 Mart 구성
- 주제 영역1: 스마트카의 상태 모니터링 정보
- 주제 영역2: 스마트카의 운전자의 운행 기록 정보
- 주제 영역3: 이상 운전 패턴 스마트카 정보
- 주제 영역4: 긴급 점검이 필요한 스마트카 정보
- 주제 영역5: 운전자의 차량용품 구매 이력 정보
주제 영영 1. 스마트카 상태 정보 모니터링 - 워크플로 작성
- 하이브 External => Managed 영역으로 매일 옮기기
- "스마트카 마스터 데이터"와 Join 통해 데이터 확장
- 작업 QL : CH06/HiveQL
- CM > Oozie > 시작
- 휴 > 브라우저 > 문서 > 새문서 > 새 폴더
- /workflow/hive_script/subject1~5 폴더 생성
- subject1폴더로 이동 > 새문서 > Hive 쿼리
create table if not exists Managed_SmartCar_Status_Info (
car_number string,
sex string,
age string,
marriage string,
region string,
job string,
car_capacity string,
car_year string,
car_model string,
tire_fl string,
tire_fr string,
tire_bl string,
tire_br string,
light_fl string,
light_fr string,
light_bl string,
light_br string,
engine string,
break string,
battery string,
reg_date string
)
partitioned by( biz_date string )
row format delimited
fields terminated by ','
stored as textfile;
예제파일[그림-6.69.hql]을 쿼리가 있는 부분으로 끌어오면 입력이 된다.
- create_table_managed_smartcar_status_info.hql 생성
- 그림-6.69.hql > 저장
- 기존 External영역의 smartcar_status_info, smartcar_master 칼럼으로 구성
- subject1폴더로 이동 > alter_partition_smartcar_status_info.hql 생성
- 파일 클릭 > 우측 메뉴 > 파일 편집 > 그림-6.70.hql > 저장
- 파티션 정보 추가
alter table SmartCar_Status_Info add if not exists partition(wrk_date='${working_day}');
- working_day 값은 Oozie의 Coordinator 매개변수 today 할당 값을 가져옴
- subject1폴더로 이동 > insert_table_managed_smartcar_status_info.hql 생성
- 파일 클릭 > 우측 메뉴 > 파일 편집 > 그림-6.71.hql > 저장
< 그림-6.71.hql >
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
insert overwrite table Managed_SmartCar_Status_Info partition(biz_date)
select
t1.car_number,
t1.sex,
t1.age,
t1.marriage,
t1.region,
t1.job,
t1.car_capacity,
t1.car_year,
t1.car_model,
t2.tire_fl,
t2.tire_fr,
t2.tire_bl,
t2.tire_br,
t2.light_fl,
t2.light_fr,
t2.light_bl,
t2.light_br,
t2.engine,
t2.break,
t2.battery,
t2.reg_date,
substring(t2.reg_date, 0, 8) as biz_date
from SmartCar_Master_Over18 t1 join SmartCar_Status_Info t2
on t1.car_number = t2.car_number and t2.wrk_date = '${working_day}';
- 동적 파티션 생성 시 하이브 환경 변수값 설정
- set hive.exec.dynamic.partition=true; set hive.exec.dynamic.partition.mode=nonstrict;
- SmartCar_Master_Over18 , SmartCar_Status_Info 테이블 조인
SmartCar_Master_Over18 t1 join SmartCar_Status_Info t2
JOIN 종류 4가지
1. inner
2. outer
3. left
4. right
JOIN을 특징으로 분류했을 때 2가지
1. 목차 의 성격
2. 색인 의 성격
기본 문법, 기본CRUD
그룹바이, 조인 등 기본 쿼리는 개발자들도 알고 있어야 한다. 뷰까지.
좀 더 DB를 공부하고 싶으면 INDEX (빨리 검색하기 위한 목적) 정도까지.
- 내부 조인은 이러한 테이블 간의 공통 영역 (위 다이어그램의 녹색 음영 영역), 즉 테이블 1과 테이블 2간에 공통된 모든 레코드를 반환합니다.
어제 만든 테이블 잘 만들었는지 확인
- 휴 > 쿼리 > 스케줄러 > Workflows > 편집기 > HiveServer2 스크립트
하이브 테이블 만들기
- HiveSever2 스크립트 추가 > workflow/hive_script/subject1/create_table_managed_smartcar_status_info.hql 선택 후 추가
SmartCar_Status_Info 테이블에서 오늘 날짜로 파티션 정보 설정 작업
- HiveSever2 스크립트 추가 > workflow/hive_script/subject1/alter_partition_smartcar_status_info.hql 선택 후 추가
- 매개변수 연결 : working_day=${today}
managed_smartcar_status_info 테이블에 데이터 저장 하기
- HiveSever2 스크립트 추가 > workflow/hive_script/subject1/ insert_table_managed_smartcar_status_info.hql 선택 후 추가
- 매개변수 연결 : working_day=${today}
My Workflow => Subject 1 - Workflow 변경 후 > 저장
작성한 워크플로 작동을 위한 Schedule 생성
- 휴 > 쿼리 > 스케줄러 > 예약
- Subject 1 - Schedule 이름 변경
- 워크플로 선택 > Subject 1 - Workflow선택
간격 > 옵션 > 스케줄 작성
- 실행 간경: 매일, 01시
- 시작일자: 2020년 09월 05일, 00시 00분
- 종료일자: 2020년 09월 05일, 23시 59분
- 시간대: Asia/Seoul
- 매개변수 설정 : today / 매개변수 / ${coord:formatTime(coord:dateTzOffset(coord:nominalTime(),"Asia/Seoul"), 'yyyyMMdd')}
- 저장 > 제출
작성한 워크플로 작동을 위한 Coodinator 확인
- 휴 > Job > Job Browser > 일정
작성한 워크플로 바로 작동 시키기
- 휴 > 상단 메뉴 > 문서 > Subject1 - Workflow 선택
- 매개변수 설정 : today / 매개변수를 Hive managed_smartcar_status_info 테이블 wrk_date 값으로 직접 입력 > wrk_date=20220905
- 저장 > 제출
주제 영역 2. 스마트카 운전자 운행 기록(실시간) - 워크플로 작성
- Hive 로 smartcar_drive_info 조회
- select * from smartcar_drive_info order by date desc limit 5;
- 운전자 운행데이터(HBase) => 우지 워크플로워 => Managed Mart
- 운전자 운행데이터와 스마트카 마스터 데이터를 조인해서 확장된 운행 데이터 생성
- 작업 QL : CH06/HiveQL
- 휴 > 상단 메뉴 > 문서 > workflow/hive_script/subject2
HBase 테이터를 Hive로 재구성 할 테이블
- create_table_smartcar_drive_info_2.hql 생성
- 파일 클리 > 우측 메뉴 > 파일 편집 > 그림-6.97.hql > 저장
create external table if not exists SmartCar_Drive_Info_2 (
r_key string,
r_date string,
car_number string,
speed_pedal string,
break_pedal string,
steer_angle string,
direct_light string,
speed string,
area_number string
)
partitioned by( wrk_date string )
row format delimited
fields terminated by ','
stored as textfile
location '/pilot-pjt/collect/drive-log/'
- insert_table_smartcar_drive_info_2.hql 생성
- 파일 클릭 > 우측 메뉴 > 파일 편집 > 그림-6.98.hql > 저장
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
insert overwrite table SmartCar_Drive_Info_2 partition(wrk_date)
select
r_key ,
r_date ,
car_number ,
speed_pedal ,
break_pedal ,
steer_angle ,
direct_light ,
speed ,
area_number ,
substring(r_date, 0, 8) as wrk_date
from SmartCar_Drive_Info
where substring(r_date, 0, 8) = '${working_day}';
운행정보와 스마트카 마스터 데이터 조인 테이블
- create_table_managed_smartcar_drive_info.hql 생성
- 파일 클릭 > 우측 메뉴 > 파일 편집 > 그림-6.99.hql > 저장
- insert_table_managed_smartcar_drive_info.hql 생성
- 파일 클릭 > 우측 메뉴 > 파일 편집 > 그림-6.100.hql > 저장
워크플로 만들기
- 휴 > 쿼리 > 스케줄러 > Workflows > 편집기 > HiveServer2 스크립트
하이브 테이블 만들기
- HiveSever2 스크립트 추가 > workflow/hive_script/subject2/create_table_smartcar_drive_info_2.hql 선택 후 추가
- HiveSever2 스크립트 추가 > workflow/hive_script/subject2/insert_table_smartcar_drive_info_2.hql 선택 후 추가
- 매개변수 연결 : working_day=${today}
- HiveSever2 스크립트 추가 > workflow/hive_script/subject2/create_table_managed_smartcar_drive_info.hql 선택 후 추가
- HiveSever2 스크립트 추가 > workflow/hive_script/subject2/insert_table_managed_smartcar_drive_info.hql 선택 후 추가
- 매개변수 연결 : working_day=${today}
My Workflow => Subject 2 - Workflow 변경 후 > 저장
작성한 워크플로 작동을 위한 Schedule 생성
- 휴 > 쿼리 > 스케줄러 > 예약
- Subject 2 - Schedule 이름 변경
- 워크플로 선택 > Subject 2 - Workflow선택
간격 > 옵션 > 스케줄 작성
- 실행 간경: 매일, 02시
- 시작일자: 2020년 09월 05일, 00시 00분
- 종료일자: 2020년 09월 05일, 23시 59분
- 시간대: Asia/Seoul
- 매개변수 설정 : today / 매개변수 / ${coord:formatTime(coord:dateTzOffset(coord:nominalTime(),"Asia/Seoul"), 'yyyyMMdd')}
- 저장 > 제출
작성한 워크플로 작동을 위한 Coodinator 확인
- 휴 > Job > Job Browser > 일정
작성한 워크플로 바로 작동 시키기
- 휴 > 상단 메뉴 > 문서 > Subject2 - Workflow 선택
- 매개변수 설정 : today / 매개변수를 Hive managed_smartcar_drive_info 테이블 wrk_date 값으로 직접 입력 > wrk_date=20220908
- 저장 > 제출
정리
- 매일 N시 스마트카 운전자 운행 데이터 => 하이브 테이블로 이전
- 다른 테이블과 조인을 통해 상세정보를 추가해 확장된 마트 데이터 생성
주제 영역 3. 이상 운전 패턴 스마트카 정보 - 워크플로 작성
- 스마트카 운전자의 운행 기록을 분석하여 과속, 급제동, 급회전이 빈번한 차량들을 스코어링한 마트 데이터 생성(
- 과속과 급제동의 경우 당일의 차량별로 가속 페달과 브레이크 페달의 평균값 계산
- 관련 표준편차 값은 과거 모든 데이터를 대상으로 산출
- 과속/급제동 표준값이 각각 "2" 이상인 차량의 경우만 "비정상"으로 판단
- 급회전의 경우 당일 기준 Left/Right 회전각 "2~3" 단계를 "1000"번 이상인 경우 "비정상"으로 지정
- 작업 QL : CH06/HiveQL
- 휴 > 문서 > workflow/hive_script/subject3
스마트카 운전자들의 운행정보에서 이상 패턴 관리 테이블
- create_table_managed_smartcar_symptom_info.hql 생성
- 파일 클릭 > 우측 메뉴 > 파일 편집 > 그림-6.102.hql > 저장
<그림-6.102.hql >
create table if not exists Managed_SmartCar_Symptom_Info (
car_number string,
speed_p_avg string,
speed_p_symptom string,
break_p_avg string,
break_p_symptom string,
steer_a_cnt string,
steer_p_symptom string,
biz_date string
)
row format delimited
fields terminated by ','
stored as textfile;
- insert_table_managed_smartcar_symptom_info.hql 생성
- 파일 클릭 > 우측 메뉴 > 파일 편집 > 그림-6.103.hql > 저장
<그림-6.103.hql >
insert into table Managed_SmartCar_Symptom_Info
select
t1.car_number,
t1.speed_p_avg_by_carnum,
case
when (abs((t1.speed_p_avg_by_carnum - t3.speed_p_avg) / t4.speed_p_std)) > 2
then 'abnormal'
else 'normal'
end
as speed_p_symptom_score,
t1.break_p_avg_by_carnum,
case
when (abs((t1.break_p_avg_by_carnum - t3.break_p_avg) / t4.break_p_std)) > 2
then 'abnormal'
else 'normal'
end
as break_p_symptom_score,
t2.steer_a_count,
case
when (t2.steer_a_count) > 2000
then 'abnormal'
else 'normal'
end
as steer_p_symptom_score,
t1.biz_date
from
(select car_number, biz_date, avg(speed_pedal) as speed_p_avg_by_carnum, avg(break_pedal) as break_p_avg_by_carnum from managed_smartcar_drive_info where biz_date = '${working_day}' group by car_number, biz_date) t1
join
(select car_number, count(*) as steer_a_count from managed_smartcar_drive_info where steer_angle in ('L2','L3','R2','R3') and biz_date = '${working_day}' group by car_number) t2
on
t1.car_number = t2.car_number ,
(select avg(speed_pedal) as speed_p_avg, avg(break_pedal) as break_p_avg from managed_smartcar_drive_info ) t3,
(select stddev_pop(s.speed_p_avg_by_carnum) as speed_p_std, stddev_pop(s.break_p_avg_by_carnum) as break_p_std from
(select car_number, avg(speed_pedal) as speed_p_avg_by_carnum, avg(break_pedal) as break_p_avg_by_carnum from managed_smartcar_drive_info group by car_number) s) t4
가속 패달
case
when (abs((t1.speed_p_avg_by_carnum - t3.speed_p_avg) / t4.speed_p_std)) > 2
then '비정상'
else '정상'
end
- 컬럼에 있는 데이터로 연산을 해서 '비정상'인 값과 '정상'인 값을 만든다
브레이크 패달
case
when (abs((t1.break_p_avg_by_carnum - t3.break_p_avg) / t4.break_p_std)) > 2
then '비정상'
else '정상'
end
운전대
case
when (t2.steer_a_count) > 1000
then '비정상'
else '정상'
end
- Job Browser 모니터링시 7개의 잡과 10개의 맵리듀스가 실행, 무거운 작업
- 워크플로 만들기
- 휴 > 쿼리 > 스케줄러 > Workflows > 편집기
하이브 테이블 만들기
- HiveSever2 스크립트 추가 > workflow/hive_script/subject3/create_table_managed_smartcar_symptom_info.hql 선택 후 추가
- HiveSever2 스크립트 추가 > workflow/hive_script/subject3/insert_table_managed_smartcar_symptom_info.hql 선택 후 추가
- 매개변수 연결 : working_day=20220908
My Workflow => Subject 3 - Workflow 변경 후 > 저장작성한 워크플로 작동을 위한 Schedule 생성
- 휴 > 쿼리 > 스케줄러 > 예약
- Subject 3 - Schedule 이름 변경
- 워크플로 선택 > Subject 3 - Workflow선택
간격 > 옵션 > 스케줄 작성
- 실행 간경: 매일, N시
- 시작일자: 2022년 09월 14일, 00시 00분
- 종료일자: 2022년 09월 21일, 23시 59분
- 시간대: Asia/Seoul
- 매개변수 설정 : today / 매개변수 / ${coord:formatTime(coord:dateTzOffset(coord:nominalTime(),"Asia/Seoul"), 'yyyyMMdd')}
- 저장 > 제출
작성한 워크플로 작동을 위한 Coodinator 확인
- 휴 > Job > Job Browser > 일정
작성한 워크플로 바로 작동 시키기
- 휴 > 상단 메뉴 > 문서 > Subject3 - Workflow 선택
- 매개변수 설정 : today / 매개변수를 Hive managed_smartcar_symptom_info 테이블 wrk_date 값으로 직접 입력 > wrk_date=20220908
- 저장 > 제출
managed_smartcar_symptom_info 차트로 데이터 탐색
- 그림6.105 하이브 쿼리 실행 결과 > 차트 실행
SELECT
car_number,
cast(speed_p_avg as int),
speed_p_symptom,
cast(break_p_avg as float),
break_p_symptom,
cast(steer_a_cnt as int),
steer_p_symptom,
biz_date
FROM managed_smartcar_symptom_info
where biz_date = '20191127'
과속/난폭 운전 가능성 예상 차량 찾기
- 차트 > 막대 , x축 car_number, y축 speed_p_avg
급정지/난폭 운전 가능성 예상 차량 찾기
- 차트 > 막대 , x축 car_number, y축 break_p_avg
운전대 비정상 패턴 차량 찾기
- 차트 > 막대 , x축 car_number, y축 steel_a_cnt
정리
- 이상 운행 패턴을 보이는 운전자는 가속 폐달, 브레이크 페달, 운전대 사용이 모두 비정상
- 3개의 변수(가속 폐달, 브레이크 페달, 운전대)는 서로 연관성이 높다는 사실을 알수 있음
- 하이브의 단순 기술 통계량으로 이상 징후 차량 탐색
- 하이브만 잘 활용해도 적재된 대량 데이터를 이용해 기술적 통계와 탐색적 분석석을 수행해 가치 있는 분석 가능
주제 영역 4. 긴급 점검이 필요한 스마트카 정보 - 워크플로 작성
- 타이어, 라이트, 브레이크, 엔진, 베터리 등을 분석
- 긴급 점검이 필요한 스마트카 차량 리스트 찾기
- "긴근 점검 차량" 마트를 만드는 시간은 많이 들지만 이후 빠르게 마트 조회
- 작업 QL : CH06/HiveQL
- 휴 > 문서 > /workflow/hive_script/subject4
스마트카 장비의 상태를 관리하기 위한 테이블
- create_table_managed_smartcar_emergency_check_info.hql 생성
- 파일 클릭 > 우측 메뉴 > 파일 편집 > 그림-6.110.hql > 저장
- insert_table_managed_smartcar_emergency_check_info.hql 생성
- 파일 클릭 > 우측 메뉴 > 파일 편집 > 그림-6.111.hql > 저장
타이어 점검
left outer join ( select
car_number,
avg(tire_fl) as tire_fl_avg ,
avg(tire_fr) as tire_fr_avg ,
avg(tire_bl) as tire_bl_avg ,
avg(tire_br) as tire_br_avg ,
'타이어 점검' as symptom
from managed_smartcar_status_info where biz_date ='${working_day}'
group by car_number
having tire_fl_avg < 80 or tire_fr_avg < 80 or tire_bl_avg < 80 or tire_br_avg < 80 ) t2
on t1.car_number = t2.car_number
라이트 점검
left outer join ( select
distinct car_number,
'라이트 점검' as symptom
from managed_smartcar_status_info
where biz_date = '${working_day}' and (light_fl = '2' or light_fr = '2' or light_bl = '2' or light_br = '2')) t3
on t1.car_number = t3.car_number
엔진 점검
left outer join ( select
distinct car_number,
'엔진 점검' as symptom
from managed_smartcar_status_info
where biz_date = '${working_day}' and engine = 'C' ) t4
on t1.car_number = t4.car_number
브레이크 점검
left outer join ( select
distinct car_number,
'브레이크 점검' as symptom
from managed_smartcar_status_info
where biz_date = '${working_day}' and break = 'C' ) t5
on t1.car_number = t5.car_number
배터리 점검
left outer join (select
car_number,
avg(battery) as battery_avg,
'배터리 점검' as symptom
from managed_smartcar_status_info where biz_date = '${working_day}'
group by car_number having battery_avg < 30 ) t6
on t1.car_number = t6.car_number
워크플로 만들기
- 휴 > 쿼리 > 스케줄러 > Workflows > 편집기
하이브 테이블 만들기
- HiveSever2 스크립트 추가 > workflow/hive_script/subject4/create_table_managed_smartcar_emergency_check_info.hql 선택 후 추가
- HiveSever2 스크립트 추가 > workflow/hive_script/subject4/insert_table_managed_smartcar_emergency_check_info.hql 선택 후 추가
- 매개변수 연결 : working_day=20220906
My Workflow => Subject 4 - Workflow 변경 후 > 저장
작성한 워크플로 작동을 위한 Schedule 생성
- 휴 > 쿼리 > 스케줄러 > 예약
- Subject 4 - Schedule 이름 변경
- 워크플로 선택 > Subject 4 - Workflow선택
간격 > 옵션 > 스케줄 작성
- 실행 간경: 매일, 04시
- 시작일자: 2020년 09월 05일, 00시 00분
- 종료일자: 2020년 09월 05일, 23시 59분
- 시간대: Asia/Seoul
- 매개변수 설정 : today / 매개변수 / ${coord:formatTime(coord:dateTzOffset(coord:nominalTime(),"Asia/Seoul"), 'yyyyMMdd')}
- 저장 > 제출
작성한 워크플로 작동을 위한 Coodinator 확인
- 휴 > Job > Job Browser > 일정
작성한 워크플로 바로 작동 시키기
- 휴 > 상단 메뉴 > 문서 > Subject1 - Workflow 선택
- 매개변수 설정 : today / 매개변수를 Hive managed_emergency_check_info 테이블 wrk_date 값으로 직접 입력 > wrk_date=20220905
- 저장 > 제출
긴급 점검 대상 차량 확인
SELECT * from managed_smartcar_emergency_check_info WHERE biz_date = '20200904';
정리
- 긴급 점검 대상 차량을 판단하는 것은 주관적
- 과거의 긴급 점검이 실제 이뤄진 차량의 이력 정보과 지속적인 데이터 탐색을 한다면 신뢰도 상승
- 빅데이터는 저장 공간과 컴퓨팅 파워에 대한 제약이 적으므로 과거 데이터를 최대한 많이 적재해 분석 정확도 향상 가능
sql에서 조건문을 담당하는 쿼리인 having과 where의 차이를 알아본다.
Where
select * from 테이블명 where 조건절
위와 같은 방법으로 where 조건절을 사용한다. 항상 from뒤에 위치하고 조건에는 다양한 비교연산자들이 사용되어 구체적인 조건을 줄 수 있다.
having
select * from 테이블명 group by 필드명 having 조건절
위와 같은 방법으로 having 조건절을 사용한다. 항상 group by뒤에 위치하고 where 조건절과 마찬가지로 조건에는 다양한 비교연산자들이 사용되어 구체적인 조건을 줄 수 있다.
차이점
where은 기본적인 조건절로서 우선적으로 모든 필드를 조건에 둘 수 있다.
하지만 having은 group by 된 이후 특정한 필드로 그룹화 되어진 새로운 테이블에 조건을 줄 수 있다.
즉, 전체 테이블 자체에서 쿼리를 수행하고 싶다면 where를, 전체 테이블을 그룹화 한뒤, 그 해당 그룹에서 어떠한 조건을 걸어 가져오고 싶다면 having을 사용한다.
출처 : https://wansook0316.github.io/cs/database/2020/04/25/where-having-%EC%B0%A8%EC%9D%B4.html
주제 영역 5. 스마트카 운전자 차량 용품 구매 이력 정보 - 워크플로 작성
- 스마트카 차량용품 구매 이력과 스마트카 마스터 데이터를 결합한 데이터셋 생성
- SmartCar_Master_Over18 join SmartCar_Item_Buylist
- 동적 파티션은 월단위로 생성
- 차량번호별 구매한 상품 리스트를 로컬 파일시스템에 생성
- 작업 QL : CH06/HiveQL
- 휴 > 문서 > /workflow/hive_script/subject5
스마트카 차량용품 구매 이력과 스마트카 마스터 데이터 조인 테이블
- create_table_managed_smartcar_item_buylist.hql 생성
- 파일 클리 > 우측 메뉴 > 파일 편집 > 그림-6.113.hql > 저장
- insert_table_managed_smartcar_item_buylist.hql 생성
- 파일 클리 > 우측 메뉴 > 파일 편집 > 그림-6.114.hql > 저장
차량별 상품 구매 리스트 결과 파일 생성 스크립트
- local_save_managed_smartcar_item_buylist.hql 생성
- 파일 클리 > 우측 메뉴 > 파일 편집 > 그림-6.115.hql > 저장
- collect_set() 함수를 이용해 차량번호별로 그루핑한 결과를 하나의 상품리트로 재구성
워크플로 만들기
- 휴 > 상단 메뉴 > Workflows > 편집기 > 워크플로 > 생성 > 선택
하이브 테이블 만들기
- HiveSever2 스크립트 추가 > workflow/hive_script/subject5/create_table_managed_smartcar_item_buylist.hql 선택 후 추가
- HiveSever2 스크립트 추가 > workflow/hive_script/subject5/insert_table_managed_smartcar_item_buylist.hql 선택 후 추가
- HiveSever2 스크립트 추가 > workflow/hive_script/subject5/local_save_managed_smartcar_item_buylist.hql 선택 후 추가
My Workflow => Subject 5 - Workflow 변경 후 > 저장
작성한 워크플로 작동을 위한 Schedule 생성
- 휴 > 쿼리 > 스케줄러 > 예약
- Subject 5 - Schedule 이름 변경
- 워크플로 선택 > Subject 5 - Workflow선택
간격 > 옵션 > 스케줄 작성
- 실행 간경: 매일, 05시
- 시작일자: 2020년 09월 05일, 00시 00분
- 종료일자: 2020년 09월 05일, 23시 59분
- 시간대: Asia/Seoul
- 저장 > 제출
작성한 워크플로 작동을 위한 Coodinator 확인
- 휴 > Job > Job Browser > 일정
작성한 워크플로 바로 작동을 확인
- 편집 워크플로에서 바로 제출
- 데이터 생성 확인
select * from managed_smartcar_item_buylist_info
where biz_month = '202003'
- 차량 번호별로 그루핑된 상품 리스트 파일 생성 확인
- more /home/pilot-pjt/item-buy-list/00000_0
'Hadoop > 빅데이터 파일럿 프로젝트' 카테고리의 다른 글
분석 파일럿 실행 1단계 - 아키텍처 (0) | 2022.09.14 |
---|---|
빅데이터 분석 - 개요 및 기술 (0) | 2022.09.14 |
탐색 파일럿 실행 3단계 - 탐색 기능 구현 (0) | 2022.09.07 |
탐색 파일럿 실행 2단계 - 탐색 환경 구성 (0) | 2022.09.07 |
탐색 파일럿 실행 1단계 - 아키텍처 (0) | 2022.09.07 |