From 7bd4efedc0846c7c00791ce3666dc289e70f6cca Mon Sep 17 00:00:00 2001 From: Andy Grove Date: Mon, 3 Nov 2025 14:06:54 -0700 Subject: [PATCH 1/3] diagrams --- .../contributor-guide/images/comet_scans.png | Bin 0 -> 98889 bytes .../source/contributor-guide/parquet_scans.md | 498 ++++++++++++++++++ 2 files changed, 498 insertions(+) create mode 100644 docs/source/contributor-guide/images/comet_scans.png diff --git a/docs/source/contributor-guide/images/comet_scans.png b/docs/source/contributor-guide/images/comet_scans.png new file mode 100644 index 0000000000000000000000000000000000000000..90c60488ab4579afe77e749332a7efdcbe9c22ae GIT binary patch literal 98889 zcmeFZcT`kc(>@3n6$JzVp~)>EL2{8nvW)6Dqd++zn@Atj$nl*pSnwfuC>-6F5y-!u`s@hLIbwXY!$=t^x!$LztyD$4( zQWXsiqXiA^kHNclfM4`oNGs6Le9>ejpQ*X(ZKYz?Jd~%S&pzHRRt@aKF54?EF`|D3v1_0j(w4@7DAvwdP}$bI;;`l}E7 zMx<2Xs?4|VsL(TYmCG=}j2Chkx*IZB#DkBY;+FhcO($y;22OQcwcXpz zQqzowh~xdL9W(y%M9DNrKq%K`lHeC(izM0;dKR^u}4!*^#*NweXrk47Q z+uAx;%$To&k0pV%P__=H-;>%V^FPO7{DP2(CxvIg5ZmFvf(1<^GY-=(^i`JLd%@oYsHRLTM9?pw z90RLGGCt2K0qUS30><*g$_^=MS`HvB1|0>7KZ#fnYEgKvo=<*=7g|^TH4EzuAC#FI zg~1}(k$@3?mHpzM$e)2XC zbf*bJxa@^s|IVF8Z8x!*_8Y0p0#eB|>_uOd;Pi=C+j0J~jfQ=*6uJ$8miqYCOYnSH zkAaYf!Msq*?oV+ielw`|sT?j~F=jS5k8`e~iK+b~ZMM2r zwm)EHA6%NM41k>URm7NVz$y{6!0gM!6eA<=OA-U#B7Pz=#m(o~q_)+rnn&ASWnlE; zvFW$1-)XdQOZT#h12o{#dj7=!Yvc|ZhJ${Imkph?6()(yVTaWHBUpmU*;K&rG?{cE z+aO`L!SR%vqnpr$VnTjb;E&7Uneo-;p_8)8^?X1Nptiur zrDPC2hyUUEF_X=?unJ>49WKuj+Q`quxkDEg@r(*Jf_^sLly`B4?uH`JkUh>Atn9;r z>>H=hNf*w$h`rjOVYM7dQ6~M|B&dI{7BP2rF@0*~SY!o9(E_ zj=|2pJnVEYi1_gb3t-YHOVuB|0mFD;eeX-VXO*AjNAm(Ad>-4`Dl@lPTn`U>dOm=k zh6oAX1&LQ+swLb^hd?{6{W|&UvWCd6Jm1J}%Y)L%gcrEj zl&|T_+V*szi~{52?&o(N9-WJuN3%K<-H$Mwt9YdI%U=h_VgUy4s33#O(aZkn_#Af! zHy}Fe> zx;e682J${k8*^B6n12mS{A*xZ%!HyreYQ5%CP%5NID^AEDOTnVgY%lmEDicR@gU+2 zp_UdS=vFcrlCexq1sf|{oq|Q=5EU>?2LJuG1wVeht_JHT_;eAa|9OEPWBWoeUjKoA zndQ;#ItE}*LQTC$uzQ6mD~54dJ}v%uTUzOGbRXt*2gFz^6~$<4^V)KA}{JUhkC!Gbd-eJ5Qs*4=g-(IAozeFS!L#ev5^2UBGJ^QMIE=YxQ>+y|V0B?=Nm64a8jDgq3@9;Wz4f4+DaSJbtTC5?AFPH<<-6 zLeF-@^WFqsL4QEiIVEi*bteOY|FQ}!A0U|sye|G4@8<=0573{l9}J7f$_`!751r&6 z2Nvaa6LfFpVgxn})W-)O`Jj>5=^ZhR^k2VkX)vnefc%9di>3Z4R(||ZncIrqu?+tZ z{bU>-Hh4gRMb?e*ct#E)lRsGh#JI3x7Boz7GliLabgt;N=@Z(*lWA}!N1hX`Ny1M# zF~HzysN`wX7Y(dr><=YjUt*P#*8HMBRSuthehl~`<4n1ak5{C|UCeeHgBiu5f5;g) zWZ*kTRSe6xO?!N#@zjf`g&@xI6N3rRunjnZNGiLdW69-Nk=i0*jvX`#Ko+rQz;5?tM{X zXrlLjI&KBm<$t)=Pv*vFD&CLtVqvS|v|BXh*)jAg-gLh&9|Bnum1IEGpYQ*qoCD{1 z)PFeczm-8MzsL!EAo^a6l6+j_)yrzH^=)>BjnkHV%XW`uWogR>Df_dA`m7T-)zieP=>LUzNS?<2ww4!nsU>CncAYp(As0)ChO2W zYjyS{yr*~vE$g6IH>!Zo^=P>%-sb^j3@B=+Wp*Sdc3tMbTIBy?%7oNoMdzuVuit=# z7$kDh&M2D6%yS+oy1j3vZ=)uHc@l!UPAF(ZN_Rz#Af!5$rIza_r(fp&2SX3t$MgDr ziMD`tw(x;s-U948u$^w(wjNvJp?BeJKd-_aeZ)_iS}>fe%w@JaXtYUrY_}A0X;?kC z-Ljm*99QdrLjr+Jc=i?{UmfcHhaws!*RT<_N(|yd! z+@u$a+*ZD9#7=i;W%veT*S|=@&Yj{L<8hAki{7O2Y%cSG8>1M=KTN_`f|?Co(qB1U zM2)aJv(DoAtj4P^xZ$4`l^q}cdoy;{<1wF<>iU*{tVrd(si_XU+-rDynNN3k{tRD? zSs|}yt5N4*W%N>i!?06~$#6kNYaoNySpjsV;CNGPP@oIa49Ow?K(<7mp5$`iz=rG` z5`yF&{t$4f86B$}n;K8u%;3MCq4a^bXFKRST$|<>t)H!cYj$6C-GO9YES zTRNYG3SCorKV5a>GE6zi>m^s_on5G1=4ISyz38cO5pM#I;3gXT_2GbS z{?6*uR-Et^a))WpOcuVbXVa?E6|>{B4BK#eC!OLFtF9r7E4Z3srcWi=B*u57C-ZNd zQYz>OTmmiYsiDo>l`eleLU)oWrL0NW`WU(p{cO}-F25vT0d2|kd=GijCRXEG@jPgZ z3pp4w-PAAGQVtSDR+;KvKL4~@abWFuUJy`Ei%C*gdmL;urAsfl;P&D)@mM4C;<+kw zKwp6LxYV#5gJR}|-0w?9{|A{O!C2eE!PW!IALu^9yjIb`9H#}}oP3p&>mju#aR}xm zJFn6}4&884P%mUQ!=lJg%o_PBEC{1v>ZD7(L(dtJ&o-+SKTV!((f`(z@--ZG-@QV0)veAZkGPLH6NcQ^Evm^ob2 zOnE6gw%S)U+b-}uSI1Smy%YzSZt|>yTZMSfM8{qK6CW!oW;-T)ttbZ$!klX|`i`+)Muw$oDbQ2TP(c5~5o$=pb z#Z5b@ITZ5|bx*;3M;A<(C%vbrn(f>2qPj$paptf-^c>zqE0ZYPk+#!jRJ%`+C2+h; z?6o*__5if;;I!zKyM@`mjVR7~lKHFfWGnIj7hrPnCn;?lo{OBO^^WxE_Of&ZaTwud z#>NCJ4vzSQZ}6qbh`kq%lxwX_LXIQnY=-mHad&41ygCFp3bgAJ_Y^pcWt)16| z(ynAcflEE5l_u^v`4HBrFJNSkUuU)HX5r@>w`VTxDS6KW<53*q%|t=R?4^~Xg7W%} z-_^|x(IXz;!bm?GTdOH(yXBxG4?(A@TQ4oH^E%{u){){ZW#76#AhW07`3bvqQt=BT%bM((sp=(Du%F!j<0v~2-WNlS4!#ZYnmWujVyQlY$H8YdV%W>Dz*mFB$Mi%M_%`lL4E)CKI9{4rqsxxS$$PvsyN{_eh;J;o7)%aG$Y#@H@UgJ=n{IdJ4KAN0PSs6 zk=1KHoRy2+mIh)fIROw;@e6gA*|*NZ2sa)+@s;oTgs0w!~&(GJ^iJCT6QWf@2EIY3cO1rTV9O zULPuTH`@qzu1g7muqH(@)7L0$9S6eZino$I_dTnvIV>oH#*#5(cjRs8x|O+M=vBrI zo(4M=Zwxxd6@)5oC1dnfbWK$>tCwS zrChtD+g41uz-q_T0|?=m`5c$dgk$UEulb)dr}BjCPeqws&b^tMnGrGg8ahY#j&5ts zt5wv8$k&7p6XMZzgYGR5-pFC*o!#SBt;Bk!I_#zAC;i5nl2U0ECv$Zw=eV|Xv-x60 zQ2rWP6#?yi7%Fo&LQ>S$A2-3%q=KD&aW?SITv+h_NVu)<>2t!srpkvOC(rBE_`6#$hN#;=tYtEJu1BOYrNwX_HRYge{|0-&gS#A`r2Ks{ zhatc!0Ngc>@bK_q&%Jy@f^P7QW!>`+Tu@mW#MuUg{9OgErEhSh72t@anjC z6tOz3z#-#Vmp1a&6~R5{cz%K=mGrJ-&NirguQp8p>nG~93l+BUT0mn5P)@ZSyzZIZnm+ zB!|x|Ju)R6=R>sQkm$9(Am1{Wxi4Ki_f+V3$i;i9ztyR{U`{#eknfSL z4``62K5p^rQCtSY<|qnM)%Fypl`GYwv4U_T1z9j7`nv@RLz|)aBT)`cD({X)+`_i3vd&k|OsSA*7Ie7fMoN5Wb-Tqf+7i!;L~#+S$u#7t`Vw7rZAD~piHUP4}~=ZhiJ8nm%+Zh2vMvGG^B-S?Pk)tc7vp9!bn zFx96_x%i&iN|F@%Eca1NLSb47j*Aqa^ltuEcBIcr5b|d3R>ZfrheN0QZ`a6IOd?Bd)+A#@9sJhVl*Z@lPiJ;AIS&F^=m z{nslnRJ=FMyAI}@P=6%fML9i&o|n4KHn%F*42lq@&{@U`kgQQZZRkX2n*>h@H*+X% zCCNUtN}daUCNXM@%cw+a{u)FP=@)W2Xq?Om_~-9AiEUwqr=1eQmRQ=Y8Ey2ZpQRuX zmag9VkZ_#x1&WS=8n{514jB9yGV9`7%LY67*w*F=86Rgm-oO*9Lw-liJittG72W?x ze_&|4Rgh2RY-j837UX8rC5DR4kZvHHCih9hJ6D`>OP58`f{n2UFivqf2xa#sTz~p&>csx9l}oLd^+mt*a7GJjsMOGT&5|7!fsdx@raYB z#e{Cwc#c;0q9pznA-~=IiZ^A7D{|aLClsNF<_#%q z^Vi0Dp^{e&A0cMy&#sA@W`ogZ4(aD$!!!FI}e_mET;x*i%I?Z)ELXA6Kix(ECFfn~#ii=Y*ylf~~h2d<-Bn_7g$e zJ zC*zWmd1@y1BO;y6;b4*_c?x**kQGFjct~oD;A*0N;Un0QG8Lj)w|~~r4PSCP!W2iPD&jCK zGqq{YVOrCL#!1LLgF5=rO?tMaGqcK^9tK1FE^>o5>iZ79q!J+`WO^8xM?WcELxb&F zwriko%sGeoOo8H^Li~<9ion$OBs|N695W%r{{pi5StSqez&fe+wc96W+9;EWV{zMH zA&Evu_h`U4CBvuE=fsYSOO8`~ z36zyfC)vp@ryVQEZ*<)@)xrVU7v&TqLv*mJoa1N9b(bG=ybi=o`pVUskjQkALj^Pi zhY(4x*xdGFFqHSE~+?98`fn3+U(!|fy?7awiHwKcwQ5@!4 z@t8YqoW3*WrfM+}Beg(EG}$PtR@KU0ov}K1oEg@0i`#OF3r7ui{J3M2H$S4k$Dg5B za%$op_wYlpc^z#1x>hgdn7>`9DaGqLEPE>Y-2GN_^zzcS<0}q3vZ)1o83hWd8i5uy zio}M{uCFk;y2_1yt;32bWGA|`!gN4ZkfFg0Ssu@l?Z_EvQCH*0Y*1||YtOe=D`3-+ z$kwBYFCwecwj!3?`Q_mFuA;lB`lln&y#getwGJuAu^jafVkd{!edfmu4VgrBqoYj}v>1R4w< zrr(#iJ6+JTV*E{kkHxoZX1r(xZDgdy2N`S)YqJ1hCX8D9XqXf3P_8FogkyB`f%`68 zD~9c<+>^(T4%k%nP8_gzInia3sqcG_nLwv64=u~MHl6#2O?33f@26&f+YZE(K8lWg zhnR~MeK0j){A22-hC$=;Yj@Z4hw!p@NywBH_l)w!u=iL_MKa)8Bv{k(I_NPeElAR7 z-NQ_=`1(_>iYxDe#hv*kVgcf2N>ZTlYYi+9l8~c|(+ak0tGS~cdTU5rii9=N^R>YR zWnlp%?}|jkL;^1R#opt)lX49)SDXoTxZKwd64uLTw8^otqkPy))BZ!o$xh0pF7%N! z;aWd+XG0O6SAzHa8kX2>_(hlcZQPb7w?ya1qw$7wG8JzpaK85kvZDz6eyolu)i)Ha zC;HkJD%ULw_id;0l{N2qTtsvzY~y;>Fxvh+rmM?4}4X#MnjMDLi&W ztC}j3{F7n zgXQRYZtXSAKP`(WY;U*A5|1?O@#loV4!K&oa2Rkhxq9rM$FUK;fN!4>xrjc9!rhSv zJYLw?kCmQfD2D3EXLd3WP%*?W63g zt`u*fOBdFwsVb*}!;gM@D(*KqwkA_>Et>mnGGNQvQ6u@@_oB|I5Tw=vP*7+j*H!pj zSo&pLxv94d3l1V-ufUUK0g|Esw;Or8HE^uhBigapdxoIH9hk*y<$PT9p|o-(U@dd2 zLxSbq50x=*!hRt>bJY8?r3(wq8b>=5R;nFpu&3o4!T8(-a54V0;P!OlEn^LXq*Asw8bzaAG-_?>bl=ta2cV;@~o z2aCnoVG$l28x5T5c`_Jjxe#-j;lHY2Hm3d(reO6;y1b1LQ&kJMQt3s~GuEVSrj&Kt zSzq@>iDxzauB@E1)k7jnv=lq?Bzp1<9hD}Hcv5=PLMi(tbO2s{1CW3CmCbI?elej? zAtam~gu)3nKa1g)r=_EsJvli4KNd=$9kZ!TrnOVlwu z^C7NGe#e!ru4(oW@}22s;|E4DktgKjLHAD=9LXOyWVt-spj;HV!#A$}f5NLdwH~Ia zWXvT02&aAf)&!?S(Y^H+sbi^83jU0&9Z9j*d}Gc)&to-6g5MoHC;fQVX*k1z8h1IX z;qe->9YWtsWO25YtSbzSsufMaqi3S&-FYjwNvO-a9&Ji!%c(b5r+$XJ3!o+dCU{C? z6Q2DhPzRoSO89Q*Lqt(_IQz2bylW5`%{{EsW}@GNR>j+06^HJ%FpaL@`Zu@EPX|o8 z)TbYZ74j2)%r0sL{;vS{zh1y7g0b9mxQ@I#-MBIeBb-}yB`rko0+|%9^@ZpYr`&>@ z-K`7K&xxP?IVB;z3R}sER_f2gM#OCt)f%-nW}G#qa~ zVleC-r=J2B;bh(qq5n;t;2+D@4N3e;^KizE)%u2S(UpBUAcZhk#6KP?+f1*HGmA3j zN-g>MBju;<1VNh-6=aSN_oH?H)t4v1d$PS1@?@ivaGa(qoD6!C1-dkWmeDfZd}i+Q z!LormgDF+61^41cl@-%r?T~$1*}{i>ATk4x>@Pr&`S)c8z@dQuwehlwI-3C4tk<)L zPd8dZW-?C1z&_6%k&Vqg^U3_Qu<{NA_bYpxnXuNwby%;ckD@r7sr(j>`S97+fVdns zuTn`Llr$~Oi7~_!2ndZusnx?Ih89wA^i_8lk4IKFD!=-FsxAF%>p&ySL;$qr1|6C* zvCNt)oB);2J3H#tfw|#vUIw5y@PkE)AoH^_4gEM7>ih6JOOT}$hZ#QHae)?~auhdt zH$MHD4#QqAdQ~N@mMX1qZkI_ukZ$hhbM(zJ?(0+?%s&4gsz^Nae+H5bfy_#P!BQ2H zdr^s_2+6tP!lg`&k9!S$VP4t@!1Wq1yadl2p`6iZRu&HfdAadd2BR#8V?0vf3&!aI zYoS#THU8GZZMr)d{y&SL|&l9O5#6RgP^^n1Rx7@UgIt1CCket zGb`i$Cw1ggXW<|Edsuq5=77Ry?7jD^vxf!PSwy3e=eyd?a-(ET8QSn*Vxts|MLS$E zs!iH59>R0WM&;qfq)XCoLwcA>b~n;t8!~V)--q9N1=)na{JYSt$^WO?)?YUJqZ9w= zCy*@?MzT4H7s$H1x|0dk*4=RVQm7Z@3rL(q-0#{b@6Ns9PM(l-TE_g zXUe4fOIZl^NHD|8`?h+w^bdDIF%CtqR^hni{p@yq__;q5>>3sRfbVHeAGvca1dq%p z47DA^KTG0R=K)Fg>;rYhPrc1Yx5rqMIZTc#UG06R0{eSC$<0!r44)a z#(eetih9T52`+ilGdkRL4*8?@YT=!J4;8!S_I3k48R8*2_x}6owtHqyRjw7sN+KQ^ z$=Q>O`_~m(Vc+(v=Dxg)iPA=rtmN{4OBtAz`}bPUj$R|^J*zcvh0<7UI_oI6aUyD? zY>Qg6V>Uu~BMXTH25z_{J5v9RNAh2)_J;rcoch0~i2P~qbWhm-zcs8h062>=eJYZV z<{AR%5*IeV(5Q?DR!_b?eC{^d@=W3?e^7p1>~-Zet~hQeP2v@|)M@tHBeAnh&ko)<_Ys2LQ7tiu7!#3+$fri;Tvmzvgx$6P(MnWjv9Wzc^#@ z?1#btU&$!Y+i^cAEe{ar*OZ?Be|i5mNpGoDe7#mqRp?&*LmJkSCsE*k3ETgH*5@+m zFCkk`{#FWbn0jjb;W^>N%fF|`7dLv>O%_F8mixDoY5hC@h~=eGG*bTC7-a57-Da|o zOzKSg+h`&l&|s^L2J=LT{B2y6)RM$s3-HZpJpN&X;=wF0v}lJVk3aow4gW7*AoMD0 zq*;G15}=$vXMT65m~X!LHuaklJnCWbe@Q@^SWK|X$7{*JoDP3LhzE@ts|-7e?QboV zoeYJfJbu!==oWP6k>oRH>S3w>@@!Ph;}uQeok28z#!fcLy1&)ZxhTV6AN}Pb6hTSm z`{4FOz;n>w`qsKwlT=b2owOM%Of@`46bqAV%S+&~1J3F?F&iXvuEA#qeve?k1q}HQ zP5&OUERJG+tIg|fTJwWP^$-4`VA?QnYNu>B)ZVw85Jl~JCGNW={tv?oXYqEVVR&Nk z)4})pU=xony~#$;eoE?Pj5b0+vFZ2+?@;Ml@&LPBoQ|MK?Nx(ev?j8SL$1Tc_j;jr zQ`g<4FFnq4GeAlOn&T3uyVx%~jYri;GdUp8d~y=o1#YV0soe>E8I4&a%zC;~k5W7K zx&EoGbJ7O_a-mLa^Q#_J}IWf1Q3np`w%dU2L zW2pV^JO+qf(JTpel0Pdiwzlh|?Swu!?*-v$i;y;rZXmB|;X4TzSJ?8*drBg2(v9+? zXmudxL#z%FF6Y*DujPhaeu{Rz#W-Ui#{sV%r#ejELZOlzB18Anv%ANbB!dB|%1%v; zFnOI_6un@}r+b23Sod~L?BNX(ONKS1K`0=r#q8*7XW0=x*&Xs6Q zI_%@t9k1k$be@V&<;=6+8WSrW6i9`9zux<~!q!VM{|w`tp_nys3FeJDJ&#$UM{dCM z^*jw$pt$2+$wsfQy}Qb*`@i`Y)+}s&(VtU~;f|cGCI|!$WPNUWjUEy8Iq8i~n)|Dl z2RcbIisJ&OM+l^o-JGtsR@vy_cQzf|60?^^AR5KVp|oH0S=nxd8~O_nqsVSB(ccRf ztG`gKR+Rq+-f6`{%HvKOCL68C<_aR5#|NKvrA^sTWe2r(?+wg}PFW>mc>bJ-$vQN< zCu+2_J#(y?Rx{aNe|XrM#bZjrJzKdkEZ)n9%VF1-!AHqwZCM8Y_)}-n8#0p-!j4%( z4bZg57-gCLN>IY$vy&e>pZ&?(ylvm7HtY(f0Q39{cv@F;TdH-Nl#sbQ#bCwO^hJxzsnO`#8P} zb7#dfsIe^Q*y3_|cy<4R#i=KN3!I>JMGU|4py`hf=vk%fH}fuKZXW znv`$AEEb)yTKZV#)zLu6WM?bvLRFrZoG}6Y*oSW7Y&MFZ3rBV@)aaR{o0!wm!{4l$ z$j8JPLPKiPBAY6D0|19M=ds2$mYvj9=Y0s@W(%(jAvIO-6ll30@}Di{4UB1Y!B{ra z%b6n8vUJa#tzR~1JMrSkBHOOI+3kAP=z>kV))wHaxiKRexU>&M;!|~GdnjI;n9(*wi0gXZIPnFC%Jf%?je=|aVo!V2r6daw2IHbnBjVKHm zou-RdQtlUY_vAWn!-(NWrjk?2SDQg!A<{g99ppf19*+Bc2#|XFX}>&w?V(oETJ6+; zyou7poMMH#g@&2r*xJfiN>p!>`%`td*kiw4Sh-Vdrww(6Ij|S z1OC&26r!axE$Ly4vq{I}-sQ_4#ci7pObhpqD!5hXG8v9qa<6zNj1IP=g+%x8hMIVe z=E=qKC)3=IVMfCt4wG}=TqI^;GctTpuFrh7FI^!Jmt2p?d5q!u$-0>Bi{Bha54nH1x%#XgkPnlV zVd3y{_@-4&qJua8oJqCO&!)?0Q7;WAa4F0%X$au!*YMo%M$OWHl)}N@q4h4zv*%tF z#SCqgYRR90V~R;9z$o}DC;Iq@uA)OB$LEjsbd^Gx@9Q_dd8IBrM9RPPpoGw^kNLb- zAJ3F&`lM66<)EUIC$R0Y=Exu8K_a@BP#zPN!OXopr-lR3EnZP zD3(|I>)*UwL{QsCF|1WC1IMt<^w0>a#{w<7@i)D+otVG;+MhX?>gRm(tIDs4P%=b- z6d<@^KB1lXEiPm*wRZ7g80)aY%2Zkcvxthv<2RJZ<=9espuSH_^7l5ykve+L;i@ zyUU7Q>fBv?yx#QOE%V09Ul+YStn#SQ(4$ze1w(-@g6O78Ae{hMy%l(@UfT>^(THa9 zfGi%$`JyKMV3+(^UOoZ|87dD{waQ7>&ILTRo)k0If!%GvL&cS`TYY%tI)dUgb2E#z zOdY_|jeynB6w#GD15S~OAAdz{Rqyr#-20Di*Co++T-vCBiH=4xR|$zVXxzmsTI^X7 z`t_Mip3Snk^!3UR!9_(*@vUG%|AbLL#bF;zyX8KQN=Auk)d?z39jrE>id{)<9)s<94`5HKS2 zT`kLRxVH2{TW%%tVLW!D0Enltzc$re)b@ShXduj%fLL_bS{*vIUFTzeat}lg(Bmw) zjMkuRR5Q`*Y;x^~zFnpoNRVyrS9=YOUFWQ*e5r&t(dC`3kB&zl%A(~h@)EYUy>?l*STx4G(hCqu^xWn` zTt?|o(x=#!9akNKn1^3qvOBGiuC!%WH*X!!oc2~nQ=$Za9DOadcvE0~lChNrYEIvB zYq5((k>4jP3uH!!%Ul7S1!{GlQJefNN66PTSW{P*I%gY^F^vpLPGha2bziwnrd;f6 z`Il4667Az%E0FwWH51QQgaIgH?eQ-g|3QA3#c%CW&cZ#)H_h-91e{iUAHK%1&4vw2 zT}EEo#O9(RS5S3gnm0LK+H!6&=k`e`ZyMC=fUk2ipCKFi`OEnz16HZ2!F zl`epKu|Z#z==8I->xOE(@7i~n?zH#y@l?%s2axcqyu&j?-yN@YeVulE#8fje^iAG! z1i)adR?M~mDB?9(NX}gSh5oKu*&tV4^S~R zX>$i0bj7=vBLs+E_At|2ON{AsWXsT{%3XG{x;U=efvaW>(v6N`9l9&Th}VPj8ALKu zD>hRb7kzbS`0-+CAuBdFRO$1MgQc`UFz#1{5qFSM^iM*jDNic%n~>Se3?qG9NN76y zV0-g9NC)L#F1tlpZyJ0X?C=~rsCO{{cNb{uv7JKblol|Fq{zT-%35--3Q=M9A+8^0 z*;5P_7t|J~53Ez|_GXY0;4!bueY{NJQyQy?>;@8m6NU&Mkq9h%z~KJDV6(1aZ&oSY ztNi@ARIP!CoEaxo>CkHbLOVVk6_~7J3(~I(>X@vp@rIpnbnM(lIbSMD*V})xbpVLF zPa%jT=h+WzeWdZTh$6zEF$x_dddI>cR~orYTAF|Xl@RkVOJW+}X8V8d?d@;Po>p%5 zJt<2uilh2d-mg-s#$6kiBitAs`&>egChJuT_C+i}HF03#qp-{-%^y%f_C`9 z)Nb)sT;fPNCDHN&?q%4b$}A2APg}M*?(QCU(G&fbNA*o>3+#0~=7lCx6t7cU>TJ&K z>S>2rZgwBf@7-6FD&GY!AIwM&1G zn2X`KbJ8VF9)X?{@H#maF0%k>QCo%WSyeo@-!|Yk)31>3)hU^7&myo|0Gd5|ANJWb zEh+M^Q%eM?7a3P)5-Kql>^x5X`a{(mr%1@W*jhC=q6Q~>7yZgE zo0*f``zw*P07Zx|IlmGIG~+j68e!=|Id3a{YBI;};HzA})}PcdQaOo-7l5H4KpfG$ z()cBtKRl9FUemPsNa&$4xyW;~iR=d2tvbv(moW!`7B92+M1I0_>}ftf>wtl9TjQkT z;VV=#z-u(aS#py360!iaz^+mJmSx0QSMCnbVmHDd@ET>688<8D<)&4J!qu*+bZNdE z{xDQJ+;IcA4Ej~9undMzv<`h!=WIpKQRfD}OmWAjfc1JrH-XJlO>QFcpmz@FEOI1l zdsiu2yVlgh8SYUI>9tmvq|8ga_gX>ih55>i#p2$OsD83lqkP$M9l6v(XUc7+Ld%!y zMu9qF{g=g8o$dFS$B#=}nAX%ZS}**$5H+-zC;g^P>x;tyBGd7e-D9bL#g;VDtNd7lMe@x36!YfU(_V)Q+O}+34c(_k3mLqGYFVZA5(0gn|1u6Vl*! zg5L>Mdv15}w(<@H)3uXK#dQtsrFr`^;}l9uYLVI_ELr$5@e5STe{fwg=axjzoKlgksC*5v~Rd52CHt4j*M6PSqHiai$el~ zzQ*2mCwkL%SF_VP*XfJ@ZlRg+nC3&Y)YFKtz1<2Z*95`LdjWdKH&KnIaeBI#C;OP+ zA`BOWU=o-$`8z-ZRfgdNDPZiQ-U$M6pYRvz-@akQv@^elpamb?+1UPkUo(Ca#IQu7>m9G8XkkKgOCP_ z=ZxXrv1|-kDNzyi-uoVC-N5JIXtor*SGSc_eRm4@>_(fSWx6P;=-U#IPdR~R`*Atm zK<=TKaS#%;OJP>yoj^BJ&A~@~F)Bm*d)0WioY}1|irC%rO9m)jciX1H`b z`t>n^3ecZU6w0x57v(3ei2#n;+Y~>lpGYl4x(m*+={X?5#5)rw>5Jp(Dr z!!_HPd2E*bhki4BOCj5klgea~ZS5I_fC7qMM2FPh?2+Ib@LDNf<@Pl&LO zP^iTb*qfX{9Y}q{uM2risB#*T5|6DdF= zsT5F~U4C3yt_SseR<@(0Ey$2yA>()FSXn8p!ezg8%qG9>{3^e?#;ZJs>V=cA((V^8 zm*>QNqWxBLf~Ie|0PHL4pd@{%`6?v98VHFLdSX=aocN*#Czn|~lPW77qy0B0(~nLw zM`Q6)eS$4&d=s-kJ3&!C6?ZZhF-b15>6rd-a8Yzy`?{$4u_9YR8ioS%1G~P{LzKwr zm5jC4gX5QpM$YQ{-yd@nR9Y;=!|oi)5)k5s|+jz51*t+(pg< zk&*1-b1NbyIZkoQG!#KZ$(1LXvj?Q8XTf%55EC53*L`mnxf;F$=^;ni-p-e<8uxB$ zchkYT2_!B@$IC$5^pnrhV@rOK$?LPvx*^(cBW(LyF-5OBp5+K2jz}k56%dz3b|{FDK^SItHB)Xxh@ZYn@=*Y8M)aj3}h5le}JX;D5}{-Zc1u zh)T%a(B&dNy{3DcA2Xq}?aHp=4?^$Np>t{Ts;nA~>xF9S8-T-qL^}IP3Vv*N%p8G1 zrjvcI(zyoIkHkVgj4_rAYQaxYTbb;*e$(Ns9(`$7$&xC0J4r6HP{eJp6fv6O8Cnzz z={{o0QoFD{c}3%oMNecjeA7{yS<@Fv%uF9-pv9Qt!n9P7z21?Lo$SOXz)qyggrF#2 z4%ks|&$6(G4B@yf&XykMg8R!j{JH(CSA?HkeQk>t^O*qoFDb>_BJ;#F2u)KtD9psX zmGAwHC;7NYx#*_wh{8UK_UyhcXQ?EDON~D{4$gwh(2Z8&c9fMF;hCSvM{<68b3=BF zc*LiyOwgSqaxBItumYQ6+N(S8E;S;b!Wr3J8p>3J$k(4PWY}6;#A@ATNZ_(+gKO8E zOV)Ne1r{y& z0Bs?hT>N_@La^^t>hR%0O@(P71NbNXP4_41FQ_`NIz&U4{tFFzt}+z@hD;Lcvl>f2 z>~8bdV4x`T;QH*Ne_krbH|IKIlv~K}bnRo_uFeJ!iX458Bd^!wvyq=nDS%c%x=cAq zY{8Z#MFEWNT9b43@>Jh48P?s6BAVRk#;)!lAuDqJR-9v1?@?ViFRiSSBmT&wM z4`b999)UT%WvVZKGRQBL{~wgSbwHHSwl)q(2@2BEN=t`yNjE6cB^|=hohs5LH8d#F zJ;X3H(w#DNmvndiUi5tTc+S1&e&6qZnAz`s_g?E+&$HGuC8-Xk_-^AM=~|7sy+-ef zFs_^ZhD<(sa%k@KSwJTt48-4@e>5+3lar?znymkmH9)nU8(2ZsFI5;&(r50^G13)f z7QW*$-Wl0HpJT3791%{LtZelGmNV-`e<-Q4w&fRksr^QUa0+Gp+4%RqzIfy_p`4x^Uu+$cv8A?2w`%lko)e zEYpT}wW4(=L}6GQ8(L%?gwvcdSxSjy3$@-_4B3<9H<}lF85dho^P5&2w-Iu&yB-Hu z!;NzcI#t9>q9m2Si*&i8>^8 z`mmJ9Qr9Nw!RG7r>*cZfLj27x8}B_`St{Yz&^*B~ov^a9d$~dVg1n1bIEk&U6yCd% z^Qnh0A59G^0qjj0&F{c7rOlUmk06u$ri{AtWww{Wlsb+Z&eg7VPl;{-SuAbTb2si` zci)RE`i%M=Azmvm<@%(qMUAsLAnEWA-`(!w^1>6VKHlp@L_u(4s6)YxiCozJ8D$NX zfScgG;Q5LdSePHnW<%yFX3O_~$SsC<9^dGXPBNq#^nb#h3Dw^H_FMV*_}*{j)9;;$ zIb=$AvqYH9D%=>RdK>n)ctU@aT`u(=^WLuI{_pQwk5*{pE(q>f5Zf3}Pa|6Km_x=t zCslBb=^r2dAOAR$N$0*hs#O`*+;3igf^|i6Kk1X?u;J4kdge>n4wB)}9*iMsOb|Le zEsZ${N+a87{%%e)YB8TWbJFb>8o5(M;k|6}MvIypKn13N>%{l{*VV!&Zo^e6SOTXr zD_N7gwAG>~XTuKKA@xoyLW5AY9YVEHN1DR z2l!20?ZEYu_snnuR%(n*SvQ#V?sws{eUc&FSrrRlxd>BWS}xXuS9HB3eyb$c_Xd?_ zUH`~3PMXVedv>1AOC>e=-kGJcG#Wl_ug2*)Eu6XkT9ehI!qiOyE_=@k%72E~jj3PN zM&T_&w1X!bY67Wq-;wR~im$FG{wb8~vPdZ|#W@WZ7FKrG8}W8}>moB8l*;=DuA~+% z0iOZ|Iz<5%jJ<~uv&&yiPq^WcEu;998<*H*aWmKF4*~n0-!h<@d#Ecth%|x` zCvA8aFVZzWQomD08QgfeT;P+d@0>dwG)hDm&r^SzS>{|QZLk~p&8;u#6kAO`C=hQe}PYa^-m6AYJKIb6O{~`19 z_VIU=r+7%zsglP4aln-zQvXz#)8p_aD)Yt?@VI~xb^-%(x|MrC<`u5ls<9gv=E2vG zYlTHM-dGb+bVMu(-OV!0NEV&|1nu^1={iD+a;k^_wCGuf1)xp|c`T(aHky+yc)hz! zNS=Krfi{u0oHj3c0Cbi9f^n5PJKT=|S7Ohe9bzXtM($i3@XoAnK?Z$)9k$;A?l0M; zH(9vV)WX+E?|6jlSR8hvlteZE)C1A1H9NH9u`7`(*AkV3ZC6#-qoPqQ5=KoEbOR=^ z!SPnRo1S7}ia?VJV9>_hO){yOdyJG&br7);;7Rp~bqe)f#es~Hk9n-rppJ@Mdu;bi zb;(RGP@I!#Zuu_)Wp-X``4uq#xjm;TG8J&O8FK#Tc7|i94DV)vz5}p@_>EW=cbsh% zAIqZesQOuByrSSay-l4@rCl4k;*|jMGfR5tuumxgS1n&ptUE z5j1chFwz0%KgCsEjqXYHvmM}iUzi3M7(^stf;CTdI16=x$~H9O-7Swmt_mgZ zZpGAv(mMf4c{i0r!S0khs^$)u=(gxPf*u1srACeb$*j?y1h~AEADBTTuLolbmTCJHjE+P9+xHfL6VJ|?rrwt5g(Q6hg&z;D!| zVaZ2|oRphx@8SW)Ph7)_$!#$k4M0_nlQ#ioEw+@)cjL2$YO6DGK|zZAgZw*20{3n` z=`v3ZR90UCoovpy1nHTxa?{e^ydmvNL;KF7PxC$bzenL}K;G27)A% zRui$QX6Tm|e;%cxmhkZ117CfiRPT-ur}{mF44+9=B51$za%`BL$K0&Mq2$w8SMB<4 z`aw4WFUAwKoM_=*bE)M2L%a$v#vL^7hu_#&tbgx%+_T=j=?t8N!T@41 zFl=k?`;uTVIk|HmKWn%FBXF7?2(IWG|3amVJ|FU@t{n(gN^K2NT6%IwQOe`)vR;3= zhd)5w8F=xuVi{(-$*@2u1GfA6g>2hhoDvvyK%{}k z#_NcquJ)yauZO6+sKb|TdMjJV&Te;6A*I{^?A(?JJ7`)bYJ=POEVAA~I2GF>-n|j8 zui}}~n)5>X(XQ^~a2MiQG9Q@pBQ{Z7sW*DV#&9WYy)TF(9eaIU0?EPpB%J^Fd~#QN zZ1c@qg{&jU1wcqz68?3FT0SmnkwNU=33EUm$1^iZt}!I#@h#2hoZm~L$5u)Qb(bUh zN%pnxbf4-|J^WtY%Tvr(dHvd`<42`CUvZ`0C0_qfPZtE9IcoEgwOS}ZXq5P`+y*UtSCkNpPgRMr-shM_LFF-RXT;fRKUR*

rhkOSa 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 Q3)uQ>tsSjOkeJwi0MJd=XaE2J literal 0 HcmV?d00001 diff --git a/docs/source/contributor-guide/parquet_scans.md b/docs/source/contributor-guide/parquet_scans.md index 4aec9f347d..28bc50f8f5 100644 --- a/docs/source/contributor-guide/parquet_scans.md +++ b/docs/source/contributor-guide/parquet_scans.md @@ -131,7 +131,505 @@ The S3 support of `native_datafusion` has the following limitations: 2. **Custom credential providers**: Custom implementations of AWS credential providers are not supported. The implementation only supports the standard credential providers listed in the table above. We are planning to add support for custom credential providers through a JNI-based adapter that will allow calling Java credential providers from native code. See [issue #1829](https://github.com/apache/datafusion-comet/issues/1829) for more details. +## Architecture Diagrams + +This section provides detailed architecture diagrams for each of the three Parquet scan implementations. + +### `native_comet` Scan Architecture + +The `native_comet` scan is a hybrid approach where the JVM reads Parquet files and passes data to native execution. + +``` +┌─────────────────────────────────────────────────────────────────────────────┐ +│ NATIVE_COMET SCAN FLOW │ +└─────────────────────────────────────────────────────────────────────────────┘ + +JVM (Scala/Java) Native (Rust) +════════════════════════════════════════════════════════════════════════════════ + +┌───────────────────────────────┐ +│ CometScanExec │ Physical operator for DataSource V1 +│ (CometScanExec.scala:61) │ +│ │ +│ scanImpl = "native_comet" │ +└───────────┬───────────────────┘ + │ + │ wraps + ↓ +┌───────────────────────────────┐ +│ FileSourceScanExec │ Original Spark scan (from Catalyst) +│ (from Spark) │ +└───────────┬───────────────────┘ + │ + │ creates RDD using + ↓ +┌───────────────────────────────┐ +│ CometParquetFileFormat │ Custom Parquet file format handler +│ (CometParquetFileFormat.scala)│ +│ │ +│ Key methods: │ +│ - buildReaderWithPartition │ +│ Values() │ +│ - supportBatch() │ +└───────────┬───────────────────┘ + │ + │ creates via factory + ↓ +┌───────────────────────────────┐ +│ CometParquetPartitionReader │ Factory for creating partition readers +│ Factory (with prefetch) │ Supports asynchronous prefetch optimization +│ (.../CometParquetPartition │ +│ ReaderFactory.scala) │ +└───────────┬───────────────────┘ + │ + │ creates + ↓ +┌───────────────────────────────┐ +│ BatchReader │ Main Parquet reader +│ (BatchReader.java:90) │ Reads Parquet files via Hadoop APIs +│ │ +│ Key components: │ +│ ├─ ParquetFileReader │ Opens Parquet file, reads metadata +│ ├─ PageReadStore │ Reads column pages from file +│ ├─ ColumnDescriptors │ Parquet column metadata +│ └─ Capacity (batch size) │ Configurable batch size +│ │ +│ Process per row group: │ +│ 1. Read file footer/metadata │ +│ 2. For each column: │ +│ - Get ColumnDescriptor │ +│ - Read pages via │ +│ PageReadStore │ +│ - Create CometVector │ +│ from native data │ +│ 3. Return ColumnarBatch │ +└───────────┬───────────────────┘ + │ + │ Uses JNI to access native decoders + │ (not for page reading, only for + │ specialized operations if needed) + │ + ↓ +┌───────────────────────────────┐ +│ ColumnarBatch │ +│ with CometVector[] │ Arrow-compatible columnar vectors +│ │ +│ Each CometVector wraps: │ +│ - Arrow ColumnVector │ +│ - Native memory buffers │ +└───────────┬───────────────────┘ + │ + │ Passed to native execution via JNI + │ + ↓ ┌───────────────────────────┐ +┌───────────────────────────────┐ │ ScanExec │ +│ CometExecIterator │──────→│ (operators/scan.rs:54) │ +│ (JNI boundary) │ JNI │ │ +└───────────────────────────────┘ │ Reads batches from JVM │ + │ via CometBatchIterator │ + │ │ + │ Key operations: │ + │ ├─ next_batch() │ + │ ├─ FFI Arrow conversion │ + │ └─ Selection vectors │ + │ (for deletes) │ + └───────────┬───────────────┘ + │ + │ RecordBatch + ↓ + ┌───────────────────────────┐ + │ Native Execution Pipeline │ + │ (DataFusion operators) │ + │ │ + │ - FilterExec │ + │ - ProjectExec │ + │ - AggregateExec │ + │ - etc. │ + └───────────────────────────┘ + +═══════════════════════════════════════════════════════════════════════════════ +STORAGE ACCESS (native_comet) +═══════════════════════════════════════════════════════════════════════════════ + +┌────────────────────────────────┐ +│ Hadoop FileSystem API │ Used by BatchReader +│ │ +│ - LocalFileSystem │ For local files +│ - HDFS │ For HDFS +│ - S3A (Hadoop-AWS module) │ For S3 (using AWS Java SDK) +│ └─ Uses AWS Java SDK │ +│ │ +│ Configuration: │ +│ - fs.s3a.access.key │ +│ - fs.s3a.secret.key │ +│ - fs.s3a.endpoint │ +│ - Standard Hadoop S3A configs │ +└────────────────────────────────┘ + +Key Characteristics: +- ✅ Maximum Spark compatibility (uses Spark's Parquet reading) +- ✅ All Hadoop FileSystem implementations supported (HDFS, S3A, etc.) +- ✅ Standard Hadoop S3A configuration +- ✅ Can use prefetch for improved performance +- ❌ No complex type support (structs, arrays, maps) +- ❌ Cannot read UINT_8/UINT_16 types by default +- ⚠️ Data crosses JVM→Native boundary via FFI +``` + +### `native_datafusion` Scan Architecture + +The `native_datafusion` scan is a fully native implementation using DataFusion's ParquetExec. + +``` +┌─────────────────────────────────────────────────────────────────────────────┐ +│ NATIVE_DATAFUSION SCAN FLOW │ +└─────────────────────────────────────────────────────────────────────────────┘ + +JVM (Scala/Java) Native (Rust) +════════════════════════════════════════════════════════════════════════════════ + +┌───────────────────────────────┐ +│ CometScanExec │ Initial scan created by CometScanRule +│ (CometScanExec.scala:61) │ +│ │ +│ scanImpl = "native_datafusion"│ +│ │ +│ Note: This is temporary! │ Only exists between CometScanRule +│ CometExecRule converts this │ and CometExecRule optimizer passes +│ to CometNativeScanExec │ +└───────────┬───────────────────┘ + │ + │ CometExecRule transformation + │ (CometExecRule.scala:160-162) + ↓ +┌───────────────────────────────┐ +│ CometNativeScanExec │ Fully native scan operator +│ (CometNativeScanExec.scala:46)│ +│ │ Extends CometLeafExec +│ Fields: │ (native execution root) +│ ├─ nativeOp: Operator │ Protobuf operator definition +│ ├─ relation: HadoopFsRelation │ File relation metadata +│ ├─ output: Seq[Attribute] │ Output schema +│ ├─ requiredSchema: StructType │ Projected schema +│ ├─ dataFilters: Seq[Expr] │ Pushed-down filters +│ └─ serializedPlanOpt │ Serialized native plan +└───────────┬───────────────────┘ + │ + │ Serialization via QueryPlanSerde + │ operator2Proto(scan) + ↓ +┌───────────────────────────────┐ +│ Protobuf Operator │ Serialized scan operator +│ (Operator protobuf message) │ +│ │ Contains: +│ Contains: │ - File paths +│ ├─ file_paths: Vec │ - Schema +│ ├─ schema: Schema │ - Filters (as Expr protobuf) +│ ├─ filters: Vec │ - Projection +│ └─ projection: Vec │ +└───────────┬───────────────────┘ + │ + │ Deserialization in native code + │ + ↓ ┌───────────────────────────┐ + │ PhysicalPlanner │ + │ (planner.rs) │ + │ │ + │ Deserializes protobuf │ + │ Creates physical plan │ + └───────────┬───────────────┘ + │ + │ calls + ↓ + ┌───────────────────────────┐ + │ init_datasource_exec() │ + │ (parquet_exec.rs) │ + │ │ + │ Creates DataFusion │ + │ DataSourceExec with: │ + │ │ + │ ├─ ParquetSource │ + │ ├─ SparkSchemaAdapter │ + │ │ (for Spark/Parquet │ + │ │ type compatibility) │ + │ ├─ Projection │ + │ ├─ Filters │ + │ └─ Partition fields │ + └───────────┬───────────────┘ + │ + ↓ + ┌───────────────────────────┐ + │ DataFusion │ + │ DataSourceExec │ + │ │ + │ ExecutionPlan trait │ + └───────────┬───────────────┘ + │ + │ execute() + ↓ + ┌───────────────────────────┐ + │ ParquetSource │ + │ │ + │ Opens and reads Parquet │ + │ files using arrow-rs │ + │ ParquetRecordBatchReader │ + └───────────┬───────────────┘ + │ + ↓ + ┌───────────────────────────┐ + │ Arrow Parquet Reader │ + │ (from arrow-rs crate) │ + │ │ + │ Operations: │ + │ ├─ Open file │ + │ ├─ Read metadata/footer │ + │ ├─ Decode pages │ + │ ├─ Build RecordBatches │ + │ └─ Apply filters/projection│ + └───────────┬───────────────┘ + │ + │ RecordBatch stream + ↓ + ┌───────────────────────────┐ + │ Native Execution Pipeline │ + │ (all DataFusion) │ + │ │ + │ - FilterExec │ + │ - ProjectExec │ + │ - AggregateExec │ + │ - etc. │ + └───────────┬───────────────┘ + │ + │ Results via FFI + ↓ +┌───────────────────────────────┐ ┌───────────────────────────┐ +│ Spark execution continues │←──────│ Arrow C Data Interface │ +│ (receives ColumnarBatch) │ FFI │ (Arrow FFI) │ +└───────────────────────────────┘ └───────────────────────────┘ + +═══════════════════════════════════════════════════════════════════════════════ +STORAGE ACCESS (native_datafusion) +═══════════════════════════════════════════════════════════════════════════════ + + ┌───────────────────────────┐ + │ object_store crate │ + │ (objectstore/mod.rs) │ + │ │ + │ Implementations: │ + │ ├─ LocalFileSystem │ + │ ├─ S3 (via aws-sdk-rust) │ + │ │ └─ AWS Rust SDK │ + │ ├─ GCS │ + │ └─ Azure │ + │ │ + │ Configuration translation:│ + │ Hadoop S3A configs → │ + │ object_store configs │ + │ │ + │ - fs.s3a.access.key │ + │ - fs.s3a.secret.key │ + │ - fs.s3a.endpoint │ + │ - fs.s3a.endpoint.region │ + └───────────────────────────┘ + +Key Characteristics: +- ✅ Fully native execution (no JVM→Native data transfer for scan) +- ✅ Complex type support (structs, arrays, maps) +- ✅ Leverages DataFusion community improvements +- ✅ Better performance for some workloads +- ❌ More restrictions than native_comet (no bucketed scans) +- ❌ Cannot read UINT_8/UINT_16 types by default +- ❌ No support for ignoreMissingFiles/ignoreCorruptFiles +- ⚠️ Requires COMET_EXEC_ENABLED=true +- ⚠️ Uses object_store (different from Hadoop FileSystem) +``` + +### `native_iceberg_compat` Scan Architecture + +The `native_iceberg_compat` scan is designed for Iceberg integration, similar to `native_datafusion` but with an Iceberg-specific API layer. + +``` +┌─────────────────────────────────────────────────────────────────────────────┐ +│ NATIVE_ICEBERG_COMPAT SCAN FLOW │ +└─────────────────────────────────────────────────────────────────────────────┘ + +JVM (Scala/Java) Native (Rust) +════════════════════════════════════════════════════════════════════════════════ + +┌───────────────────────────────┐ +│ CometScanExec │ Physical operator for DataSource V1 +│ (CometScanExec.scala:61) │ +│ │ Auto-selected for Iceberg tables +│ scanImpl = │ by CometScanRule.selectScan() +│ "native_iceberg_compat" │ (CometScanRule.scala:357) +│ │ +│ Key difference: │ +│ - Prefetch is DISABLED │ Iceberg manages its own data access +│ (line 434: !usingDataFusion │ patterns +│ Reader) │ +└───────────┬───────────────────┘ + │ + │ Uses Iceberg-specific reader + ↓ +┌───────────────────────────────┐ +│ IcebergCometBatchReader │ Public API for Iceberg integration +│ (IcebergCometBatchReader.java │ +│ :29-43) │ +│ │ +│ Extends: BatchReader │ Inherits batch reading functionality +│ │ +│ Key method: │ +│ init(AbstractColumnReader[]) │ Iceberg provides column readers +│ │ +│ Purpose: │ +│ - Allows Iceberg to control │ +│ column reader initialization│ +│ - Iceberg passes its own │ +│ AbstractColumnReader[] │ +│ - Comet provides batch reading│ +│ interface │ +└───────────┬───────────────────┘ + │ + │ Iceberg creates AbstractColumnReader[] + │ for each Parquet column + │ + ↓ +┌───────────────────────────────┐ +│ AbstractColumnReader[] │ Iceberg-managed column readers +│ (from Iceberg) │ +│ │ +│ Each reader handles: │ +│ ├─ Column metadata │ +│ ├─ Page reading │ +│ ├─ Value decoding │ +│ └─ Deletion vectors │ Iceberg-specific feature +│ (row-level deletes) │ +└───────────┬───────────────────┘ + │ + │ IcebergCometBatchReader delegates to + │ parent BatchReader for batch creation + ↓ +┌───────────────────────────────┐ +│ BatchReader │ Same as native_comet +│ (BatchReader.java:90) │ +│ │ +│ Creates ColumnarBatch with: │ +│ - Data from Iceberg readers │ +│ - CometVector[] wrappers │ +│ - Partition values │ +└───────────┬───────────────────┘ + │ + │ Uses same native path as + │ native_datafusion for execution + │ + ↓ ┌───────────────────────────┐ +┌───────────────────────────────┐ │ Same as native_datafusion:│ +│ CometExecIterator │──────→│ │ +│ (JNI boundary) │ JNI │ - init_datasource_exec() │ +└───────────────────────────────┘ │ (parquet_exec.rs) │ + │ - DataSourceExec │ + │ - ParquetSource │ + │ - Arrow Parquet Reader │ + └───────────┬───────────────┘ + │ + │ RecordBatch + ↓ + ┌───────────────────────────┐ + │ Native Execution Pipeline │ + │ (DataFusion operators) │ + │ │ + │ With Iceberg features: │ + │ - Deletion vectors applied│ + │ - Schema evolution │ + │ - Partition evolution │ + └───────────────────────────┘ + +═══════════════════════════════════════════════════════════════════════════════ +ICEBERG-SPECIFIC FEATURES +═══════════════════════════════════════════════════════════════════════════════ + +┌───────────────────────────────┐ +│ Iceberg Table Integration │ +│ │ +│ Features supported: │ +│ ├─ Table metadata │ Via Iceberg catalog +│ ├─ Manifest files │ List of data files +│ ├─ Data files (Parquet) │ Actual table data +│ ├─ Deletion files │ Row-level deletes +│ │ └─ Position deletes │ Delete by row position +│ │ └─ Equality deletes │ Delete by column values +│ ├─ Schema evolution │ Add/remove/rename columns +│ └─ Partition evolution │ Change partitioning scheme +│ │ +│ Iceberg reads via: │ +│ ├─ FileScanTask objects │ Pre-planned file scans +│ ├─ PartitionSpec │ Partitioning metadata +│ └─ DataFile objects │ File-level metadata +└───────────────────────────────┘ + +═══════════════════════════════════════════════════════════════════════════════ +STORAGE ACCESS (native_iceberg_compat) +═══════════════════════════════════════════════════════════════════════════════ + +JVM Side: Native Side: + +┌────────────────────────────────┐ ┌───────────────────────────┐ +│ Hadoop FileSystem API │ │ object_store crate │ +│ (used by IcebergCometBatch │ │ (same as native_datafusion)│ +│ Reader for metadata) │ │ │ +│ │ │ - LocalFileSystem │ +│ - Local files │ │ - S3 (aws-sdk-rust) │ +│ - S3A (for metadata) │ │ - GCS │ +│ │ │ - Azure │ +└────────────────────────────────┘ └───────────────────────────┘ + +Auto-Selection Criteria (CometScanRule.scala:303-365): +──────────────────────────────────────────────────────── +✅ Iceberg table with SupportsComet trait +✅ Files on local filesystem OR S3 +✅ Valid S3 configuration (if S3) +✅ No unsupported complex types +✅ COMET_EXEC_ENABLED=true +❌ Falls back to native_comet if ANY check fails + +Key Characteristics: +- ✅ Designed for Iceberg integration +- ✅ Iceberg controls column reader initialization +- ✅ Supports Iceberg-specific features (deletes, schema evolution) +- ✅ Complex type support (via DataFusion) +- ✅ Same native execution as native_datafusion +- ❌ Prefetch disabled (Iceberg manages access patterns) +- ❌ Same restrictions as native_datafusion +- ⚠️ Only supports local filesystem and S3 +- ⚠️ Requires COMET_EXEC_ENABLED=true +``` + +## Implementation File Locations + +For reference, here are the key implementation files for each scan mode: + +### JVM Components + +| Component | File Path | Description | +|-----------|-----------|-------------| +| `CometScanExec` | `spark/src/main/scala/org/apache/spark/sql/comet/CometScanExec.scala` | Main scan operator for native_comet and native_iceberg_compat | +| `CometNativeScanExec` | `spark/src/main/scala/org/apache/spark/sql/comet/CometNativeScanExec.scala` | Fully native scan operator for native_datafusion | +| `CometParquetFileFormat` | `spark/src/main/scala/org/apache/comet/parquet/CometParquetFileFormat.scala` | Custom Parquet file format handler | +| `CometParquetPartitionReaderFactory` | `spark/src/main/scala/org/apache/comet/parquet/CometParquetPartitionReaderFactory.scala` | Factory for partition readers with prefetch | +| `BatchReader` | `common/src/main/java/org/apache/comet/parquet/BatchReader.java` | Main Parquet batch reader (native_comet) | +| `IcebergCometBatchReader` | `common/src/main/java/org/apache/comet/parquet/IcebergCometBatchReader.java` | Iceberg-specific batch reader API | +| `CometScanRule` | `spark/src/main/scala/org/apache/comet/rules/CometScanRule.scala` | Optimizer rule for scan selection | + +### Native Components + +| Component | File Path | Description | +|-----------|-----------|-------------| +| `parquet_exec.rs` | `native/core/src/parquet/parquet_exec.rs` | DataFusion ParquetExec initialization | +| `scan.rs` | `native/core/src/execution/operators/scan.rs` | Generic ScanExec for reading from JVM | +| `planner.rs` | `native/core/src/execution/planner.rs` | Physical plan creation from protobuf | +| `objectstore/mod.rs` | `native/core/src/parquet/objectstore/mod.rs` | Object store abstraction for file access | [#1545]: https://github.com/apache/datafusion-comet/issues/1545 [#1758]: https://github.com/apache/datafusion-comet/issues/1758 +[#1829]: https://github.com/apache/datafusion-comet/issues/1829 From 57677d5fa84ca2d92647163b99478c7a0b44de99 Mon Sep 17 00:00:00 2001 From: Andy Grove Date: Mon, 3 Nov 2025 14:08:35 -0700 Subject: [PATCH 2/3] diagrams --- .../contributor-guide/images/comet_scans.png | Bin 98889 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 docs/source/contributor-guide/images/comet_scans.png diff --git a/docs/source/contributor-guide/images/comet_scans.png b/docs/source/contributor-guide/images/comet_scans.png deleted file mode 100644 index 90c60488ab4579afe77e749332a7efdcbe9c22ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 98889 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

rhkOSa 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 Q3)uQ>tsSjOkeJwi0MJd=XaE2J From 5e8d9b520876c81a6e6b3c6d041763716a39c481 Mon Sep 17 00:00:00 2001 From: Andy Grove Date: Mon, 3 Nov 2025 14:10:15 -0700 Subject: [PATCH 3/3] fix --- .../source/contributor-guide/parquet_scans.md | 50 +++++++++---------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/docs/source/contributor-guide/parquet_scans.md b/docs/source/contributor-guide/parquet_scans.md index 28bc50f8f5..2b1b53792c 100644 --- a/docs/source/contributor-guide/parquet_scans.md +++ b/docs/source/contributor-guide/parquet_scans.md @@ -189,10 +189,10 @@ JVM (Scala/Java) Native (Rust) │ (BatchReader.java:90) │ Reads Parquet files via Hadoop APIs │ │ │ Key components: │ -│ ├─ ParquetFileReader │ Opens Parquet file, reads metadata -│ ├─ PageReadStore │ Reads column pages from file -│ ├─ ColumnDescriptors │ Parquet column metadata -│ └─ Capacity (batch size) │ Configurable batch size +│ ├─ ParquetFileReader │ Opens Parquet file, reads metadata +│ ├─ PageReadStore │ Reads column pages from file +│ ├─ ColumnDescriptors │ Parquet column metadata +│ └─ Capacity (batch size) │ Configurable batch size │ │ │ Process per row group: │ │ 1. Read file footer/metadata │ @@ -221,7 +221,7 @@ JVM (Scala/Java) Native (Rust) │ │ Passed to native execution via JNI │ - ↓ ┌───────────────────────────┐ + ↓ ┌───────────────────────────┐ ┌───────────────────────────────┐ │ ScanExec │ │ CometExecIterator │──────→│ (operators/scan.rs:54) │ │ (JNI boundary) │ JNI │ │ @@ -331,7 +331,7 @@ JVM (Scala/Java) Native (Rust) │ │ Deserialization in native code │ - ↓ ┌───────────────────────────┐ + ↓ ┌───────────────────────────┐ │ PhysicalPlanner │ │ (planner.rs) │ │ │ @@ -376,17 +376,17 @@ JVM (Scala/Java) Native (Rust) └───────────┬───────────────┘ │ ↓ - ┌───────────────────────────┐ - │ Arrow Parquet Reader │ - │ (from arrow-rs crate) │ - │ │ - │ Operations: │ - │ ├─ Open file │ - │ ├─ Read metadata/footer │ - │ ├─ Decode pages │ - │ ├─ Build RecordBatches │ + ┌────────────────────────────┐ + │ Arrow Parquet Reader │ + │ (from arrow-rs crate) │ + │ │ + │ Operations: │ + │ ├─ Open file │ + │ ├─ Read metadata/foote r │ + │ ├─ Decode pages │ + │ ├─ Build RecordBatches │ │ └─ Apply filters/projection│ - └───────────┬───────────────┘ + └───────────┬────────────────┘ │ │ RecordBatch stream ↓ @@ -522,7 +522,7 @@ JVM (Scala/Java) Native (Rust) │ Uses same native path as │ native_datafusion for execution │ - ↓ ┌───────────────────────────┐ + ↓ ┌───────────────────────────┐ ┌───────────────────────────────┐ │ Same as native_datafusion:│ │ CometExecIterator │──────→│ │ │ (JNI boundary) │ JNI │ - init_datasource_exec() │ @@ -573,15 +573,15 @@ STORAGE ACCESS (native_iceberg_compat) JVM Side: Native Side: -┌────────────────────────────────┐ ┌───────────────────────────┐ -│ Hadoop FileSystem API │ │ object_store crate │ +┌────────────────────────────────┐ ┌────────────────────────────┐ +│ Hadoop FileSystem API │ │ object_store crate │ │ (used by IcebergCometBatch │ │ (same as native_datafusion)│ -│ Reader for metadata) │ │ │ -│ │ │ - LocalFileSystem │ -│ - Local files │ │ - S3 (aws-sdk-rust) │ -│ - S3A (for metadata) │ │ - GCS │ -│ │ │ - Azure │ -└────────────────────────────────┘ └───────────────────────────┘ +│ Reader for metadata) │ │ │ +│ │ │ - LocalFileSystem │ +│ - Local files │ │ - S3 (aws-sdk-rust) │ +│ - S3A (for metadata) │ │ - GCS │ +│ │ │ - Azure │ +└────────────────────────────────┘ └────────────────────────────┘ Auto-Selection Criteria (CometScanRule.scala:303-365): ────────────────────────────────────────────────────────