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

リブセンスのデータ分析基盤とAirflow

 リブセンスのデータ分析基盤とAirflow

2019/2/13
Data Pipeline Casual Talk
https://dpct.connpass.com/event/114040/

Livesense Inc.
PRO

February 13, 2019
Tweet

More Decks by Livesense Inc.

Other Decks in Technology

Transcript

  1. ςΫϊϩδΧϧϚʔέςΟϯά෦σʔλϓϥοτϑΥʔϜάϧʔϓ
    Copyright © LIVESENSE Inc.
    ٢෢ਖ਼࢙
    Ϧϒηϯεͷσʔλ෼ੳج൫ͱ
    "JSGMPX
    %BUB1JQFMJOF$BTVBM5BML

    View Slide

  2. w ೥ೖࣾ
    w σʔλ෼ੳج൫ʮ-JWFTFOTF"OBMZUJDTʯͷ
    ։ൃɺӡ༻Λ΍ͬͯ·͢
    w झຯ+Ϧʔά؍ઓ
    ٢෢ਖ਼࢙ !UBLF@N

    גࣜձࣾϦϒηϯεςΫϊϩδΧϧϚʔέςΟϯά෦
    σʔλϓϥοτϑΥʔϜάϧʔϓ
    ࣗݾ঺հ

    View Slide

  3. w Ϧϒηϯεͷσʔλ෼ੳج൫ʹ͍ͭͯ
    w "QBDIF"JSGMPXͱ͸
    w ϦϒηϯεͰͷ"JSGMPX׆༻ํ๏
    "HFOEB

    View Slide

  4. w ϦϒηϯεͰ͸σʔλऩूσʔλ෼ੳػցֶशͷج൫։ൃΛ
    ઐ໳ʹ୲౰͢Δ෦ॺ͕ଘࡏ
    w ෳ਺ͷϝσΟΞΛࢧԉ͢ΔܗͰԣஅ૊৫ͱͯ͠ฤ੒
    w σʔλ෼ੳج൫ͷ-JWFTFOTF"OBMZUJDTͱػցֶशج൫ͷ
    -JWFTFOTF#SBJOΛఏڙ
    Ϧϒηϯεͷσʔλ෼ੳ

    View Slide

  5. w -JWFTFOTF"OBMZUJDT
    w Ϧϒηϯεͷσʔλ෼ੳج൫
    w "84্ʹߏங
    w ֤ϝσΟΞͷϩάσʔλͳͲΛऩूɺՃ޻͠3FETIJGU্ʹσʔλΛू໿
    w ,1*νΣοΫͷμογϡϘʔυΛ࡞੒ͨ͠ΓΞυϗοΫ෼ੳͷͨΊͷΫ
    ΤϦΛ࣮ߦ
    w ػցֶशج൫΍ΞτϦϏϡʔγϣϯ෼ੳͷσʔλιʔε
    w ࣾһ͸୭Ͱ΋42-Λୟ͍ͯ෼ੳͰ͖Δ
    w -JWFTFOTF#SBJO
    w Ϧϒηϯεͷػցֶशج൫
    w ($1্ʹߏங
    w -JWFTFOTF"OBMZUJDTͷσʔλΛݩʹɺϞσϧΛੜ੒
    w Ϩίϝϯυ΍"#ςετɺଟ࿹όϯσΟοτͳͲϝσΟΞڞ௨Ͱར༻Ͱ͖
    ΔػցֶशγεςϜ
    -JWFTFOTF"OBMZUJDTͱ-JWFTFOTF#SBJO

    View Slide

  6. w ج൫γεςϜͷઃܭɺ࣮૷ɺӡ༻Λߦ͏σʔλΤϯδχΞ
    w ػցֶशγεςϜͷઃܭɺ࣮૷΍ػցֶशΞϧΰϦζϜͷ࣮૷Λ
    ߦ͏ɺػցֶशΤϯδχΞ
    w σʔλूܭ΍෼ੳΛߦ͍ɺ֤ϝσΟΞͷ໰୊ղܾΛਐΊ͍ͯ͘
    σʔλΞφϦετ
    ͱ͸͍͑ɺ͖ͬͪΓͱઢҾ͖͍ͯ͠ΔΘ͚Ͱ͸ͳ͘ʜ
    w σʔλΤϯδχΞ΍ػցֶशΤϯδχΞ΋ूܭ΍෼ੳ΋͢Δ͠
    w σʔλΞφϦετ΋ϩδοΫͷ࣮૷΋͢Δ
    -JWFTFOTF"OBMZUJDTͱ-JWFTFOTF#SBJOʹΑͬͯɺ
    ࣮૷ɺ෼ੳɺӡ༻ʹ֞ࠜΛ࡞Βͳ͍ɺγʔϜϨεͳ׆༻
    ͕࣮ݱͰ͖͍ͯΔ
    ϝϯόʔߏ੒

    View Slide

  7. ϦϒηϯεͷσʔλͷྲྀΕ

    View Slide

  8. -JWFTFOTF"OBMZUJDTʹ͍ͭͯ
    3 F E T I J G U E D Y M B S H F º
    ς ʔϒϧ ਺
    Ϩί ʔ υ ਺ ԯ Ϩί ʔ υ
    ར ༻ ༰ ྔ 5 #
    ΞΫ ςΟ ϒϢʔ β ໊
    ΞυϗοΫɾΫΤϦ EBZ
    # * δϣϒ ɾ Ϋ Τ Ϧ E B Z
    Ϧ Ϧ ʔε ೥ ݄

    View Slide

  9. -JWFTFOTF"OBMZUJDTͷΞʔΩςΫνϟ

    View Slide

  10. -JWFTFOTF"OBMZUJDTͷΞʔΩςΫνϟ
    ࠓ೔͸͜ͷ࿩Λ͠·͢

    View Slide

  11. w ϫʔΫϑϩʔΛεέδϡʔϦϯάɺϞχλϦϯά͢ΔͨΊͷ
    πʔϧ
    w ݩʑ͸"JSCOC͕ࣾ։ൃ͠ɺ"QBDIF4PGUXBSF'PVOEBUJPO
    ͷΠϯΩϡϕʔγϣϯϓϩάϥϜʹՃೖɻ
    w τοϓϨϕϧϓϩδΣΫτʹ
    w 1ZUIPOͰ࣮૷͞Ε͍ͯΔ
    w ($1$MPVE$PNQPTFSͱͯ͠"JSGMPXͷϚωʔδ
    υαʔϏε։࢝
    "QBDIF"JSGMPXͱ͸

    View Slide

  12. w ݩʑɺόονॲཧΛ3VCZͷSBLFͰॻ͍͍ͯͨ ࠓ΋

    w ౰࣌ͷεέδϡʔϧ؅ཧ͸DSPO
    w XIFOFWFSͱ͍͏HFNΛ࢖ͬͯɺλεΫεέδϡʔϧͷ
    όʔδϣϯ؅ཧ͸͍ͯͨ͠
    w ͚ͲݟͮΒ͍ͷͰTQSFBETIFFUͰ࣮ߦ࣌ؒͷ؅ཧΛͯ͠
    ͍ͨ
    w ͔͠͠ஈʑλεΫɺόονͷྔ͕૿͖͑ͯͯʜ
    w ґଘؔ܎΋ෳࡶʹͳ͖ͬͯͯʜ
    w ఘΊͯɺδϣϒϚωδϝϯτπʔϧͷಋೖΛܾΊͨ


    "JSGMPXΛಋೖͨ͠ܦҢ

    View Slide

  13. w δϣϒͷεέδϡʔϦϯά
    w DSPOܗࣜͰࢦఆՄೳ
    w λεΫͷґଘؔ܎ΛίʔυͰهड़
    w 1ZUIPOͰ%"(΍λεΫΛهड़
    w %"(༗ޮඇ८ճάϥϑɻ͜͜Ͱ͸λεΫؒͷ࣮ߦॱ
    ΍ґଘؔ܎Λࣔ͢άϥϑ
    w 8FC6*ʹΑΔλεΫ΍ϨϙʔτͷϏδϡΞϥΠζ
    "JSGMPXͰͰ͖Δ͜ͱ

    View Slide

  14. w 1ZUIPOͷίʔυͰهड़
    w 0QFSBUPSͰλεΫΛͭͣͭهड़
    w CBTIίϚϯυΛ࣮ߦ͢Δ#BTI0QFSBUPSͷྫ
    λεΫͷهड़
    # DAG
    dag = DAG(‘test_dag’, start_date=datetime(2019, 2, 13)
    # bashίϚϯυλεΫͷྫ
    test_task = BashOperator(
    task_id='test_task',
    bash_command='ls -al’,
    dag=dag)

    View Slide

  15. w λεΫؒͷґଘؔ܎ΛϏοτγϑτԋࢉࢠΛ࢖ͬͯهड़
    λεΫؒͷґଘؔ܎
    # DAG
    dag = DAG(‘test_dag’, start_date=datetime(2019, 2, 13)
    # bashίϚϯυλεΫͷྫ
    task_ls = BashOperator(
    task_id='task_ls',
    bash_command='ls -al',
    dag=dag)
    task_echo = BashOperator(
    task_id='task_echo',
    bash_command='echo "hoge"',
    dag=dag)
    task_date = BashOperator(
    task_id='task_date',
    bash_command='date "+%F %T"',
    dag=dag)
    # λεΫؒͷґଘؔ܎ΛϏοτԋࢉࢠͰهड़
    task_ls >> task_echo
    task_ls >> task_date

    View Slide

  16. %"(5SFF7JFX
    w %"(ͷλεΫ͝ͱͷεςʔλεҰཡ
    w ͲͷλεΫ͕ɺ͍ͭͲͷΑ͏ͳεςʔλε͔ͩͬͨҰ໨ྎવ
    w ࣦഊͨ͠λεΫͷ࠶࣮ߦ΋Մೳ

    View Slide

  17. %"(5BTL%VSBUJPO
    w %"(ͷλεΫ͝ͱͷ࣮ߦ࣌ؒͷਪҠάϥϑ

    View Slide

  18. %"((BOUU
    w ࣮ߦ͞Εͨ%"(ͷΨϯτνϟʔτ
    w 5BTL%VSBUJPOͱ͋ΘͤͯϘτϧωοΫ͕ࢹ֮Խ

    View Slide

  19. Ϧϒηϯεͷ"JSGMPXӡ༻ߏ੒

    View Slide

  20. w 3FETIJGUʹର͢ΔఆظతͳΫΤϦ࣮ߦ
    w EBJMZͷूܭ࡞ۀͱ͔
    w αϚϦςʔϒϧͷੜ੒ͱ͔
    w &.3ͷىಈτϦΨ
    w &.3࣮ߦલͷલॲཧɺޙॲཧΛهड़
    w લॲཧऴྃޙɺ&.3ىಈɺTUFQ௥Ճɺॲཧऴྃ଴ͪɺΫϥε
    λఀࢭɺޙॲཧͷྲྀΕΛ%"(Ͱهड़
    w 3FETIJGUͷΫΤϦͰॻ͘͜ͱ͕ࠔ೉ͳෳࡶͳॲཧΛ&.3Ͱॲ

    w (MVFىಈτϦΨ
    w 3FETIJGU4QFDUSVN༻ʹ1BSRVFUม׵͢Δॲཧ
    w &.3ಉ༷ɺ(MVF࣮ߦલͷલॲཧɺޙॲཧΛهड़
    ͲͷΑ͏ʹ"JSGMPXΛ׆༻͍ͯ͠Δ͔

    View Slide

  21. w ϩδοΫͱ%"(ͷ؅ཧΛ෼͚͍ͯΔ
    w ͦͷͨΊɺϩδοΫͷςετΛ෼཭࣮ͯ͠ߦͰ͖ΔͨΊɺ
    ൺֱతճ͠΍͘͢ͳ͍ͬͯΔ
    w TUBHJOH؀ڥͰΫΤϦͷಈ࡞ςετ
    w ࣮σʔλΛ࢖ͬͨςετ΍ॏ͍ॲཧͷςετΛ͢Δ৔߹
    ͸ɺ3FETIJGUͷεφοϓγϣοτ͔ΒҰ࣌తʹผΫϥε
    λΛཱ࣮ͯͯߦ͢Δ͜ͱ΋͋Δ
    w Ұํ%"(ͷςετ͸͋·Γ͖ͬͪΓग़དྷ͍ͯͳ͍ʜ
    w ։ൃ؀ڥ΍TUBHJOHͰ%"(͕ਖ਼ৗʹಈ࡞͍ͯ͠Δ͜ͱΛ
    ֬ೝ͢Δ͙Β͍
    ςετʹ͍ͭͯ

    View Slide

  22. w Τϥʔൃੜ࣌
    w ϩδοΫଆΤϥʔൃੜ࣌͸4FOUSZͰΞϥʔτ௨஌
    w Πϯϑϥ؂ࢹ͸.BDLFSFM EBUBEPH $MPVE8BUDIΛซ༻
    w ҟৗσʔλݕ஌͸SFEBTIͷΞϥʔτػೳ
    w Ξϥʔτ௨஌ઌ͸4MBDLʹू໿
    w CPUΛ࢖ͬͯɺSFEBTIͷάϥϑͷεΫϦʔϯγϣοτΛ
    ग़ྗͰ͖ΔΑ͏ʹͳͬͯΔ
    ϞχλϦϯά

    View Slide

  23. TMBDLͰSFEBTIͷάϥϑදࣔ

    View Slide

  24. w λεΫͷεέδϡʔϧ΍ґଘؔ܎͕੔ཧͰ͖ͨ
    w (6*ͰҰ໨ྎવ
    w ίʔυϕʔεͰ%"(؅ཧ͕Ͱ͖ΔΑ͏ʹͳͬͨ
    w ࣮ߦ݁Ռɺ࣮ߦ࣌ؒ΋؅ཧͰ͖ΔΑ͏ʹͳͬͨ
    w DSPOͩͱදݱ͖͠Εͳ͍ෳࡶͳґଘؔ܎΋؅ཧͰ͖ΔΑ͏ʹͳͬͨ
    w λεΫಉ࣮࣌ߦ਺ͷ੍ޚ΋Ͱ͖ΔͷͰɺ3FETIJGUͷෛՙΛߟྀͨ͠ӡ
    ༻͕Ͱ͖ΔΑ͏ʹͳͬͨ
    w ࣮ߦ݁Ռͷϩάͷ؅ཧָ͕ʹͳͬͨ
    w ࠓ·Ͱ͸όοναʔόʹೖͬͯɺ௚઀ϩάϑΝΠϧΛݟΔ͔͠ͳ͔ͬͨ
    w (6*্Ͱ֬ೝͰ͖ɺো֐ͷݪҼͷௐࠪ΋ָʹͳͬͨ
    w 8PSLFS͕εέʔϧͰ͖ΔΑ͏ʹͳͬͨ
    w ͕ɺࠓͷͱ͜Ζؒʹ߹͍ͬͯΔͷͰɺ·ͩͯ͠ͳ͍
    "JSGMPXΛಋೖͯ͠Α͔ͬͨ͜ͱ

    View Slide

  25. w όʔδϣϯΞοϓ͕݁ߏ໘౗
    w ୯७ʹஔ͖׵͑Ε͹ಈ͘ɺͱ͸͍͔ͳ͍
    w ઃఆϑΝΠϧͷ࢓༷͕มΘͬͨΓɺ%#ͷΞοϓσʔτ͕ඞཁͩͬͨΓɺ
    0QFSBUPSͷ࢓༷͕มΘͬͨΓʜ
    w &YFDVUJPO%BUFͱ࣮ࡍͷ࣮ߦ͕࣌ؒͣΕͯΔ
    w &YFDVUJPO%BUF͕ͳͷʹɺ࣮ࡍʹ͸ʹ࣮ߦ
    ͞ΕͯͨΓ
    w ଟ෼λΠϜκʔϯॲཧʹ໰୊͕͋ΔΜ͡Όͳ͍͔ͱਪଌ
    w ͰλΠϜκʔϯ໰୊ղܾͨ͠
    w δϣϒͷεέδϡʔϧ؅ཧ͕͢΂ͯղܾͨ͠Θ͚Ͱ͸ͳ͍
    w ॏ͍ΫΤϦ͕࣮ߦ͞Ε͕͔͔࣌ؒΔͱɺผͷ%"(ͷ࣮ߦ࣌ؒͱඃΓɺ
    3FETIJGUʹෛՙ͕͔͔ΓɺλΠϜΞ΢τ 3FETIJGUͷઃఆ
    ʹͳͬͯ͠
    ·͏͜ͱ΋͋Δ
    "JSGMPXӡ༻Ͱۤ࿑ͨ͜͠ͱ

    View Slide

  26. w ϦϒηϯεͷσʔλύΠϓϥΠϯͱσʔλ෼ੳج൫ʹ͍ͭͯ
    ঺հ͠·ͨ͠
    w σʔλ෼ੳج൫Ͱ"JSGMPXΛ͔ͭͬͯσʔλϫʔΫϑϩʔΛ
    ؅ཧ͍ͯ͠·͢
    w "JSGMPXΛ࢖͏ͱεέδϡʔϧ΍λεΫͷґଘؔ܎Λ؆୯ʹ
    ؅ཧ͢Δ͜ͱ͕ग़དྷ·͢
    ·ͱΊ

    View Slide

  27. w ϦϒηϯεςΫϊϩδΧϧϚʔέςΟϯά෦ͷ೔ʑͷ׆ಈͰ֫ಘ
    ͨ͠৘ใΛެ։͍ͯ͠·͢
    w IUUQBOBMZUJDTMJWFTFOTFDPKQ
    w "JSGMPXʹ͍ͭͯ΋هࣄΛެ։͍ͯΔͷͰɺซͤͯ͝ࢀর͍ͩ͘͞
    w IUUQBOBMZUJDTMJWFTFOTFDPKQFOUSZ
    13-JWFTFOTF%BUB"OBMZUJDT#MPH

    View Slide

  28. ͋ͨΓ·͑Λɺൃ໌͠Α͏ɻ

    View Slide

  29. ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ

    View Slide