Hive 集計テクニック

Hive 集計テクニック

2019.04.19 中国地方DB勉強会 in 沖縄

A61adad507d7bc0ee5b52ebe333abed7?s=128

Yuki Ishikawa

April 19, 2019
Tweet

Transcript

  1. Hive ूܭςΫχοΫ 2019.04.19 தࠃ஍ํDBษڧձ in ԭೄ @hoto17296

  2. RDB ͚͕ͩ DB Ͱ͸ͳ͍
 ʂʂʂʂʂ

  3. @hoto17296 • ͪΎΒσʔλגࣜձࣾ σʔλΞφϦετ • ԭೄͷडୗσʔλ෼ੳձࣾ • ࠓ೔ͷΠϕϯτʹԿਓ͔ࣾһ͍Δ

  4. খωλͰ͢

  5. Apache Hive • Hadoop ͷ෼ࢄετϨʔδ (HDFS) ্ͷ
 σʔλΛ SQL ϥΠΫʹૢ࡞Ͱ͖Δݴޠ

    • େن໛σʔλ෼ੳج൫ͳͲʹΑ͘࢖ΘΕΔ • PostgreSQL ͱ͔ͱಉ͡ϊϦͰॻ͘ͱࢮ͵ • Map Reduce ͷ͓ؾ࣋ͪΛ࡯ͯ͠
  6. ΍Γ͍ͨ͜ͱ time ޿ࠂID ੑผ ೥୅ طࠗ ೥ऩ 1555664019 253678c9 உ

    20-24 ະࠗ 500ສ 1555664020 2baf1f40 ঁ 35-38 طࠗ 400ສ 1555664022 105d9501 உ 25-29 ະࠗ 500ສ 1555664022 fe319a8e உ 30-34 طࠗ 600ສ 1555664024 c463fdf4 ঁ 20-24 طࠗ 400ສ 1555664027 325a2a5d உ 40-44 طࠗ 800ສ 1555664029 f445adf3 ঁ 25-29 ະࠗ 500ສ 1555664034 fe319a8e உ 35-38 طࠗ 600ສ 1555664034 f572f626 ঁ 25-29 ະࠗ 400ສ Α͋͘ΔΦʔσΟΤϯεσʔλ
  7. ΍Γ͍ͨ͜ͱ time ޿ࠂID ੑผ ೥୅ طࠗ ೥ऩ 1555664019 253678c9 உ

    20-24 ະࠗ 500ສ 1555664020 2baf1f40 ঁ 35-38 طࠗ 400ສ 1555664022 105d9501 உ 25-29 ະࠗ 500ສ 1555664022 fe319a8e உ 30-34 طࠗ 600ສ 1555664024 c463fdf4 ঁ 20-24 طࠗ 400ສ 1555664027 325a2a5d உ 40-44 طࠗ 800ສ 1555664029 f445adf3 ঁ 25-29 ະࠗ 500ສ 1555664034 fe319a8e உ 35-38 طࠗ 600ສ 1555664034 f572f626 ঁ 25-29 ະࠗ 400ສ ޿ࠂ ID ͸ϢχʔΫ͔ͱࢥ͍͖΍ ΊͪΌͪ͘Όॏෳ͍ͯ͠Δ ಉ͡ ID Ͱ΋ଐੑσʔλ (ਪఆ஋) ͕ ͦΕͧΕҧ͏
  8. ΍Γ͍ͨ͜ͱ time ޿ࠂID ੑผ ೥୅ طࠗ ೥ऩ 1555664019 253678c9 உ

    20-24 ະࠗ 500ສ 1555664020 2baf1f40 ঁ 35-38 طࠗ 400ສ 1555664022 105d9501 உ 25-29 ະࠗ 500ສ 1555664022 fe319a8e உ 30-34 طࠗ 600ສ 1555664024 c463fdf4 ঁ 20-24 طࠗ 400ສ 1555664027 325a2a5d உ 40-44 طࠗ 800ສ 1555664029 f445adf3 ঁ 25-29 ະࠗ 500ສ 1555664034 fe319a8e உ 35-38 طࠗ 600ສ 1555664034 f572f626 ঁ 25-29 ະࠗ 400ສ time ͕࠷΋৽͍͠1ߦ͚ͩ࢒ͯ͠ଞ͸શͯআ֎͍ͨ͠
  9. 1. ·ͣࢥ͍ͭ͘΍ͭ

  10. Ϛονϣա͗Δ • શΧϥϜ෼ॻ͔ͳ͍ͱ͍͚ͳ͍ • ༻్͕ຊདྷͷ MAX Ͱ͸ͳ͍ • จࣈྻΧϥϜʹ΋ MAX

    ͢Δͷؾ͕Ҿ͚Δ • ࠷৽ͷσʔλ͕औΕΔΘ͚Ͱ͸ͳ͍
  11. 2. ΢Οϯυ΢ؔ਺Λ࢖͏΍ͭ

  12. ROW_NUMBER Πϝʔδ time ޿ࠂID ੑผ ೥୅ طࠗ ೥ऩ rank 1555664019

    253678c9 உ 20-24 ະࠗ 500ສ 1 1555664020 2baf1f40 ঁ 35-38 طࠗ 400ສ 1 1555664022 105d9501 உ 25-29 ະࠗ 500ສ 1 1555664022 fe319a8e உ 30-34 طࠗ 600ສ 2 1555664024 c463fdf4 ঁ 20-24 طࠗ 400ສ 1 1555664027 325a2a5d உ 40-44 طࠗ 800ສ 1 1555664029 f445adf3 ঁ 25-29 ະࠗ 500ສ 1 1555664034 fe319a8e உ 35-38 طࠗ 600ສ 1 1555664034 f572f626 ঁ 25-29 ະࠗ 400ສ 1 PARTITION BY ORDER BY
  13. ROW_NUMBER ศར • ͱͯ΋Θ͔Γ΍͍͢ • ͔֬ PostgreSQL Ͱ΋࢖͑Δ • ൚༻ੑ

    (ʁ) ͕͋ͬͯྑ͍
  14. 3. Hivemall Λ࢖͏΍ͭ

  15. Hivemall • Hive ্Ͱػցֶश͢ΔͨΊͷϥΠϒϥϦ • SQL ͰػցֶशͰ͖Δ • Apache Incubation

    Project ʹબ͹Εͨ • ͍͢͝ (খฒײ)
  16. EACH_TOP_K ؔ਺ • Hivemall ʹؚ·Ε͍ͯΔؔ਺ • Ϋϥελʔ͝ͱʹ K ݸͷσʔλΛऔಘͰ͖Δ •

    (ϢʔεέʔεʹΑͬͯ͸)
 ROW_NUMBER ΑΓ଎͍
  17. ଎͞ͷݕূ • Treasure Data ͷαϯϓϧσʔληοτͰ͋Δ
 NASDAQ ͷגՁσʔλ (໿880ສߦ) Λର৅ •

    ֤໏ฑ͝ͱͷ࠷৽ͷגՁΛऔಘ͢ΔΫΤϦΛ
 ROW_NUMBER ͱ EACH_TOP_K Ͱॻ͖ɺ
 ࣮ߦ࣌ؒΛܭଌ͢Δ
  18. ݕূ݁Ռ 1.46 ഒ͘Β͍
 EACH_TOP_K ͷํ͕
 ଎͔ͬͨ ROW_NUMBER EACH_TOP_K 85 ඵ

    124 ඵ
  19. ͳͥ଎͍͔ʁ time symbol volume rank 1555102800 APPL 198.87 1 1555016400

    APPL 198.95 2 1554930000 APPL 200.62 3 1554843600 APPL 199.50 4 1555102800 MSFT 120.95 1 1555016400 MSFT 120.33 2 1554930000 MSFT 120.19 3 1554843600 MSFT 119.28 4 ROW_NUMBER ͸ શͯͷߦʹ൪߸Λ
 ৼ͔ͬͯΒߜΓࠐΉ
  20. ͳͥ଎͍͔ʁ time symbol volume 1555102800 APPL 198.87 1555016400 APPL 198.95

    1554930000 APPL 200.62 1554843600 APPL 199.50 1555102800 MSFT 120.95 1555016400 MSFT 120.33 1554930000 MSFT 120.19 1554843600 MSFT 119.28 EACH_TOP_K ͸ ඞཁͳ෼͚ͩऔಘͨ͠Β ͋ͱ͸ॲཧ͠ͳ͍
  21. Φν͕ͳ͍ (·ͱΊ) • Hive Ͱʮάϧʔϓ͝ͱʹτοϓ N ݅Λऔಘʯ
 ͍ͨ͠৔߹͸ ROW_NUMBER ͕࢖͑Δ

    • Hivemall ͕࢖͑Δ৔߹͸ EACH_TOP_K Λ
 ࢖͏ͱΑΓ଎͘ͳΔ͔΋͠Εͳ͍
  22. ʲPRʳ