Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Hive 集計テクニック

Hive 集計テクニック

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

Yuki Ishikawa

April 19, 2019
Tweet

More Decks by Yuki Ishikawa

Other Decks in Technology

Transcript

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

    View Slide

  2. RDB ͚͕ͩ DB Ͱ͸ͳ͍

    ʂʂʂʂʂ

    View Slide

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

    View Slide

  4. খωλͰ͢

    View Slide

  5. Apache Hive
    • Hadoop ͷ෼ࢄετϨʔδ (HDFS) ্ͷ

    σʔλΛ SQL ϥΠΫʹૢ࡞Ͱ͖Δݴޠ
    • େن໛σʔλ෼ੳج൫ͳͲʹΑ͘࢖ΘΕΔ
    • PostgreSQL ͱ͔ͱಉ͡ϊϦͰॻ͘ͱࢮ͵
    • Map Reduce ͷ͓ؾ࣋ͪΛ࡯ͯ͠

    View Slide

  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ສ
    Α͋͘ΔΦʔσΟΤϯεσʔλ

    View Slide

  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 Ͱ΋ଐੑσʔλ (ਪఆ஋) ͕
    ͦΕͧΕҧ͏

    View Slide

  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ߦ͚ͩ࢒ͯ͠ଞ͸શͯআ֎͍ͨ͠

    View Slide

  9. 1. ·ͣࢥ͍ͭ͘΍ͭ

    View Slide

  10. Ϛονϣա͗Δ
    • શΧϥϜ෼ॻ͔ͳ͍ͱ͍͚ͳ͍
    • ༻్͕ຊདྷͷ MAX Ͱ͸ͳ͍
    • จࣈྻΧϥϜʹ΋ MAX ͢Δͷؾ͕Ҿ͚Δ
    • ࠷৽ͷσʔλ͕औΕΔΘ͚Ͱ͸ͳ͍

    View Slide

  11. 2. ΢Οϯυ΢ؔ਺Λ࢖͏΍ͭ

    View Slide

  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

    View Slide

  13. ROW_NUMBER ศར
    • ͱͯ΋Θ͔Γ΍͍͢
    • ͔֬ PostgreSQL Ͱ΋࢖͑Δ
    • ൚༻ੑ (ʁ) ͕͋ͬͯྑ͍

    View Slide

  14. 3. Hivemall Λ࢖͏΍ͭ

    View Slide

  15. Hivemall
    • Hive ্Ͱػցֶश͢ΔͨΊͷϥΠϒϥϦ
    • SQL ͰػցֶशͰ͖Δ
    • Apache Incubation Project ʹબ͹Εͨ
    • ͍͢͝ (খฒײ)

    View Slide

  16. EACH_TOP_K ؔ਺
    • Hivemall ʹؚ·Ε͍ͯΔؔ਺
    • Ϋϥελʔ͝ͱʹ K ݸͷσʔλΛऔಘͰ͖Δ
    • (ϢʔεέʔεʹΑͬͯ͸)

    ROW_NUMBER ΑΓ଎͍

    View Slide

  17. ଎͞ͷݕূ
    • Treasure Data ͷαϯϓϧσʔληοτͰ͋Δ

    NASDAQ ͷגՁσʔλ (໿880ສߦ) Λର৅
    • ֤໏ฑ͝ͱͷ࠷৽ͷגՁΛऔಘ͢ΔΫΤϦΛ

    ROW_NUMBER ͱ EACH_TOP_K Ͱॻ͖ɺ

    ࣮ߦ࣌ؒΛܭଌ͢Δ

    View Slide

  18. ݕূ݁Ռ
    1.46 ഒ͘Β͍

    EACH_TOP_K ͷํ͕

    ଎͔ͬͨ
    ROW_NUMBER EACH_TOP_K
    85 ඵ
    124 ඵ

    View Slide

  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 ͸
    શͯͷߦʹ൪߸Λ

    ৼ͔ͬͯΒߜΓࠐΉ

    View Slide

  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 ͸
    ඞཁͳ෼͚ͩऔಘͨ͠Β
    ͋ͱ͸ॲཧ͠ͳ͍

    View Slide

  21. Φν͕ͳ͍ (·ͱΊ)
    • Hive Ͱʮάϧʔϓ͝ͱʹτοϓ N ݅Λऔಘʯ

    ͍ͨ͠৔߹͸ ROW_NUMBER ͕࢖͑Δ
    • Hivemall ͕࢖͑Δ৔߹͸ EACH_TOP_K Λ

    ࢖͏ͱΑΓ଎͘ͳΔ͔΋͠Εͳ͍

    View Slide

  22. ʲPRʳ

    View Slide