• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 엔지니어링

  • 해결 여부

    미해결

managed_smartcar_status_info 테이블

24.02.08 12:04 작성 24.02.08 15:34 수정 조회수 113

0

안녕하세요.

제가 최초 학습/실습했을 때도, 겪었던 문제인데, 계속 해결을 하지 못해 해당 문제를 여쭙습니다.

 

 

[현재 문제상황]

먼저 문제는, Oozie를 강제 실행했을 때, managed_smartcar_status_info 테이블은 생성되지만, 빈 테이블로, 내부에 아무 데이터가 조회되지 않는 것입니다.

 

제가 오타가 있을까 싶어, 테이블 삭제에 여러 날을 데이터 생성부터 재시도를 4..5번 정도 했는데, 모두 동일하게 데이터가 조회되지 않았습니다. 우선, 제가 세팅한 값과 생성되어 cat-batch-log 에 저장된 데이터의 이미지를 보여드리겠습니다.

car-batch-log.png제가 작업을 실행한 것은 금일(2024-02-08)이고, 데이터 생성 시, 입력한 일자는 2022-03-22입니다. 따라서, 강의에서 말씀하신 용어를 기준으로, working_date와 biz_date는 각각, 20240208, 20220322입니다.

 

Oozie에 task를 할당할 때는, download한 쿼리를 그대로 복사해서 붙여서 task를 정의했습니다. 이는 오타가 발생할 수 없고, 여러번 시도했었던 부분이기 때문에 해당 부분에는 에러가 없을 것으로 기대하고 있습니다. task에 대한 scheduling은 아래와 같이 구성하였습니다.

Oozie_dashboard.png

Oozie를 강제 실행하였을 때, working_date에는 오늘 일자인 20240208을 입력하고, [저장] - [실행]을 했습니다. 실행 과정에서 에러는 발생하지 않았고, 로그에도 별다른 특이사항은 없었습니다.

 

이 후, 새로운 테이블 managed_smartcar_status_info이 생성되었음을 refresh를 통해 확인하였으나, 해당 테이블을 조회하면, 데이터가 조회되지 않는 것이 ... 일주일동안 해결하지 못하는 트러블 ...입니다.

NoResult.png테이블을 조건절(where) 없이 조회했을 때도, 조회된 데이터가 마찬가지로 없었기 때문에 이 또한, 조건절 오타로 인해 조회되지 않는 것은 아닌 것으로 추측됩니다.

 

 

 

[현재 확인된 부분]

  1. hdfs 쿼리를 통해 정상적으로 파일이 생성되었음을 확인했습니다.

  2. redis에서 데이터가 저장되어있음을 확인했습니다.

  3. hue를 통한 hbase 브라우저에 DriveCarInfo 내 key값을 이용하여 데이터를 조회했을 때, 조회되는 부분을 확인하였습니다.

 

[개인적인 의견]

HiveQL/그림-6.71.hql 내 작성된 쿼리를 통해 현재 제가 겪고 있는 문제를 생각해보았는데,

현재 아래 두 쿼리는 조회 값이 NULL이 아니고, 충분히 많은 데이터가 조회됩니다. 그런데,

select distinct car_number from smartCar_master_over18;

select distinct car_number from SmartCar_Status_Info where wrk_date = '20240208';

그런데, insert 내 select 부분만 추출하여 실행하면,

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 = '20240208';

조회가 되지 않는다는 것을 알게 되었습니다. 위 쿼리를 조금 더 간략히 하면,

select distinct t.car_number from smartcar_master_over18 t join smartcar_status_info s

on t.car_number = s.car_number where s.wrk_date = '20240208'; 가 되고, 이 또한 조회된 값이 없습니다.

 

현재 제가 학습을 하면서 이해를 하기론, smartcar_status_info 데이터는 flume에 의해 입수된 로그 데이터이고, smartcar_master_over18는 특정 조건에 의해 redis에 저장된 일부 데이터로 알고 있는데, 이렇게 되면,

smartcar_master_over18 이 smartcar_status_info 에 포함되는 관계가 필연적으로 되어야하는게 아닌가하는게 제 생각입니다. 만약 제 생각이 맞다면, 로그가 잘못 생성되었다는 뜻인데, 혹시 강사님께선 제가 생각하는 것 외에 확인해야할 부분이 있다고 생각하신다면, 조언해주시길 부탁드립니다.

 

 

 

항상 친절한 가르침 감사합니다.

즐거운 연휴 보내시고, 새해 복 많이 받으시길 바랍니다.

감사합니다.

 

"""(마음의 소리)많이 바쁘시겠지만, 가능하다면 오늘 해결 방법 및 조언을 듣고, 긴 연휴.. 프로젝트를 마무리 및 정리를 하고 싶습니다... !! ㅠㅠ """

 

 

 

 

 

 

답변 1

답변을 작성해보세요.

0

안녕하세요! Junhui Woo님!

먼저 까먹기 전에 "새해 복 많이 받으시고요! 파일럿 프로젝트도 연휴기간 꼭 완료 하세요!!" ^^

문제의 상황을 좀 좁혀 봐야 겠습니다. 우선 Join은 잘 되는지를 확인해 봐야 할 것 같습니다.

하이브 에디터창에서 직접 Select 쿼리를 실행 하실때, wrk_date 조건문(t2.wrk_date='20240208')을 제외해서 쿼리 결과좀 부탁 드립니다.

-빅디 드림