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

カラムナフォーマットのきほん

 カラムナフォーマットのきほん

2017/05/18 BigData-JAWS 勉強会での発表資料です。
Explanation of Columnar format such as Parquet and ORC in japanese.

chie8842

May 18, 2017
Tweet

More Decks by chie8842

Other Decks in Technology

Transcript

  1. ΧϥϜφϑΥʔϚοτͷ͖΄Μ
    !DIJF

    View Slide

  2. ໨࣍
    •  ࣗݾ঺հ
    •  Ϗοάσʔλج൫ʹ͓͚ΔΧϥϜφϑΥʔϚοτ
    •  "QBDIF1BSRVFUͷ͖΄Μ
    –  ωετ͞Εͨσʔλʹదͨ͠σʔλϨΠΞ΢τ
    –  Ϧιʔεར༻ͷ࠷దԽ
    –  ૬ޓӡ༻ੑ
    •  03$ͱ1BSRVFUͷҧ͍
    •  ·ͱΊ

    View Slide

  3. ࣗݾ঺հ
    $IJF)BZBTIJEB

    !DIJF
    3FUUZ*OD
    4PGUXBSF&OHJOFFS%BUB4DJFOUJTU


    "84ྺ͸೥΄Ͳɻ
    4QBSL΍;FQQFMJOͳͲʹίϯτϦϏϡʔτɻ


    ػցֶश)BEPPQ4QBSL4DBMB1ZUIPO%#WJN
    ম೑ϐΞϊςχεεϊϘ

    機械学習&
    分析基盤構築やってます!

    View Slide

  4. ೔ຊ࠷େڃɺ໊࣮ܕάϧϝαʔϏε

    View Slide

  5. 3FUUZͷ෼ੳج൫ͷ঺հ

    View Slide

  6. ൃද಺༰ʹ͍ͭͯ
    •  Ϗοάσʔλج൫Ͱ͸ɺσʔλͷϑΥʔϚοτʹΧϥϜφ
    ϑΥʔϚοτΛ࢖͏ͱ͍͏ͷ͕Ұͭͷఆੴͱͳ͍ͬͯ·͢ɻ
    •  ຊൃදͰ͸ɺΧϥϜφϑΥʔϚοτͷಛ௃Λɺ1BSRVFUΛ
    ϕʔεʹղઆ͠·͢ɻ
    •  ͳͥΧϥϜφϑΥʔϚοτΛ࢖͏΂͖ͳͷ͔ɺͲͷΑ͏ʹ
    ࢖͏΂͖ͳͷ͔Λཧղͯ͠΋Β͑ͨΒΑ͍ͳɺͱࢥ͍·͢ɻ
    Amazon
    EMR
    Amazon
    Athena
    Amazon
    Redshi1

    View Slide

  7. Ϗοάσʔλج൫ʹ͓͚Δ
    ΧϥϜφϑΥʔϚοτ

    View Slide

  8. •  ςΩετϑΥʔϚοτ
    •  ߦࢦ޲ϑΥʔϚοτ
    •  ྻࢦ޲ʢΧϥϜφʣϑΥʔϚοτ
    Ϗοάσʔλج൫Ͱ࢖ΘΕΔϑΥʔϚοτ
    CSV { JSON }
    σʔλϕʔεʹΑ͘
    ࢖ΘΕΔϑΥʔϚοτ

    View Slide

  9. •  ߦࢦ޲ϑΥʔϚοτ
    ߦࢦ޲ϑΥʔϚοτͱྻࢦ޲ϑΥʔϚοτ
    •  ྻࢦ޲ϑΥʔϚοτ
    colA colB colC
    1 aaa 2017-04-01
    2 bbb 2017-04-02
    3 ccc 2017-04-03
    4 ddd 2017-04-04
    5 eee 2017-04-05
    colA colB colC
    1 aaa 2017-04-01
    2 bbb 2017-04-02
    3 ccc 2017-04-03
    4 aaa 2017-04-04
    5 ccc 2017-04-05
    行方向に連続してデータを保持
    ・ 行単位でデータを操作することの多い
    OLTP処理に有利
    列方向に連続してデータを保持
    ・ 特定の列のみ取得する分析用途に有利
    ・ 列のカーディナリティが低い場合、
    圧縮率が高くなる
    σʔλ֨ೲ୯Ґ
    一般的に分析用途のビッグデータ基盤はこっちが向いている

    View Slide

  10. •  03$
    —  "QBDIF)JWFͷͨΊʹ࡞ΒΕͨϑΥʔϚοτ
    —  "QBDIFͷτοϓϓϩδΣΫτ
    —  )JWF1SFTUP4QBSLͳͲ͕αϙʔτ
    •  1BSRVFU
    —  5XJUUFS͕ࣾ։ൃɺ$MPVEFSB΋։ൃʹେ͖ؔ͘ΘΔ
    —  "QBDIFͷτοϓϓϩδΣΫτ
    —  4QBSL1SFTUP%SJMM*NQBSB)JWFͳͲ͕αϙʔτ
    ओཁͳ044ͷྻࢦ޲ϑΥʔϚοτ
    ࠓճ͸1BSRVFUΛϕʔεʹઆ໌͠·͢

    View Slide

  11. "QBDIF1BSRVFUͷ͖΄Μ

    View Slide

  12. 1BSRVFU
    •  ೥ʹ(PPHMF͕ൃදͨ͠%SFNFMͷ࿦จͷ
    SFDPSETISFEEJOHBOEBTTFNCMZBMHPSJUINͷ಺༰Λ
    ϕʔεʹ։ൃ͞Εͨ
    Ҿ༻ɿIUUQTTUBUJDHPPHMFVTFSDPOUFOUDPNNFEJBSFTFBSDIHPPHMFDPNKBQVCTBSDIJWFQEG

    View Slide

  13. •  ωετ͞Εͨσʔλʹదͨ͠σʔλϨΠΞ΢τ
    —  ඇϦϨʔγϣφϧͳσʔλΛ૝ఆ͢ΔͨΊɺԿઍ΋ͷϑΟʔϧυΛ࣋ͭ
    ૄͳωετ͞ΕͨσʔλΛޮ཰తʹѻ͏͜ͱͷͰ͖ΔετϨʔδܗࣜͱ
    ΞϧΰϦζϜΛఏڙ͢Δ
    •  Ϧιʔεར༻ͷ࠷దԽ
    —  ಡΈࠐΈॻ͖ࠐΈϥΠϒϥϦʹ͓͍ͯɺ*0࡟ݮ΍Τϯίʔυσίʔυ
    ࣌ͷ$16ར༻ͷޮ཰Խ౳ͷ޻෉͕͞Ε͍ͯΔ
    •  ૬ޓӡ༻ੑ
    —  ༷ʑͳΫΤϦΤϯδϯ΍σʔλϚωδϝϯτπʔϧʹରԠͰ͖Δ

    σʔλϞσϧͷಛ௃

    View Slide

  14. ωετ͞Εͨσʔλʹదͨ͠
    σʔλϨΠΞ΢τ

    View Slide

  15. ωετ͞Εͨσʔλͷ࣋ͪํ
    SFDPSEPSJFOUFE DPMVNOPSJFOUFE
    S S
    "
    #
    $
    % &
    S
    S
    Ұ෦ΛಡΈग़ͨ͢Ίʹωετ͞Εͨ
    σʔλશͯΛಡΈग़͢ඞཁ͕͋Δ
    ඞཁͳσʔλʹͷΈΞΫηε͢Δ
    ͜ͱ͕Ͱ͖Δ

    View Slide

  16. ωετ͞Εͨσʔλͷ࣋ͪํ
    SFDPSEPSJFOUFE DPMVNOPSJFOUFE
    S S
    "
    #
    $
    % &
    S
    S
    ωετ͞Εͨσʔλ͢΂ͯΛ
    ಡΈग़͢ඞཁ͕͋Δ
    ඞཁͳσʔλͷΈΛಡΈग़͢
    ͜ͱ͕Ͱ͖Δ
    σʔλߏ଄ͷ৘ใΛอ࣋ͭͭ͠αϒηοτ͝ͱʹ
    σʔλΛอଘ͍ͨ͠

    View Slide

  17. %SFNFMͷσʔλϞσϧ
    ϑΟʔϧυ͝ͱʹɺ൓෮ϨϕϧͱఆٛϨϕϧΛ࣋ͭ͜ͱͰɺ
    σʔλߏ଄ͷ৘ใଛࣦͳ͠ʹσʔλΛอଘͰ͖Δ
    ˞൓෮ϨϕϧͱఆٛϨϕϧͷ಺༰͸ෳࡶͳͷͰ͜͜Ͱ͸આ໌Λলུ͠·͢ɻ
    ൓෮Ϩϕϧ ఆٛϨϕϧ
    Ҿ༻ɿIUUQTTUBUJDHPPHMFVTFSDPOUFOUDPNNFEJBSFTFBSDIHPPHMFDPNKBQVCTBSDIJWFQEG

    View Slide

  18. Ϧιʔεར༻ͷ࠷దԽ

    View Slide

  19. Ϧιʔεར༻ͷ࠷దԽํ๏
    ̍ɽܕεϖγϑΟοΫͳΤϯίʔυํࣜ

    ̎ɽ$16ύΠϓϥΠϯͷޮ཰Խ

    ̏ɽσʔλϑΝΠϧͷϑΥʔϚοτ

    View Slide

  20. Ϧιʔεར༻ͷ࠷దԽํ๏
    ̍ɽܕεϖγϑΟοΫͳΤϯίʔυํࣜ

    ̎ɽ$16ύΠϓϥΠϯͷޮ཰Խ

    ̏ɽσʔλϑΝΠϧͷϑΥʔϚοτ

    View Slide

  21. ܕεϖγϑΟοΫͳΤϯίʔυํࣜ
    •  1MBJO
    –  γϯϓϧʹ஋Λ࿈ଓͯ͠อଘ͢Δํ๏
    •  %JDUJPOBSZ&ODPEJOH
    –  ࣙॻ৘ใΛ࡞੒ͯͦ͠ͷ৘ใΛ༻͍ͯΤϯίʔυ͢Δํ๏
    –  ΧʔσΟφϦςΟ͕௿͍৔߹ʹ༗ޮ
    •  3VO-FOHUI&ODPEJOH
    –  ܁Γฦ͕͠ଓ͘஋Λޮ཰తʹอଘ͢Δํ๏
    •  %FMUB&ODPEJOHT
    –  ιʔτ͞Εͨσʔλͷࠩ෼Λه࿥͢Δํ๏
    –  5JNF4UBNQͳͲͷΠϯΫϦϝϯλϧͳσʔλͳͲ
    •  1SFpY&ODPEJOH
    –  %JDUJPOBSZ&ODPEJOH͕࢖͑ͳ͍ͱ͖ʹར༻͢Δ

    View Slide

  22. %JDUJPOBSZ&ODPEJOH
    *% 'SVJUT
    "QQMF
    0SBOHF
    -FNPO
    8BUFSNFMPO
    .FMPO
    #BOBOB
    "QQMF 0SBOHF 0SBOHF -FNPO "QQMF
    8BUFS
    .FMPO
    .FMPO #BOBOB "QQMF .FMPO

    &ODPEFE%BUB
    %JDUJPOBSZ

    View Slide

  23. 3VO-FOHUI&ODPEJOH
    B B B B B B C C C C
    B C
    &ODPEFE%BUB

    View Slide

  24. %FMUB&ODPEJOH
    100 101 101 102 101 101 102 101 99 100 105 107 114 116 119 120 121
    101 101 102 101 101 102 101 99 100 105 107 114 116 119 120 121

    CMPDL CMPDL
    SFGFSFODF
    1 0 1 -1 0 1 -1 -2 1 5 2 7 2 3 1 1
    ͭલͷ஋͔Βͷࠩ෼

    3 2 3 1 2 3 1 0 0 4 1 6 1 2 0 0

    NJO
    EFMUB
    NJO
    EFMUB
    11 10 11 01 10 11 01 00 000 100 001 110 001 010 000 000


    Ϗοτ਺
    Ϗοτ਺
    CJUCJU CJUCJUCJU
    σʔλྔ͕ଟ͘ͳΔͱߋʹѹॖ཰͸্͕Δ

    View Slide

  25. Ϧιʔεར༻ͷ࠷దԽํ๏
    ̍ɽܕεϖγϑΟοΫͳΤϯίʔυํࣜ

    ̎ɽ$16ύΠϓϥΠϯͷޮ཰Խ

    ̏ɽσʔλϑΝΠϧͷϑΥʔϚοτ

    View Slide

  26. $16ύΠϓϥΠϯ
    •  ܭࢉϦιʔεΛޮ཰తʹར༻Ͱ͖͍ͯΔঢ়ଶ
    •  ܭࢉϦιʔε͕ޮ཰తʹར༻Ͱ͖͍ͯͳ͍ঢ়ଶ
    5JNF
    5JNF
    1*1&-*/&
    1*1&-*/&
    #VCCMF

    View Slide

  27. 1BSRVFUʹ͓͚Δ$16ޮ཰Խ
    •  $16ύΠϓϥΠϯʹ͓͚Δ#VCCMFͷݪҼʹͳΓ΍͍͢
    ෼ذ໋ྩʢJGจ౳ʣΛۃྗݮΒ͢
    Ҿ༻ɿIUUQTXXXTMJEFTIBSFOFUDMPVEFSBIBEPPQTVNNJU SFGIUUQTQBSRVFUBQBDIFPSHQSFTFOUBUJPOT
    #JOBSZQBDLJOHͷྫ

    View Slide

  28. Ϧιʔεར༻ͷ࠷దԽํ๏
    ̍ɽܕεϖγϑΟοΫͳΤϯίʔυํࣜ

    ̎ɽ$16ύΠϓϥΠϯͷޮ཰Խ

    ̏ɽσʔλϑΝΠϧͷϑΥʔϚοτ

    View Slide

  29. 1BSRVFUͷϑΝΠϧϑΥʔϚοτ
    ฒྻॲཧɿ'JMF3PX(SPVQ
    *0ɿ$PMVNO$IVOL
    &ODPEJOH$PNQSFTTJPOɿ1BHF
    ͷ୯ҐͰॲཧΛฒྻԽ͠΍͍͢σʔλ
    ഑ஔ
    Ҿ༻ɿIUUQTQBSRVFUBQBDIFPSHEPDVNFOUBUJPOMBUFTU

    View Slide

  30. 1BSRVFUͷσʔλϨΠΞ΢τ
    NFUBEBUBϖʔδ͝ͱɺྻ͝ͱɺߦ͝ͱɺσʔλશମͱ͍ͬͨ୯ҐͰɺ
    εΩʔϚ৘ใϨίʔυ਺֤ྻͷ࠷খ஋ɾ࠷େ஋ͱ͍ͬͨ౷ܭ৘ใΛ
    ࣋ͭ
    ϝλσʔλͷ৘ใʹΑΓɺෆඞཁͳσʔλ͸ಡΈඈ͹͕͠Մೳ
    Ҿ༻ɿIUUQTQBSRVFUBQBDIFPSHEPDVNFOUBUJPOMBUFTU

    View Slide

  31. ΦϓςΟϚΠβʹΑΔ࠷దԽ
    4&-&$5DPM'30.NZUBCMFXIFSFDPM
    col1 col2 col3
    a1 0 c1
    a2 10 c2
    a3 10 c3
    a4 30 c4
    a5 50 c5
    •  QSPKFDUJPOQVTIEPXO
    ඞཁͳྻͷΈΛऔΓग़͢


    •  QSFEJDBUFQVTIEPXO
    ඞཁͳߦͷΈΛऔΓग़͢

    col1 col2 col3
    a1 0 c1
    a2 10 c2
    a3 10 c3
    a4 30 c4
    a5 50 c5

    View Slide

  32. 4QBSLʹ͓͚ΔΦϓςΟϚΠβʹΑΔ࠷దԽͷྫ
    Ҿ༻ɿIUUQTEBUBCSJDLTDPNCMPHTQBSLTRMHSBEVBUFTGSPNBMQIBJOTQBSLIUNM

    View Slide

  33. ૬ޓӡ༻ੑ

    View Slide

  34. 1BSRVFUϓϩδΣΫτ
    $ʹΑΔ1BSRVFUϑΥʔϚοτͷ
    3FBE8SJUFͷͨΊͷϥΠϒϥϦ
    1BSRVFUͷσʔλϨΠΞ΢τͳͲͷ
    ఆٛͷϥΠϒϥϦ
    +BWBʹΑΔ1BSRVFUϑΥʔϚοτͷ
    3FBE8SJUFͷͨΊͷϥΠϒϥϦ

    View Slide

  35. ଞϓϩμΫτͱͷ૬ޓӡ༻ੑ
    Ҿ༻ɿIUUQTXXXTMJEFTIBSFOFUDMPVEFSBIBEPPQTVNNJU SFGIUUQTQBSRVFUBQBDIFPSHQSFTFOUBUJPOT

    View Slide

  36. 03$WT1BSRVFU

    View Slide

  37. 03$WT1BSRVFU
    •  ΞʔΩςΫνϟͷҧ͍
      03$͸ωετ͞ΕͨσʔλΛͦΕͧΕผͷྻͱͯ͠ѻ͏
      03$͸ϒϧʔϜϑΟϧλͷػೳ͕͋Δ
      1BSRVFUʹ͸4DIFNBNFSHJOHͷػೳ͕͋Δ

    •  ϓϩμΫτ͝ͱʹɺ֤ϑΥʔϚοτ΁ͷରԠͷҧ͍
    ʢϑΥʔϚοτ͸͋͘·Ͱ࠷దԽ͠΍͍͢σʔλܗࣜͰ͋ͬͯɺ࣮ࡍʹ
    ॲཧΛϓϩμΫτଆ͕ରԠ͍ͯ͠ͳ͍ͱҙຯ͕ͳ͍ʣ
    •  σʔλͷಛੑ΍ར༻͢ΔϓϩμΫτɺ࣮ߦ͢ΔΫΤϦͷύλʔϯʹΑͬͯɺ
    ࢖͍෼͚Δͷ͕େ੾
    •  ৔߹ʹΑͬͯ͸03$΍1BSRVFUΑΓ΋4FRVFODF'JMFͳͲͷ΄͏͕
    εϧʔϓοτ͕ྑ͍৔߹΋͋Δ
    •  Ұ൪͍͍ͷ͸ɺݕূͰεϧʔϓοτ΍σʔλαΠζΛ֬ೝ͢Δ͜ͱ

    View Slide

  38. ·ͱΊ
    •  ෼ੳ༻్ͷϏοάσʔλج൫ʹ͸ɺҰൠతʹΧϥϜφ
    ϑΥʔϚοτ͕ద͍ͯ͠Δ
    •  1BSRVFU͸ωετ͞Εͨσʔλ΁ͷରԠɺϦιʔεར༻
    ͷ࠷దԽɺ૬ޓӡ༻ੑʹؔͯ͠޻෉͞Ε͍ͯΔ
    •  ϑΥʔϚοτ͸σʔλͷಛੑ΍ར༻͢ΔϓϩμΫτɺ࣮
    ߦ͢ΔΫΤϦͷ಺༰ʹΑͬͯ࢖͍෼͚Δ

    View Slide

  39. 8F"SF)JSJOHʂ
    ؾܰʹΦϑΟεʹ༡ͼʹདྷ͍ͯͩ͘͞ʂ
    ͋ͱ3FUUZ͔͍ͭͬͯͩ͘͞ʂ

    View Slide

  40. ࢀߟࢿྉ
    •  %SFNFM࿦จ
    –  IUUQTTUBUJDHPPHMFVTFSDPOUFOUDPNNFEJBSFTFBSDIHPPHMFDPNKBQVCT
    BSDIJWFQEG

    •  "QBDIF1BSRVFUυΩϡϝϯτ
    –  IUUQTQBSRVFUBQBDIFPSH
    •  (JU)VC
    –  IUUQTHJUIVCDPN1BSRVFU
    –  IUUQTHJUIVCDPNBQBDIFPSD

    •  "QBDIF03$υΩϡϝϯτ
    –  IUUQTPSDBQBDIFPSH
    •  &GpDJFOU%BUB4UPSBHFGPS"OBMZUJDTXJUI"QBDIF1BSRVFU
    –  IUUQTXXXTMJEFTIBSFOFUDMPVEFSBIBEPPQTVNNJU SFGIUUQT
    QBSRVFUBQBDIFPSHQSFTFOUBUJPOT
    •  +*3"
    –  IUUQTJTTVFTBQBDIFPSHKJSBJTTVFT

    View Slide