2019.04.19 中国地方DB勉強会 in 沖縄
Hive ूܭςΫχοΫ2019.04.19 தࠃํDBษڧձ in ԭೄ@hoto17296
View Slide
RDB ͚͕ͩ DB Ͱͳ͍ ʂʂʂʂʂ
@hoto17296• ͪΎΒσʔλגࣜձࣾ σʔλΞφϦετ• ԭೄͷडୗσʔλੳձࣾ• ࠓͷΠϕϯτʹԿਓ͔ࣾһ͍Δ
খωλͰ͢
Apache Hive• Hadoop ͷࢄετϨʔδ (HDFS) ্ͷ σʔλΛ SQL ϥΠΫʹૢ࡞Ͱ͖Δݴޠ• େنσʔλੳج൫ͳͲʹΑ͘ΘΕΔ• PostgreSQL ͱ͔ͱಉ͡ϊϦͰॻ͘ͱࢮ͵• Map Reduce ͷ͓ؾ࣋ͪΛͯ͠
Γ͍ͨ͜ͱ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 ࠂ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 Ͱଐੑσʔλ (ਪఆ) ͕ͦΕͧΕҧ͏
Γ͍ͨ͜ͱ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ߦ͚ͩͯ͠ଞશͯআ֎͍ͨ͠
1. ·ͣࢥ͍ͭͭ͘
Ϛονϣա͗Δ• શΧϥϜॻ͔ͳ͍ͱ͍͚ͳ͍• ༻్͕ຊདྷͷ MAX Ͱͳ͍• จࣈྻΧϥϜʹ MAX ͢Δͷؾ͕Ҿ͚Δ• ࠷৽ͷσʔλ͕औΕΔΘ͚Ͱͳ͍
2. ΟϯυؔΛ͏ͭ
ROW_NUMBER Πϝʔδtime ࠂID ੑผ طࠗ ऩ rank1555664019 253678c9 உ 20-24 ະࠗ 500ສ 11555664020 2baf1f40 ঁ 35-38 طࠗ 400ສ 11555664022 105d9501 உ 25-29 ະࠗ 500ສ 11555664022 fe319a8e உ 30-34 طࠗ 600ສ 21555664024 c463fdf4 ঁ 20-24 طࠗ 400ສ 11555664027 325a2a5d உ 40-44 طࠗ 800ສ 11555664029 f445adf3 ঁ 25-29 ະࠗ 500ສ 11555664034 fe319a8e உ 35-38 طࠗ 600ສ 11555664034 f572f626 ঁ 25-29 ະࠗ 400ສ 1PARTITION BYORDER BY
ROW_NUMBER ศར• ͱͯΘ͔Γ͍͢• ͔֬ PostgreSQL Ͱ͑Δ• ൚༻ੑ (ʁ) ͕͋ͬͯྑ͍
3. Hivemall Λ͏ͭ
Hivemall• Hive ্Ͱػցֶश͢ΔͨΊͷϥΠϒϥϦ• SQL ͰػցֶशͰ͖Δ• Apache Incubation Project ʹબΕͨ• ͍͢͝ (খฒײ)
EACH_TOP_K ؔ• Hivemall ʹؚ·Ε͍ͯΔؔ• Ϋϥελʔ͝ͱʹ K ݸͷσʔλΛऔಘͰ͖Δ• (ϢʔεέʔεʹΑͬͯ) ROW_NUMBER ΑΓ͍
͞ͷݕূ• Treasure Data ͷαϯϓϧσʔληοτͰ͋Δ NASDAQ ͷגՁσʔλ (880ສߦ) Λର• ֤ฑ͝ͱͷ࠷৽ͷגՁΛऔಘ͢ΔΫΤϦΛ ROW_NUMBER ͱ EACH_TOP_K Ͱॻ͖ɺ ࣮ߦ࣌ؒΛܭଌ͢Δ
ݕূ݁Ռ1.46 ഒ͘Β͍ EACH_TOP_K ͷํ͕ ͔ͬͨROW_NUMBER EACH_TOP_K85 ඵ124 ඵ
ͳ͍͔ͥʁtime symbol volume rank1555102800 APPL 198.87 11555016400 APPL 198.95 21554930000 APPL 200.62 31554843600 APPL 199.50 41555102800 MSFT 120.95 11555016400 MSFT 120.33 21554930000 MSFT 120.19 31554843600 MSFT 119.28 4ROW_NUMBER શͯͷߦʹ൪߸Λ ৼ͔ͬͯΒߜΓࠐΉ
ͳ͍͔ͥʁtime symbol volume1555102800 APPL 198.871555016400 APPL 198.951554930000 APPL 200.621554843600 APPL 199.501555102800 MSFT 120.951555016400 MSFT 120.331554930000 MSFT 120.191554843600 MSFT 119.28EACH_TOP_K ඞཁͳ͚ͩऔಘͨ͠Β͋ͱॲཧ͠ͳ͍
Φν͕ͳ͍ (·ͱΊ)• Hive Ͱʮάϧʔϓ͝ͱʹτοϓ N ݅Λऔಘʯ ͍ͨ͠߹ ROW_NUMBER ͕͑Δ• Hivemall ͕͑Δ߹ EACH_TOP_K Λ ͏ͱΑΓ͘ͳΔ͔͠Εͳ͍
ʲPRʳ