TreasureData에서 Hive 쿼리를 작성할 때 - time으로 범위를 지정할 수 있습니다.

2840 단어 TreasureDatahive

소개



TreasureData를 이용하면 부담없이 Hadoop등의 Bigdata 환경을 이용할 수 있습니다만, RDB감각으로 이용할 수 있는 것이 좋은 점이라고 하면 좋은 점입니다만, RDB에서도 좋으면 MySQL라든지로 좋지요. 라는 이야기이므로 역시 서투른 일도 있습니다.
우선 RDB 밖에 접한 적은 없지만 TreasureData로 쿼리 쓰려고 하는 방향으로 쓰고 있습니다.

주) 나는 TreasureData 안의 사람이 아닙니다. 미안해.

나쁜 예



우선 RDB 사용하고 있다면 아래와 같은 SQL을 쓰고 싶네요. 하지만 BigData는 테이블에 몇 억 개의 데이터가 있습니까? 잘 생각해!
또, TreasureData의 내부 구조는 time별로 스토리지를 단락지어, 한층 더 컬럼너형(컬럼마다 세로할인)으로 보존하고 있습니다. (자세한 내용은 Plazma - Treasure Data’s distributed analytical database -)
그런 이유로 우선 맥주가 아니라 우선 "* (별표)"는 절대 안돼!

sample_datasets
select * from www_access



↑ 이것이 로그입니다만, 잘 보면 아래와 같은 에러가 나옵니다.

Output
 **
 ** WARNING: time index filtering is not set!
 ** This query could be very slow as a result.
 ** If you used 'unix_timestmap' please modify your query to use TD_SCHEDULED_TIME instead
 **   or rewrite the condition using TD_TIME_RANGE
 ** Please see http://docs.treasure-data.com/articles/performance-tuning#leveraging-time-based-partitioning
 **

번역합니다.

Output
警告:timeの指定されてないぞ!
このクエリって超遅くなる可能性があるよ。
もしも、unix_timestampってのを利用してtimeの条件を指定している気になっているなら、TD_SCHEDULED_TIME ってのがあるから書き直して。timeの範囲を指定したい場合はTD_TIME_RANGEってのがあるから使って。
てか、ドキュメントをもっかい見てね。

이 쿼리는 매우 느려질 수 있습니다! !
문서 좀 좀 봐!

좋은 예



그런 이유로 이번에는 첫 번째이므로 2 점만
  • SELECT의 뒤에는 필요한 컬럼명만을 쓰자!
  • time의 조건 지정을 독자 함수를 이용해 한다!

  • sample_datasets
    select time,user,host from www_access
    where TD_TIME_RANGE(time,"2014-10-01","2014-10-31","JST")
    



    아, 에러가 나오지 않게 되었다.

    좋은 웹페이지 즐겨찾기