ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 빅데이터 분석
    빅데이터 2020. 7. 1. 16:33

    7. 빅데이터 분석

    • 빅데이터 분석 개요

    • 빅데이터 분석에 활용되는 기술

    • 분석 파일럿 실행 1단계 - 분석 아키텍처

    • 분석 파일럿 실행 2단계 - 분석 환경 구성

    • 분석 파일럿 실행 3단계 - 임팔라를 이용한 데이터 실시간 분석

    • 분석 파일럿 실행 4단계 - 제플린을 이용한 실시간 분석

    • 분석 파일럿 실행 5단계 - 머하웃을 이용한 데이터 마이닝

    • 분석 파일럿 실행 6단계 - 스쿱을 이용한 분석 결과 외부 제공

    빅데이터 분석 개요

    • 탐색 단계 : 데이터를 관찰하고 이해하는 과정

    • 분석 단계 : 탐색과 분석을 반복하며 의미 있는 데이터를 추출해 문제를 명확히 정의하고 해결하는 과정

    • 강력한 오픈소스 기술을 기반으로 수평적 확장이 가능해 저비용으로 선형적인 분석 성능 보장

    • 내부업무 시스템에서 발생했던 수년치 데이터를 외부 데이터와 쉽게 결합 가능

    분석의 유형

    기술 분석

    • 분석 초기 데이터의 특징을 파악하기 위해 선택, 집계, 요약등의 양적 기술 분석 수행

    • 평균, 분산, 표준편차

    탐색 분석

    • 업무 도메인 지식을 기반으로 대규모 데이터셋의 상관관계나 연관성을 파악

    추론 분석

    • 전통적인 통계분석 기법으로 문제에 대한 가설을 세우고 샘플링을 통해 가설을 검증

    인과 분석

    • 문제 해결을 위한 원인과 결과 변수를 도출하고 변수의 영향도 분석

    예측 분석

    • 대규모 과거 데이터를 학습해 예측 모형을 만들고, 최근의 데이터로 미래를 예측

     

    빅데이터의 가치 P301 그림 7-2 빅데이터 분석 프로세스

    • Raw 데이터 => 정보(Information) => 통찰력(Insight) => 가치(Value)

    • 통찰력을 갖게 되는 단계에서 빅데이터 활용 효익 발생

    • 상품 및 서비스 개발, 마케팅 및 캠페인 지원, 리스크 관리 영역등의 주요 의사결정에 빅데이터 이용

    • 새로운 분석 주제와 가설들을 풍부하게 하고 신뢰도 높은 분석 결과를 도출 가능

    • 스마트카 빅데이터 분석에 SNS, 포털, 날씨, 뉴스, 위치 정보 등과 결합되면 차별화된 타겟 마케팅 가능

      • 포털과 블로그등의 게시판을 크롤링해서 자사/타사 브랜드 평판과 트랜드 분석으로 신제품 개발과 프로모션등에 활용

    • 스마트카의 상태 및 운행 이력 데이터와 외부의 날씨, 도로지형, 교통상황을 결합해 분석

      • 스마트카의 고장 및 결함에 대한 패턴과 원인을 찾아서 안전한 스마트카 서비스가 가능 해짐

    빅데이터 분석에 활용할 기술

    임팔라(Impala)

    • http://impala.apache.org

    • 하이브 : SQL On Hadoop 으로 MapReduce 대체, 배치성 분석

    • 임팔라 : 실시간 빅데이터 분석 질의가 가능

    • 구글 논문 드레멜(Dremel) -> 클라우데라 임팔라(Impala) 개발

    • Impalad : 하둡의 데이터노드에 설치되어 임팔라의 실행 쿼리에 대한 계획, 스케줄링, 엔진을 관리하는 코어 영역

    • Query Planner: 임팔라 쿼리에 대한 실행 계획 수립

    • Query Coordinator: 임팔라 잡리스트 및 스케줄링 관리

    • Query Exec Engine: 임팔라 쿼리를 최적화해서 실행, 결과 제공

    • Statesored: 분산 환경에 설치돼 있는 Impalad의 설정 정보 및 서비스 관리

    • Catalogd: 임팔라에서 실행된 작업 이력 관리 및 제공

     

    임팔라 아키텍처

    임팔라 아키텍처

    활용 방안

    • 하이브 쿼리를 임팔라 쿼리로 변경

    • 스마트카 데이터셋을 실시간 탐색과

    • 하이브 쿼리 대부분 임팔라 쿼리와 호환

    • 하이브 대비 빠른 응답 속도 보장

     

    제플린(Zeppelin)

    • http://zeppelin.apache.org

    • 데이터를 효과적으로 탐색 및 분석하기 위한 분석 및 시간화 툴 => R

      • R => Hadoop 직접 참조하거나 분산 병렬처리가 어려움

      • RHive, RHadoop, RHipe 같은 도구로 HDFS 병렬 처리 가능

      • 복잡도가 높아지고 안정적인 사용을 위해서 추가 비용 발생

    • 스파크를 기반으로 한 제플린 탄생

    • 국내 스타트 기업 NFLabp에서 주도

    • NoteBook : 웹상에서 제플린의 인터프리터 언어를 작성하고 명령 실행 및 관리 UI

    • Visualization: 인터프리터 실행 결과를 곧바로 웹상에서 다양한 시각화 도구로 분석해 볼 수 있는 기능

    • Zeppelin Interpreter: 데이터 분석을 위한 다양한 인터프리터를 제공

    • 스파크, 하이브, JDBC, 쉘등 필요시 인터프리터 추가 확장

     

    활용 방안

    • 5개의 마트 데이터를 대상으로 제플린에서 스파크 SQL을 이용해 다양한 Ad-hoc 분석 수행

    • 그 결과를 제플린 시각화 기능을 이용해 다양하게 분석

     

    참고 : Ad-hoc

     

    머하웃(Mahout)

    • http://mahout.apache.org

    • Hadoop 생태계에서 머신러닝 기법을 이용해 데이터 마이닝을 수행하는 툴

    • Hadoop 분산 아키텍처를 바탕으로 텍스트 마이닝, 군집, 분류등과 같은 머신러닝 기반 기술 내재화

    • 추천(Recommendation): 사용자들이 관심을 가졌던 정보나 구매했던 물건의 정보를 분석해서 추천하는 기능

      • 사용자 기반 추천: 유사한 사용자를 찾아 추천

      • 아이템 기반 추천: 항목 간 유사성을 계산해서 추천 항목 생성

    • 분류(Classification): 데이터셋의 다양한 패턴과 특징을 발견해 레이블을 지정하고 분류하는 기능

      • 주요알고리즘: 나이브 베이지안, 랜덤 포레스트, Canopy등 지원

    • 군집(Clustering): 대규모 데이터셋에서 새로운 특성으로 데이터의 군집들을 발견하는 기능

      • 주요알고리즘: K-Means, Fuzzy, C-Means, Canopy등

    • 감독학습(Supervised Learning): 학습을 위한 데이터셋을 입력해서 분석 모델을 학습시키는 머신러닝 기법

      • 학습된 분석 모델을 이용해 예측하고 최적화

      • 분류와 회귀 분석 기법

    • 비감독학습(Unsupervised Learning): 학습 데이터셋을 제공하지 않고 데이터의 특징적인 패턴을 발견하는 머신러닝 기법

      • 사람이 구분 및 그루핑하기 어려운 현상들을 자동으로 그루핑 하는데 사용

      • 군집 기법

     

    활용 방안

    • 스마트카 Managed 영역에 적재된 "스마트카 상태 데이터"와 "운전자 운행 데이터"를 이용해 감독학습-분류, 비감독학습-군집 머신러닝 수행

    • 추천 기능을 활용해 "차량용품 구매 이력 데이터"를 분석

      • 스마트카 운전자 가운데 유사 그룹 간의 구매 선호도에 따라 차량용품 추천 작업

     

    스쿱(Sqoop)

    • http://sqoop.apache.org

    • RDBMS <=> 적재(import, export) <=> HDFS

    • Sqoop Client, Sqoop Server

    • Connector: 다양한 DBMS 접속 어댑터 및 라이브러리

     

    스쿱 아키텍처

     

    스쿱 아키텍처

     

    활용 방안

    • 하이브, 임팔라, 제플린, 머하웃등에서 분석한 결과를 외부 RDBMS로 Export 용도로 사용

    • 참고: 스쿱은 하둡 생태계에서 수집(Import) 기술로 분류

    분석 파일럿 실행 1단계 - 분석 아키텍처

    분석 요구사항

    요구사항 - 빅데이터 탐색을 통해 해결

    • 요구사항 1 : 차량의 다양한 장치로부터 발생하는 로그 파일을 수집해서 기능별 상태 점검

    • 요구사항 2: 운전자의 운행 정보가 담긴 로그를 실시간으로 수집해서 주행 패턴을 분석

     

    요구사항 확장

    • 빅데이터 실시간 탐색 및 시각화

    • 머신러닝을 이용한 데이터 마이닝

     

    요구사항 구체화 및 분석

     

    스마트카 데이터셋을 좀 더 빠르게 탐색 및 분석

    • 임팔라 이용 하이브 배치 쿼리를 온라인 쿼리로 실행

     

    스마트카 데이터셋의 탐색 결과를 이해하기 쉽게 시각화

    • 스파크 SQL로 탐색 후 결과를 제플린의 차트로 시각화

     

    차량용품 구매 이력을 분석해 최적의 상품 추천 목록 만들기

    • 머하웃의 추천 기능 이용, 성향에 따른 상품 추천 목록 생성

     

    스마트카 상태 정보를 분석 이상 징후 예측

    • 머하웃의 분류 감독 학습을 통해 이상 징후에 대한 예측 모델 구성

     

    스마트카 운행 정보를 분석 운행 패턴별 군집을 도출

    • 머하웃의 군집 비감독 학습을 통해 운행 패턴에 대한 군집을 도출

     

    분석된 결과를 외부 업무 시스템의 RDBMS로 제공

    • 스쿱의 데이터 익스포트 이용, HDFS => RDBMS

    분석 아키텍처

    휴 - Impala Editor

    • 임팔라 설치하면 휴 > Editor 메뉴에 Impala Editor 추가됨

    • 스마트카 상태 정보 On-Line 조회

    • 운전자 운행 정보 On-Line 조회

     

    제플린 - NoteBook

    • 웹 브라우저에 Spark-SQL로 데이터셋 분석

    • 제플린에서 제공하는 다양한 차트로 시각화

     

    머하웃 - 추천 라이브러리

    • 추천 라이브러리에 "차량용품 구매 정보" 데이터셋 지정

    • 상품 평가 정보에 대한 운전자 취향을 분석해 취향이 비슷한 운전자에게 구매 가능성이 높은 상품 추천

     

    머하웃 - 분류 라이브러리

    • 분류 라이브러리로 "스마트카 이상 징후"를 예측하기 위한 모델 생성

    • 트레이닝 데이터로 "스마트카 상태 정보" 데이터셋 이용

    • 알고리즘: 랜덤 포레스트 선택

    • 최종적으로 트레이닝된 분류모델(Classify)를 애플리케이션에 적용

     

    머하웃 - 군집 라이브러리

    • 군집 라이브러리를 이용 "스마트카 운전자의 운행" 데이터셋에 대해 K개의 군집으로 형성되는 K-means 적용

      • 탐색 단계에서는 식별되지 않은 새로운 운행 패턴 발견 및 분석

     

    스쿱 - 분석 결과 Export

    • 스쿱의 CLI 명령 중 Export 기능으로 HDFS에 저장된 분석 결과를 RDBMS(PostgreSQL)에 제공

    분석 파일럿 실행 2단계 - 분석 환경 구성

     

    임팔라 설치

    • Cluster1 > 선택 메뉴 > 서비스 추가

    • Impala 선택 > ICS, ISS, ID > Server03

    • 변경 내용 검토 > 기본값 선택 후 계속

     

    임팔라 설치후

    • Cluster1 > Hue > [구성] > 검색 > Impala > 선택

    • Cluster1 > Impala > 시작

    • Cluster1 > Hue > 재시작

    • Hue > Web UI > Query Editor > Impala 추가 확인

     

    스쿱 설치

    • Cluster1 > 선택 메뉴 > 서비스 추가

    • Sqoop 1 Client 선택 > G > 호스트 선택 > Server03

    • 변경 내용 검토 > 기본값 선택 후 계속

     

    스쿱 설치 후

    • 스쿱은 클라이언트로 서버 기동 없음

     

    제플린 설치

     

    Download

     

    압축 해제

    • tar -xvf zeppelin-0.6.2-bin-all.tgz

     

    환경 설정

    • cd /home/pilot-pjt/zeppelin-0.6.2-bin-all/conf

    • cp zeppelin-env.sh.template zeppelin-env.sh

    • vi zeppelin-env.sh

    export JAVA_HOME=/usr/java/??
    export HADOOP_CONF_DIR=/etc/hadoop/conf
    • chmod 777 /tmp/hive

     

    제플린에서 하이브 인터프리터 사용을 위해 설정 복사

    • cp /etc/hive/conf/hive-site.xml /home/pilot-pjt/zeppelin-0.6.2-bin-all/conf

     

    서비스 포트 변경 : 8080 => 8081

    • 스파크 마스터 서비스: 8080

    • cd /home/pilot-pjt/zeppelin-0.6.2-bin-all/conf

    • cp zeppelin-site.xml.template zeppelin-site.xml

    • vi zeppelin-site.xml

    • :/8080

    <property>
    <name>zeppelin.server.prot</name>
    #<value>8080</value>
    <value>8081</value>
    ...
    <property>

    root 계정에 path 설정

    • vi /root/.bash_profile

    • PATH=$PATH:/home/pilot-pjt/zeppelin-0.6.2-bin-all/bin

    • source /root/.bash_profile

     

    서비스 시작 및 확인

     

    머하웃 설치

    • 클라우데라 하둡 배포판에 이미 설치되어 있음

    • 머하웃 명령을 실행할 Sever02의 환경변수에 하둡 클라이언트 옵션(HADOOP_CLIENT_OPTS) 힙 메모리 설정

    • vi /etc/profile

    • 맨 마지막 줄 : export HADOOP_CLIENT_OPTS="-Xmx1024m"

    • source /etc/profile

     

    머하웃 설치 확인

    • mahout -help

    • Running on hadoop 확인

    • java.lang.ClassNotFoundException: -help 경고 메세지 무시

    분석 파일럿 실행 3단계 - 임팔라를 이용한 실시간 분석

    하이브 QL을 임팔라에서 실행 하기

    하이브 QL

    • Hue > Query Editor > Hive

    • 이상 운전 패턴 스마트카 정보 조회

    • select * from managed_smartcar_symptom_info where biz_date='20190101'

     

    임팔라 QL

    • Hue > Query Editor > Impala

    • 데이터베이스(default) 안보이면 새로고침 또는 임팔라 재시작

     

    ** 이상 운전 패턴 스마트카 정보 조회 **

    select * from managed_smartcar_symptom_info where biz_date='20190101'

    ** 긴급 점검이 필요한 스마트카 정보 조회 **

    select * from managed_smartcar_emergency_check_info where biz_date='20190101'

    ** 스마트카 차량용품 구매 이력 정보 조회 **

    select * from managed_smartcar_item_buylist_info where biz_month='201901'

    임팔라를 이용한 운행 지역 분석

    • 스마트카 운행 지역별 평균 속도가 가장 높았던 스마트카 차량 출력

    • 결과 차트로도 확인

    • /CH07/ImpalaSQL/2nd/그림-7.35.sql

    select
       T2.area_number, T2.car_number, T2.speed_avg
    from (
           select 
                  T1.area_number, 
                  T1.car_number, 
                  T1.speed_avg,
                  rank() over(partition by T1.area_number order by T1.speed_avg desc) as ranking
           from ( 
                  select area_number, car_number, avg(cast(speed as int)) as speed_avg
                  from  managed_smartcar_drive_info
                  group by area_number, car_number
                ) T1
    ) T2
    where ranking = 1

    분석 파일럿 실행 4단계 - 제플린을 이용한 실시간 분석

    제플린을 이용한 운행 지역 분석

    스마트카가 운행한 지역들의 평균 속도가 높은 순으로 출력

    • 제플린 접속 http://server02.hadoop.com:8081

    • 접속안되면

    • cd /home/pilot-pjt/zeppelin-0.6.2.bin-all/bin

    • ./zeppelin-daemon.sh start

    • ./zeppelin-daemon.sh status

    • 재플린 > NoteBook > Create new note > SmartCar-Project

    • 스마트카 운전자 운행 파일 확인

    • %md => %sh

    • hdfs dfs -cat /user/hive/warehouse/managed_smartcar_drive_info/biz_date=20190101/* | head

    • 노트북의 인터프리터를 스파크로 바인딩, 스칼라 코드 작성

    • %spark

    • /CH07/SparkSQL/2nd/그림-7.43.sql

    // HDFS에서 데이터 로드
    val driveData = sc.textFile("hdfs://server01.hadoop.com:8020/user/hive/warehouse/managed_smartcar_drive_info/biz_date=20160626/*")
    
    // 로드한 데이터셋을 스파크에서 테이블 데이터 타입
    case class DriveInfo(car_num: String,        sex: String,            age: String,            marriage: String, 
                         region: String,         job: String,            car_capacity: String,   car_year: String, 
                         car_model: String,      speed_pedal: String,    break_pedal: String,    steer_angle: String, 
                         direct_light: String,   speed: String,          area_num: String,       date: String)
    // 로드한 데이터셋을 스파크에서 데이터 구조로 변경
    val drive = driveData.map(sd=>sd.split(",")).map(
                    sd=>DriveInfo(sd(0).toString, sd(1).toString, sd(2).toString, sd(3).toString,
                                  sd(4).toString, sd(5).toString, sd(6).toString, sd(7).toString,
                                  sd(8).toString, sd(9).toString, sd(10).toString,sd(11).toString,
                                  sd(12).toString,sd(13).toString,sd(14).toString,sd(15).toString
            )
    )
    
    // 스파크-SQL로 분석하기 위한 임시 테이블 생성
    drive.toDF().registerTempTable("DriveInfo")
    • 참고: 스칼라

    • 인터프리터 스파크-SQL로 변경

    • %spark.sql

    select T1.area_num, T1.avg_speed     
    from  (select area_num, avg(speed) as avg_speed
           from DriveInfo
           group by area_num
           ) T1
    order by T1.avg_speed desc
    • 테이블 형식의 결과 확인

    • 다양한 차트로 결과 확인

     

    동적 변수를 추가해서 실행 해보기

    select T1.area_num, T1.avg_speed     
    from  (select area_num, avg(speed) as avg_speed
           from DriveInfo 
           group by area_num having avg_speed >= ${AvgSpeed=60}
           ) T1
    order by T1.avg_speed desc
    

    제플린 스케줄러 기능으로 자동 실행 설정

    • 상단 시계모양 ICON > Crom 표현이나 Preset 으로 시간 지정

    • 1분 지정하고 자동 실행 출력 확인

     

    제플린 인터프리터

    • 다양한 인터프리터 제공하는

    • spark, pyspark, spark.sql, spark.mahout, spark.r 등등

    분석 파일럿 실행 5단계 - 머하웃을 이용한 데이터 마이닝

    • 사람이 인지하기 어려운 패턴 찾기

    머하웃 추천 - 스마트카 차량용품 추천

    사용 데이터셋

    • "스마트카 차량용품 구매 이력" managed_smartcar_item_buylist_info 10만건

     

    추천에 필요한 항목

    • 차량고유번호 car_number

    • 구매용품아이템코드 item

    • 사용자평가점수 score

     

    사용자평가점수 score

    • 구매한 아이템에 대한 사용자의 긍정 또는 부정을 스코어링

    • 사용자의 취향을 알 수 있는 중요한 필드

    • 구매한 제품에 대한 평가 데이터는 수많은 사용자로부터 다양하게 나타남

    • 사용자에게는 기호와 취향이라는게 있음

    • 이러한 기호와 취향에 따라 이력을 분석해 보면 눈에 보이지 않는 패턴이 발견됨

    • 유사 패턴을 보이는 사용자 간의 유사성을 계산

    • 그 결과로부터 유사 사용자 간의 선호하는 아이템을 예측하고 추천 => 사용자 기반 협업 필터링 모델

     

    사용자 기반 협업 필터링 모델

    • 사용자 A와 B가 공통으로 구매했던 물건들의 평가 점수로 유사도 측정

    • 유사한 사용자로군으로 판명되면 사용자 A는 구매했으나 B는 구매하지 않은 물건 추천

     

    "스마트카 차량용품 구매 이력" 데이터로 머하웃 추천 모델 만들기

     

    01. 데이터 머하웃 추천기에서 사용 가능한 형식으로 재구성

    • Hue> Hive Editor > /CH07/HiveQL/2nd/그림-7-54

    • managed_smartcar_item_buylist_info > local file

    • hash() : 숫자 타입(long ) 형 변환

    insert overwrite local directory '/home/pilot-pjt/mahout-data/recommendation/input'
    ROW FORMAT DELIMITED
    FIELDS TERMINATED BY ','
    select hash(car_number ), hash(item), score from managed_smartcar_item_buylist_info

    02. Input Data 생성 확인 > Server02 > ssh >

    • ls /home/pilot-pjt/mahout/recommendation/input/

    • 000000_0 파일 생성 확인

    • more /home/pilot-pjt/mahout/recommendation/input/*

    • 차량번호, 상품코드, 평가점수 순 표시 확인

     

    03. Input Data > HDFS

    • hdfs dfs -mkdir /pilot-pjt/mahout

    • hdfs dfs -mkdir /pilot-pjt/mahout/recommendation/

    • hdfs dfs -mkdir /pilot-pjt/mahout/recommendation/input

    • hdfs dfs -put /home/pilot-pjt/mahout-data/recommendation/input/* /pilot-pjt/mahout/recommendation/input/item_buylist.txt

     

    04. mahout 명령어 실행 > /CH07/Mahout/2nd/그림7.56

    • mahout recommenditembased -i /pilot-pjt/mahout/recommendation/input/item_buylist.txt -o /pilot-pjt/mahout/recommendation/output/ -s SIMILARITY_COOCCURRENCE -n 3

    • 사용된 매개변수와 옵션

      • i: 추천 분석에 상용할 입력 데이터

      • o: 추천 분석 결과가 출력될 경로

      • s: 추천을 위한 유사도 알고리즘

      • n: 추천할 아이템 개수

    • 여러개의 잡과 과련된 맵리듀스가 반복적으로 실행되면서 수분의 시간이 소요

    • 정상 완료 확인

      • Info driver.MahoutDriver: Program took ...

     

    분석결과 파일 확인

    • Hue > 파일브라우저

    • /pilot-pjt/mahout/recommendation/output/

    • part-r-00000, part-r-00001

    • 추천받은차량번호 / 추천상품1 :상품ID:추천값 / 추천상품2 :상품ID:추천값 / 추천상품31 :상품ID:추천값

     

    임시파일 삭제

    • hdfs dfs -rm -R -skipTrash /pilot-pjt/mahout/recommendation/output/

    • hdfs dfs -rm -R -skipTrash /user/root/temp

     

    머하웃 상품 추천기 활용

    • 실시간 상품 추천

    • 이메일 , SMS 맛춤형 프로모션

    • 1:1 마케팅 등

    • 아마존판매량 35%, 구글 뉴스 페이지뷰 38%가 추천에 의해 발생

    머하웃 분류 - 스마트카 상태 정보 예측/분류

    사용 데이터셋

    • "스마트카 상태 정보" managed_smartcar_Status_info

     

    추천에 필요한 항목

    • 스마트카 주요 장치

    • 타이어, 라이트, 엔진, 브레이크 등에 대한 상태를 기록한 값

    • 이 값들을 이용해 차량의 정상/비정상을 분류하는 모델 생성

    • 이 모델을 실시간으로 적용 > 안정성을 분류를 통해 예측

    • 알고리즘은 랜덤 포레스트 이용

     

    랜덤 포레스트

     

    과거의 운행했던 스마트카의 상태 데이터

    • 학습(훈련, 트레이닝) 데이터로 머하웃 분류기에 제공

    • 학습이 끝나면 스마트카 상태를 판단 할 수 있는 Classify 생성

    • 이 Classify에 현재 운행중인 스마트카 시스템에 적용 차량 상태 예측 애플리케이션 제작

     

    "스마트카 상태 정보" 데이터로 머하웃 추천 모델 만들기

     

    01. 데이터 머하웃 추천기에서 사용 가능한 형식으로 재구성

    • Hue> Hive Editor > /CH07/HiveQL/2nd/그림-7-62

    • 스마트카 상태 정보의 상태값으로 주관적인 기준으로 스코어링

    • 예측변수의 값을 합산해서 "6"미만인 경우 비정상, "6"이상인 경우 정상인 목표변수 정의

    • Server02의 /home/pilot-pjt/mahout-data/classification/input 결과 생성

    • "'ascii' codec can't encode..." 한글 쿼리 포함 신청시 나옴, 무시해도 됨

    insert overwrite local directory '/home/pilot-pjt/mahout-data/classification/input'
    ROW FORMAT DELIMITED
    FIELDS TERMINATED BY ','
    select 
      sex, age, marriage, region, job, car_capacity, car_year, car_model,
      tire_fl, tire_fr, tire_bl, tire_br, light_fl, light_fr, light_bl, light_br,
      engine, break, battery,
      case when ((tire_fl_s  + tire_fr_s  + tire_bl_s  + tire_br_s  + 
                  light_fl_s + light_fr_s + light_bl_s + light_br_s + 
                  engine_s   + break_s    + battery_s  + 
                  car_capacity_s + car_year_s + car_model_s) < 6) 
           then '비정상' else '정상' 
      end as status
    from (
      select 
        sex, age, marriage, region, job, car_capacity, car_year, car_model,
        tire_fl, tire_fr, tire_bl, tire_br, light_fl, light_fr, light_bl, light_br,
        engine, break, battery,
    
        case
         when (1500 > cast(car_capacity as int)) then -0.3 
            when (2000 > cast(car_capacity as int)) then -0.2 
            else -0.1
        end as car_capacity_s ,
    
        case
        when (2005 > cast(car_year as int)) then -0.3 
           when (2010 > cast(car_year as int)) then -0.2 
           else -0.1
        end as car_year_s ,
    
        case
        when ('B' = car_model) then -0.3
           when ('D' = car_model) then -0.3 
           when ('F' = car_model) then -0.3 
           when ('H' = car_model) then -0.3 
           else 0.0
        end as car_model_s ,
    
        case 
           when (10 > cast(tire_fl as int)) then 0.1 
           when (20 > cast(tire_fl as int)) then 0.2 
           when (40 > cast(tire_fl as int)) then 0.4 
           else 0.5
        end as tire_fl_s ,
    
        case 
           when (10 > cast(tire_fr as int)) then 0.1 
           when (20 > cast(tire_fr as int)) then 0.2 
           when (40 > cast(tire_fr as int)) then 0.4 
           else 0.5
        end as tire_fr_s ,
    
        case 
           when (10 > cast(tire_bl as int)) then 0.1 
           when (20 > cast(tire_bl as int)) then 0.2 
           when (40 > cast(tire_bl as int)) then 0.4 
           else 0.5
        end as tire_bl_s ,
    
        case 
           when (10 > cast(tire_br as int)) then 0.1 
           when (20 > cast(tire_br as int)) then 0.2 
           when (40 > cast(tire_br as int)) then 0.4 
           else 0.5
        end as tire_br_s ,
    
        case when (cast(light_fl as int) = 2) then 0.0 else 0.5 end as light_fl_s ,
        case when (cast(light_fr as int) = 2) then 0.0 else 0.5 end as light_fr_s , 
        case when (cast(light_bl as int) = 2) then 0.0 else 0.5 end as light_bl_s ,
        case when (cast(light_br as int) = 2) then 0.0 else 0.5 end as light_br_s , 
    
        case 
           when (engine = 'A') then 1.0 
           when (engine = 'B') then 0.5 
           when (engine = 'C') then 0.0
        end as engine_s ,
    
        case 
           when (break = 'A') then 1.0 
           when (break = 'B') then 0.5 
           when (break = 'C') then 0.0
        end as break_s ,
    
        case 
           when (20 > cast(battery as int)) then 0.2 
           when (40 > cast(battery as int)) then 0.4 
           when (60 > cast(battery as int)) then 0.6 
           else 1.0
        end as battery_s 
    
      from managed_smartcar_status_info ) T1
    
    

    02. Input Data 생성 확인 > Server02 > ssh >

    • ls /home/pilot-pjt/mahout-data/classification/input/

    • 000000_0, 000001_0 파일 생성 확인(적재 데이터 양에 따라 다름)

    • more /home/pilot-pjt/mahout-data/classification/input/*

     

    02-1. 여러개의 파일 생성시 하나의 데이터로 합치기

    • cd /home/pilot-pjt/mahout-data/classification/input/

    • cat 000000_0 000001_0 > classification_dataset.txt

     

    03. Input Data > HDFS

    • hdfs dfs -mkdir /pilot-pjt/mahout/classification/

    • hdfs dfs -mkdir /pilot-pjt/mahout/classification/input

    • hdfs dfs -put /home/pilot-pjt/mahout-data/classification/input/* /pilot-pjt/mahout/classification/input/classification_dataset.txt

     

    04. mahout 명령어 실행 > /CH07/Mahout/2nd/

    • 디스크립터(Descriptor) 파일 생성

    • 디스크립터 파일은 학습할 데이터의 형식을 정의하는 파일

    • hadoop jar /opt/cloudera/parcels/CDH/lib/mahout/mahout-examples-job.jar org.apache.mahout.classifier.df.tools.Describe -p /pilot-pjt/mahout/classification/input/classification_dataset.txt -f /pilot-pjt/mahout/classification/output/descriptor/smartcar-status.descriptor -d I I I I I N N C N N N N N N N N C C N L

    • 실행성공: storing the dataset description

    • 사용된 매개변수와 옵션

      • p: 트레이닝에 사용할 데이터셋 경로

      • f: 디스크립터 파일이 생성될 경로

      • d: 트레이닝에 사용할 데이터셋의 형식 지정(I:무시, N:숫자, C:분류문자열, L:목표변수)

    성별 나이 결혼여부 거주지 직업 차량CC 차량연식 차량모델 타이어상태 라이트상태 엔진상태 브레이크상태 배터리상태
    C N C C C N N C N,N,N,N N,N,N,N C C N

    디스크립터(Descriptor) 파일 생성 확인

    • Hue > 파일 브라우저 > /pilot-pjt/mahout/classification/output/descriptor

      • smartcar-status.descriptor

     

    05. 입력데이터셋 > 학습데이터셋, 테스트데이터셋 생성

    • 7:3 또는 8:2 비율로 분할 생성

    • 머하웃의 split 명령 실행

    • mahout split -i /pilot-pjt/mahout/classification/input --trainingOutput /pilot-pjt/mahout/classification/input/training --testOutput /pilot-pjt/mahout/classification/input/testing --randomSelectionPct 30 --overwrite --method sequential

    • 사용된 매개변수와 옵션

      • i: 분할(Split)시킬 원천 파일 경로

      • trainingOutput: 학습 데이터셋 생성 경로

      • testOutput: 테스트 데이터셋 생성 경로

      • randomSelectionPct: 학습 및 테스트 데이터셋 비율 지정

      • overwrite: 결과 덮어 쓰기

      • method: 분할 방식을 지정

     

    학습데이터셋, 테스트데이터셋 생성 확인

    • Hue > 파일 브라우저 > /pilot-pjt/mahout/classification/input

    • testing, training 디렉토리에 classification_dataset.txt 생성 확인

     

    06. 스마트카 상태 정보 예측 분류 모델 생성

    • 트레이닝 데이터셋과 분류알고리즘 중 랜덤 포레스트로 모델 트레이닝

    • 입력데이터 : 디스크립터 파일, 트레이닝 파일

    • hadoop jar /opt/cloudera/parcels/CDH/lib/mahout/mahout-examples-job.jar org.apache.mahout.classifier.df.mapreduce.BuildForest -Dmapred.max.split.size=1874231 -d /pilot-pjt/mahout/classification/input/training/classification_dataset.txt -ds /pilot-pjt/mahout/classification/output/descriptor/smartcar-status.descriptor -sl 7 -p -t 100 -o /pilot-pjt/mahout/classification/output/model

    • 사용된 매개변수와 옵션

      • Dmapred.max.split.size: 맵 생성 단위를 파일 크기로 지정

      • d: 트레이닝 데이터셋 경로

      • ds: 디스크립터 파일 경로

      • sl: 의사결정 트리(Decision Tree)에 사용할 변수 개수를 지정

      • p: 트레이닝 시 데이터를 분할해서 실행

      • t: 모델에 포함될 의사결정 트리 개수를 지정

      • o: 분류기 모델 생성 경로

     

    스마트카 상태 정보 예측 분류 모델 생성 확인

    • Hue > 파일 브라우저 > /pilot-pjt/mahout/classification/model

    • testing, training 디렉토리에 classification_dataset.txt 생성 확인

     

    07. 스마트카 상태 정보 예측 분류 모델 평가

    • 입력 테스트데이터셋: /pilot-pjt/mahout/classification/input/testing/classification_dataset.txt

    • hadoop jar /opt/cloudera/parcels/CDH/lib/mahout/mahout-examples-job.jar org.apache.mahout.classifier.df.mapreduce.TestForest -i /pilot-pjt/mahout/classification/input/testing/classification_dataset.txt -ds /pilot-pjt/mahout/classification/output/descriptor/smartcar-status.descriptor -m /pilot-pjt/mahout/classification/output/model -a -mr -o /pilot-pjt/mahout/classification/output/predictions

    • 사용된 매개변수와 옵션

      • i: 테스트(평가) 데이터셋 경로

      • ds: 디스크립터 파일 경로

      • m: 분류기 모델 파일 경로

      • a: 평가결과 표준 출력

      • mr: 맵리듀스 기반 평가 동작

      • o: 평가 결과 출력 경로

     

    스마트카 상태 정보 예측 분류 모델 평가 결과

    • Correctly Classified Instances : 분류 성공율

    • Incorrectly Classified Instances: 분류 실패율

    • Confusion Matrix: 비정상(a), 정상(b)의 분류 케이스를 메트릭스로 표현

    • 예측결과위치 : /pilot-pjt/mahout/classification/output/predictions

     

    07. 스마트카 상태 정보 예측 프로그램에 적용 - Java Application

    • 전체프로그램: /workspace/bigdata.smartcar.mahout/*

     

    ClassifySmartCarStatus.java

     

    분류기 모델 저장 위치

    DecisionForest classifyModel = DecisionForest.load(
                config, new Path("./classification/model/forest.seq"));

    디스크립터 파일 저장 위치

    Dataset dataset = Dataset.load(
                config, new Path("./classification/descriptor/smartcar-status.descriptor"));

    입력값 분류를 위한 벡터 데이터셋 설정

    DenseVector car_vector = new DenseVector(14);
        car_vector.set(0, Integer.parseInt(args[i++]));     //car_capacity
        car_vector.set(1, Integer.parseInt(args[i++]));     //car_year
        car_vector.set(2, dataset.valueOf(2, args[i++]));   //car_model
        car_vector.set(3, Integer.parseInt(args[i++]));     //타이어 1
        car_vector.set(4, Integer.parseInt(args[i++]));     //타이어 2
        car_vector.set(5, Integer.parseInt(args[i++]));     //타이어 3
        car_vector.set(6, Integer.parseInt(args[i++]));     //타이어 4
        car_vector.set(7, Integer.parseInt(args[i++]));     //라이트 1
        car_vector.set(8, Integer.parseInt(args[i++]));     //라이트 2
        car_vector.set(9, Integer.parseInt(args[i++]));     //라이트 3
        car_vector.set(10, Integer.parseInt(args[i++]));    //라이트 4
        car_vector.set(11, dataset.valueOf(11, args[i++])); //엔진
        car_vector.set(12, dataset.valueOf(12, args[i++])); //브레이크
        car_vector.set(13, Integer.parseInt(args[i++]));    //베터리

    분류기 모델(Classify)를 작동시켜 스마트카 상태 정보 입력값에 대한 분류(정사/비정상) 예측

    Instance instance = new Instance(car_vector);
        Random rNum = RandomUtils.getRandom();
    
        double prediction = classifyModel.classify(dataset, rNum, instance);

    분류 결과 출력

    System.out.println(" SmartCar Status Prediction :"+dataset.getLabelString(prediction));

    애플리케이션 서버 업로드

    • 어플리케이션 : /CH07/bigdata.smartcar.mahout-1.0.jar

    • 업로드 :Server02/home/pilot-pjt/mahout-data/

     

    디스크립터, 분류기 파일 Get

    • mkdir /home/pilot-pjt/mahout-data/classification/descriptor

    • mkdir /home/pilot-pjt/mahout-data/classification/model

    • cd /home/pilot-pjt/mahout-data/classification/descriptor

    • hdfs dfs -get /pilot-pjt/mahout/classification/output/descriptor/smartcar-status.descriptor

    • cd /home/pilot-pjt/mahout-data/classification/model

    • hdfs dfs -get /pilot-pjt/mahout/classification/output/model/forest.seq

     

    애플리케이션 테스트

    • cd /home/pilot-pjt/mahout-data/

    • java -cp bigdata.smartcar.mahout-1.0.jar com.wikibook.bigdata.smartcar.mahout.ClassifySmartCarStatus 2000 2000 A 80 80 80 1 1 1 1 A B 50

    • java -cp bigdata.smartcar.mahout-1.0.jar com.wikibook.bigdata.smartcar.mahout.ClassifySmartCarStatus 2000 2000 A 80 80 80 1 1 1 1 A B 80

    • 14개의 인자값

    성별 나이 결혼여부 거주지 직업 차량CC 차량연식 차량모델 타이어상태 라이트상태 엔진상태 브레이크상태 배터리상태
    C N C C C N N C N,N,N,N N,N,N,N C C N
    • 인자값을 다양하게 바꿔가면서 예측 결과 테스트

    • 실제 분류기를 적용할 때는 지속적인 학습을 거쳐 Classify 프로그램 정확도 높이는 과정 중요

    머하웃 군집 - 스마트카 고객 정보 분석

    사용 데이터셋

    • "스마트카 고객 마스트 정보" 하이브 External 영역의 SmartCar_Master

     

    데이터군집과 데이터셋 정보

    • 스마트카 차량번호, 차량용량, 차량모델 정보

    • 스마트카 사용자 성별, 나이, 결혼여부,직업, 거주지역들 정보

    • 군집은 이 값들을 백터화하고 유사도 및 거리를 계산해 새로운 군집을 발견하는 마이닝 기법

    K-평균 알고리즘
    캐노피 군집  알고리즘

    "스마트카 마스터 정보" 데이터로 머하웃 군집 모델 만들기

    01. "스마트카 마스터 정보" 데이터 셋 > 로컬 저장

    • Hue> Hive Editor > /CH07/HiveQL/2nd/그림-7-75

    • smartcar_master > local file

    • 편차카 큰 변수 범주화

      • 차량용량(car_capacity)

      • 차령연도(car_year)

      • 운전자나이 (age)

      • 범주화해서 군집의 정활도를 높입

    insert overwrite local directory '/home/pilot-pjt/mahout-data/clustering/input'
    ROW FORMAT DELIMITED
    FIELDS TERMINATED BY ' '
    select 
      car_number,
      case 
          when (car_capacity < 2000) then '소형'
          when (car_capacity < 3000) then '중형'
          when (car_capacity < 4000) then '대형'
      end as car_capacity,
      case
          when ((2016-car_year) <= 4)  then 'NEW' 
          when ((2016-car_year) <= 8)  then 'NORMAL' 
          else 'OLD'
      end as car_year ,
      car_model,
      sex as owner_sex,
      floor (cast(age as int) * 0.1 ) * 10 as owner_age,
      marriage as owner_marriage,
      job as owner_job,
      region as owner_region
    from smartcar_master 

    02. Input Data 생성 확인 > Server02 > ssh >

    • ls /home/pilot-pjt/mahout-data/clustering/input/

    • 000000_0 파일 생성 확인

    • more /home/pilot-pjt/mahout-data/clustering/input/*

    • 차량번호, 상품코드, 평가점수 순 표시 확인

     

    03. Input Data > HDFS

    • hdfs dfs -mkdir /pilot-pjt/mahout/clustering/

    • hdfs dfs -mkdir /pilot-pjt/mahout/clustering/input

    • hdfs dfs -put /home/pilot-pjt/mahout-data/clustering/input/000000_0 /pilot-pjt/mahout/clustering/input/

    • Hue > 파일브라우저로 적재 확인

     

    04. input Data > 시퀀스 파일로 변환

    • 시퀀스 파일은 키/값 형식의 바이너리 데이터셋

    • 분산환경에서 성능과 용량의 효율성을 높인 포맷

    • key: 차량번호

    • value: 차량연도,차량용량,모델,나이,연령등으로 구성

    • 시퀀스 파일로 변환 애플리케이션 실행

      • hadoop jar /home/pilot-pjt/mahout-data/bigdata.smartcar.mahout-1.0.jar com.wikibook.bigdata.smartcar.mahout.TextToSequence /pilot-pjt/mahout/clustering/input/000000_0 /pilot-pjt/mahout/clustering/output/seq

    • 시퀀스 파일 생성 확인

      • Hue > 파일 브라우저 > /pilot-pjt/mahout/clustering/output/seq

      • part-m-000000 파일 생성 확인

      • hdfs dfs -text /pilot-pjt/mahout/clustering/output/seq/part-m-000000

     

    05. 시퀀스 파일 > n-gram 기반 벡터데이터로 변환

    • n-gram 벡터 모델은 단어의 분류와 빈도 수를 측정하는 알고리즘

    • 차량번호별 각 항목의 단어를 분리해 벡터화하기 위해 사용

    • mahout 명령어 실행 > /CH07/Mahout/2nd/그림7.56

    • mahout seq2sparse -i /pilot-pjt/mahout/clustering/output/seq -o /pilot-pjt/mahout/clustering/output/vec -wt tf -s 5 -md 3 -ng 2 -x 85 --namedVector

    • 사용된 매개변수와 옵션

      • wt: 단어 빈도 가중치 방식

      • md: 최소 문서 출현 횟수

      • ng: ngrams 최댓값

      • nameVector: 네입벡터 데이터 생성

    • 파일 생성 확인

      • Hue > 파일 브라우저 > /pilot-pjt/mahout/clustering/output/vec

      • df-count, tf-vectors 등 생성 됨

     

    06. Canopy 군집 분석

    • 군집의 갯수 파악을 위해 t1, t2의 옵션을 변경하며 반복적인 군집분석 수행

    • mahout canopy -i /pilot-pjt/mahout/clustering/output/vec/tf-vectors/ -o /pilot-pjt/mahout/clustering/canopy/out -dm org.apache.mahout.common.distance.SquaredEuclideanDistanceMeasure -t1 50 -t2 45 -ow

    • 사용된 매개변수와 옵션

      • i: 벡터 파일 경로

      • o: 출력 결과 경로

      • dm: 군집 측청 알고리즘

      • t1: 거리값 1

      • t2: 거리값 2

     

    Canopy 군집 결과 확인

    • mahout clusterdump -i /pilot-pjt/mahout/clustering/canopy/out/clusters-*-final

    • INFO clustering.ClusterDump : wrote 1 cluster

    • t1, t2 초기 거리값이 너무 커서 1개의 군집만 만들어짐(2600명)

     

    Canopy 군집 재실행 및 결과 확인

    • mahout canopy -i /pilot-pjt/mahout/clustering/output/vec/tf-vectors/ -o /pilot-pjt/mahout/clustering/canopy/out -dm org.apache.mahout.common.distance.SquaredEuclideanDistanceMeasure -t1 10 -t2 8 -ow

    • mahout clusterdump -i /pilot-pjt/mahout/clustering/canopy/out/clusters-*-final

    • INFO clustering.ClusterDump : wrote 819 cluster

    • t1, t2 초기 거리값이 너무 작어 819개의 군집 만들어짐(2600명)

     

    Canopy 군집 재실행 및 결과 확인

    • mahout canopy -i /pilot-pjt/mahout/clustering/output/vec/tf-vectors/ -o /pilot-pjt/mahout/clustering/canopy/out -dm org.apache.mahout.common.distance.SquaredEuclideanDistanceMeasure -t1 12 -t2 10 -ow

    • mahout clusterdump -i /pilot-pjt/mahout/clustering/canopy/out/clusters-*-final

    • INFO clustering.ClusterDump : wrote 819 cluster

    • t1, t2 초기 거리값이 너무 작어 148개의 군집 만들어짐(2600명)

    • 군집의 적절 수는 주관적이며 분석 요건과 데이터 성격에 따라 적절한 군집의 개수 판단 필요

     

    06. K-Means 군집 분석

    • 초기 군집값 필요(K)

    • mahout kmeans -i /pilot-pjt/mahout/clustering/output/vec/tf-vectors -c /pilot-pjt/mahout/clustering/kmeans/output/cluster -o /pilot-pjt/mahout/clustering/kmeans/output -dm org.apache.mahout.common.distance.SquaredEuclideanDistanceMeasure -cd 1.0 -k 200 -x 20 -cl -xm mapreduce -ow

    • 사용된 매개변수와 옵션

      • i: 벡터 파일 경로

      • c: 초기 클러스터 데이터 생성 경로

      • o: 출력 결과 경로

      • dm: 군집 거리 측청 알고리즘

      • cd: 수렴할 임계값 지정

      • k: 군집수 지정

      • x:최대 반복 수행 횟수

      • xm:실행 방식 지정

     

    K-Means 결과 파일 생성

    • mahout clusterdump -i /pilot-pjt/mahout/clustering/kmeans/output/clusters-*-final -p /pilot-pjt/mahout/clustering/kmeans/output/clustersPoints -o /home/pilot-pjt/mahout-data/clustering/output/clusterdump_result.txt

     

    K-Means 결과 파일 확인

    • more /home/pilot-pjt/mahout-data/clustering/output/clusterdump_result.txt

    • VL-aaaa : 클러스트 이름

    • n=11 : 클러스트에 포함된 대상의 개수

    • c={1:0.91...}: 클러스트 중심값

    • r={1:0.287}: 클러스트 반경

    • 결과 확인을 위해 임의의 클러스트명 확인 :VL-1418

     

    군집형성 주요 키워드 파일 생성

    • touch /home/pilot-pjt/mahout-data/clustering/output/clusterdump_result2.txt 생성

    • mahout clusterdump 명령 사용

    • mahout clusterdump -dt sequencefile -d /pilot-pjt/mahout/clustering/output/vec/dictionary.file-* -i /pilot-pjt/mahout/clustering/kmeans/output/clusters-*-final -o /home/pilot-pjt/mahout-data/clustering/output/clusterdump_result2.txt -b 10 -n 10 -dm org.apache.mahout.common.distance.SquaredEuclideanDistanceMeasure

     

    VL-1234 군집형성 주요 키워드 값 확인

    • grep -11 ":VL-1418" /home/pilot-pjt/mahout-data/clustering/output/clusterdump_result2.txt

    • 군집 VL-1418은 여(성별), 기혼(결혼여부), b(차량모델), old(차량년도) 순으로 군집에 영향

     

    군집에 포함된 차량 추출

    • /home/pilot-pjt/mahout-data/clustering/output/clusterdump_result2.txt 생성

    • mahout clusterdump 명령 사용

    • mahout seqdumper -i /pilot-pjt/mahout/clustering/kmeans/output/clusteredPoints/ -o /home/pilot-pjt/mahout-data/clustering/output/seqdumper_result.txt

     

    VL-1234 군집형성 주요 키워드 값 확인

    • grep "Key: 1418" /home/pilot-pjt/mahout-data/clustering/output/seqdumper_result.txt

    • 11대의 스마트카 차량번호가 유사성이있어 군집으로 형성된 차량

     

    VL-1234 군집형성 차량번호로 데이터 확인

    • Hue > QE > Hive

    • select car_number,sex,age,car_capacity,car_year,car_model from smartcar_master where car_number in( 'C0029', 'C0052', 'E0050', 'H0082', 'M0085','O0019', 'P0074', 'S0062', 'V0055', 'Y0035', 'Z0001' )

     

    VL-1234 군집 인사이트 도출

    • 고객군은 50대 기혼 여성으로 스마트카 B모델 선호

    • 고객군의 차량은 중,대형 차량으로 소득 수준이 높은 것으로 추측

    • 이 고객군과 유사한 고객군은 스마트카 B모델 또는 유사 모델로 타깃 마케팅

    분석 파일럿 실행 6단계 - 스쿱을 이용한 분석 결과 외부 제공

    • 빅데이터 시스템에서 탐색 및 분석한 결과를 외부 업무시스템(RDBMS)에 제공

    • 제공된 데이터는 중요한 의사결정 포인트로 사용

    스쿱의 내보내기 기능 - 이상 운전 차량 정보

    • Hive => PostgreSQL

    • Export 테이블: Hive Maanged 영역 Managed_SmartCar_Symptom_Info

    사용 DBMS 정보

    • 서버 : 192.168.56.101

    • 포토: 7432

    • DB Name: postgres

    • ID: cloudera-scm

    • PWD: 각 설치환경 확인

    • cat /var/lib/cloudera-scm-server-db/data/generated_password.txt

     

    PostgreSQL 접속

    • psql -U cloudera-scm -p 7432 -h localhost -d postgres

    • postgres=# 확인

     

    PostgreSQL 테이블 생성

    • postgres=# create table smartcar_symptom_info ( car_number varchar, speed_p_avg varchar, speed_p_symptom varchar, break_p_avg varchar, break_p_symptom varchar, steer_a_cnt varchar, steer_p_symptom varchar, biz_date varchar );

    • postgres=# select * from smartcar_symptom_info;

     

    Server01에서 스쿱 실행

    • Server01 sshd 접속

    • PostgreSQL JDBC Driver > Sqoop lib 폴더로 복사

    • cp /opt/cloudera/parcels/CDH/jars/postgresql-9.0-801.jdbc4.jar /opt/cloudera/parcels/CDH/lib/sqoop/lib/

    • su hdfs

    • 스쿱 내보내기 명령 실행(패스워드 주의!!!!)

    • sqoop export --connect jdbc:postgresql://127.0.0.1:7432/postgres --username cloudera-scm --password BjiYCUGDda --table smartcar_symptom_info --export-dir /user/hive/warehouse/managed_smartcar_symptom_info

    • 사용된 매개변수와 옵션

      • username: PostgreSQL 계정

      • password: PostgreSQL 비번

      • table: PostgreSQL 입력 받을 테이블

      • export-dir: export 할 HDFS 경로

    • postgres=# select * from smartcar_symptom_info;

    • postgres=# \q

     

    필요시 RDBMS 데이터 제공 잡업도 휴 워크플로우를 생성 정기적인 작업 수행

    '빅데이터' 카테고리의 다른 글

    빅데이터 탐색  (0) 2020.07.01
    빅데이터 적재 - 실시간 로그 파일 적재  (0) 2020.06.26
    빅데이터 적재 - 대용량 로그 파일 적재  (0) 2020.06.25
    빅데이터 수집  (0) 2020.06.25
    빅데이터 파일럿 프로젝트  (0) 2020.06.25
Designed by Tistory.