From 485ddabe555a04e2f0cfe7e67a30c5e5184234da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BD=97=E7=A5=A5?= <1366971433@qq.com> Date: Thu, 23 May 2019 17:20:37 +0800 Subject: [PATCH] spark-streaming-flume --- .../heibaiying/flume/PullBasedWordCount.scala | 5 ++--- .../heibaiying/flume/PushBasedWordCount.scala | 5 ++--- pictures/spark-flume-console.png | Bin 0 -> 24616 bytes pictures/spark-flume-input.png | Bin 0 -> 16528 bytes 4 files changed, 4 insertions(+), 6 deletions(-) create mode 100644 pictures/spark-flume-console.png create mode 100644 pictures/spark-flume-input.png diff --git a/code/spark/spark-streaming-flume/src/main/scala/com/heibaiying/flume/PullBasedWordCount.scala b/code/spark/spark-streaming-flume/src/main/scala/com/heibaiying/flume/PullBasedWordCount.scala index e0d1ba5..89cf835 100644 --- a/code/spark/spark-streaming-flume/src/main/scala/com/heibaiying/flume/PullBasedWordCount.scala +++ b/code/spark/spark-streaming-flume/src/main/scala/com/heibaiying/flume/PullBasedWordCount.scala @@ -18,9 +18,8 @@ object PullBasedWordCount { // 1.获取输入流 val flumeStream = FlumeUtils.createPollingStream(ssc, "hadoop001", 8888) - // 2.词频统计 - flumeStream.map(line => new String(line.event.getBody.array()).trim) - .flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _).print() + // 2.打印输入流中的数据 + flumeStream.map(line => new String(line.event.getBody.array()).trim).print() ssc.start() ssc.awaitTermination() diff --git a/code/spark/spark-streaming-flume/src/main/scala/com/heibaiying/flume/PushBasedWordCount.scala b/code/spark/spark-streaming-flume/src/main/scala/com/heibaiying/flume/PushBasedWordCount.scala index 6f5d6c0..cf3668f 100644 --- a/code/spark/spark-streaming-flume/src/main/scala/com/heibaiying/flume/PushBasedWordCount.scala +++ b/code/spark/spark-streaming-flume/src/main/scala/com/heibaiying/flume/PushBasedWordCount.scala @@ -19,9 +19,8 @@ object PushBasedWordCount { // 1.获取输入流 val flumeStream = FlumeUtils.createStream(ssc, "hadoop001", 8888) - // 2.词频统计 - flumeStream.map(line => new String(line.event.getBody.array()).trim) - .flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _).print() + // 2.打印输入流的数据 + flumeStream.map(line => new String(line.event.getBody.array()).trim).print() ssc.start() ssc.awaitTermination() diff --git a/pictures/spark-flume-console.png b/pictures/spark-flume-console.png new file mode 100644 index 0000000000000000000000000000000000000000..409f9fb1b76fed1ce1c628f5280351784a7ab823 GIT binary patch literal 24616 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%0A@`XWju(D7Ygxv9 z8kID>{Xs-)VJ4$}WTHt^g2diF!}-YfTMY3F>HS(lHLD{{Ohtj2CO_V6Z{%hiWLXNA zTQ&fz?=~nrq$)Oo+UX(f%nY1Upui9eB-4g;28wRpp6W93&bjCh z{mTyL;rDZv9osZ(anARLgoZxy_V54Vuw9n(lY5RkXuJ%wTZ+itd?2@08^s%vj__#8kCJKm-QC-HoKVM)Hz$b2{o)9% zsIyf^#`z_tiHRp5vTnXX=nZ?D5C=osRWa14si-~=)8-o2cRrpCK?0NmB+m&D)3Qge zb}MN3sulZ`kDmFA3$Po;KOe(9B`S_0MX2*)5&Lp@JNxOtKhVI=$_=kN?V7Mij0ko0 zdvL8gp!|VBZ|~%AB*`QL4NuRIYQ3VB6TLZ0pM=d#5lb9 zEiE64c@R^7gd|j*GjU&Mn`_Kir9x$_!<6XbNb(W;Y%yrfQZ?gs_}#uV-f{G=H2xNw zzd61w4WK(-?0<^xgny6jZ~uFA|MFJ~|4--+!%bxFkU+~iJQGcMs|!9wBk3p9B*d8N zTawYLaX6l#JUV!_@GJI+PKB`yr+Kdj^e@#A%g2)?d`b| zi2|GFw@wAe)VwhAsjl4nil~0`nDlPl5^>oq=OogP7UMaeB~FN)y6pLC_>_HRQ{PRs zo`sJvLJ^>aPNQNC6!se3Fqymaj}~SPFd|oWzc zu8K1RV%;?udHGwO1XT;Rk;s`Hy_Q zdwELqw_7CSyF6X;UecEMx4Mw%%rpN_@Z74fEV5bET#@9IK7DbK;;&fl(2%NKd3k(X znO2R13D_Jl2VrbA6a=e{l3^F!U;4++eq#k#G9Mr3B3Oq%iGSb zGn;4Otm;Ec2pZX72-tu3tyzi((NaBLbe+Bc^BmHgv;syA>3F%G%q#qL&)cpt2 zaUluR14x(s_mKW#AJQF4jeq<{NY?^84F4;nfA|lO9;Y^H2(P>Tx?o7;$!{dl#+YZ~ z`Z{4NB%^IIA(;R>_S*()6N49g4J8XFz2hUBjY?3rUt^A%ko(5KKM%nC{sEW=tgdqt z@{jlFrPtpSDS4SQREh5X1u`K$Uk4p<`4U-6J2F6AZv4E)nfF?AC(OmJ`L4Jf=8I^r zmzLIpUt~Sb2l1hCmPb6R3=`MrKyq-S9wwtKTyTQNJjao3Za9r|R1yQ#X zs0WZ+e30|ZU8B!Alfmgcm=wzS&GxO_lgPduFcI(hJ}MRusHPL?SP`XGm67upjS0Fa zvH84i6B=^|kxVB5@P(26M?U@Nr*3ijPnak){vO-HaVgE_lL(dbiO1D)M)OP;hb=XZ zYu%#{T)uqrML$w}+&wn$6L?0Fa4(?xL)f^|*Iwi=|7Et>n<{~=j50~SX@#pOyha1|Gez2B}VMxUleDg``M2Z%dmKOZt$2B6)j ze^PM;GeA3Uq(yu<^Q5@7nsmDFf>#es_7dzNRe6A3IGyVPfv!8=!Jq>AD^2V3oJ9&K zC25eCRC(D^bCRp$8s_;gkRsWw`}=unF@D(*vtDrZ)jp5s=)X8Q^`0Oh5nk&!d_8La zBjDxAyEJ?9FIBs-f66(~&;cq}Z2@%dgO4j!_a*QD*=Ddo&LL%uDfe5sJ&Kn~?yH0t z0`VwCb*uaK>~Jt};=!3tm!F?*+!H-+E|x( z->!I9YGqn|s$R8yTAvPae^J@&UO&r;59S}Ccj%iv8e9%^@ZgumhH2Gpx!3EfI7C>T zqK8?RUO|XGEAwMjkAQuoovy=uiTaGA>o@ACFn+fuD9aF-(#MXPKR`pO z+U9zy`rssgQxb|DWp;vKBbQ8lackX5nIfvqYwp#16L>SH+=s#EyT3RJWIZ2;xBut5 zzfiF~KuO}#`ax+X!}}mD{CjZq%X5_~RRDXL7yJBQzYHWtM8oM9*_8J6X5neC!&YiR z0JHLS-{Z2`KEp^_v~ANOFaYj|1&)?!h)<%`(?@7GUHWhA>nmd%_21KNDtdsw4kR6& z+rmYZcL$eGf@%D^^y=)5Zh6l2&5Tn`a*8%tX#W)Imt$QX%mE%S+>x7r^Q9<1=$O{~ z#>`aIui@(@jHf=|XsJ7dw6}_6J`%>r9>x$04=fYA?Pz^@)H2z7+Dc4iB;;HY*)MS+ zYZALG;0Tm5npryhH;sHK%|5L_(V+NJcV-F_x1lt;!pz{cU;IDBz(q+2ie2G4xGQYU z9MEPqM}*W?t{M-|B^c?JN4I#(!J6gLcdBdp+!z{8&#OhlS9|Mxw1!#ptwj_+ z&Oi7*t&e?;=g~t@!5;MYR(rCC32^a6Uj4hGGePX1d+*yjsU-NkO`!tz_?QKM$5HR) zuq|i_!*ayCG`nN;TxX$*H@Q5*nn3X$*X#G>Qb$c3a^074#^9PS-Fla`J2E$>Buf!9qwAb;3tlhRM$9D zUmqN)rUdxMrZ1ti{3vsOn3rDUKGCIL!pfjtQTeQi!Ied^jQ>pQ-kU}{-}bA1|3rhh zf2{^K?EDoS_H~E(|FpdvJ_R=|^D`YU zr(SIDR$>3j^3($ulL=XfpW~tM%kLCI3BRwi>di)dRlNnVe^r6v344MaTwNcWlLU4P z{k}0P04Na}uAuyKDN(VKoA>2p;Z9r2k1Dt3`hIqSe=YqQ8Ug)_ZQ+1HB+o=EtMQX}T%-s47XOkMjq+RQ4a{p#ESHa4an9rnN zm12{R+o*4V|l%~?JW!MTuSRs^;A)ZzmJ=ROik@4uw^Ab-oq>WnT#(Y zh4AQ3)p?BuEa$6=1P$g|Q*qzxnYUZFyDuf@6d-Q6*&Z9J`l=e{Lu;69P>sDrijC{$ z#4F-pt<|>p*7n>1a4JFaU2Z4MgZOC{kjRwygk3B((OBaUr%|*v`R;r4abFf}G~iH> zC-1LJ7QsdPw{d7h*xPzLZLJyCy6Q2@9KdaO6eupnO>Nrj8d}Es-IsB;68qsZvN(T) zoces5&`I$q#fBQ|TT5TThDd5jAZIPJ9D8`w8Pugcpf-w|JVZW@DXRpZOWB2Z3{s#T zu*d|2rKVZsE6A61Pj5K%Twxnjb8Sh92y;wBcGm6Nzj!tQYgjbze%OhRf8ACgG`cM* zg{BoP!fLBi2;YqnZwMpy$V&uJJ_JZA%P5LFFne@1pV(sf=6Lfn*|^D|k#CdjV;sPp z^US3HcjDiCP`eEuT;Jp)@P^&D0khNE7wB4y(Cx{D+Kc0I?n>%cMUuQ!W_HXjc2q(yG@(v7>{Fji z-@4*T7;ul3DmB&>9ypJDUk&CT&+XTJ2Y(zNdDpCR=K0R~CAl3wc|E;uoS^R9dZ7F( zcA*zN?=cfZRPQ%>a&le^zldf~q`AE0udcocS!+83*Yq&IFZaP!IIQD`R^?#Ht@niV z^Drp!=zTx4t5gO3S9-L};lBeUKxob0I)dX#dx2YTkQ)W?^=f{fNCcaRh)~8rvLgo<~$>H3cQI5e0Ar9 zy`LW5EbM7n&J!tYeuXqh-vPY(Um}TB@M9#PO?|W)O zW1QZ^19l$GKS8r}X&`$@pW9k$nKwYgm$p;~h$wvr;={Iu6IVu2dex$B&{~@B2qufR zTie_xkY_Y)4YslyK1=9Ln>4b9?9<#ATbAxK8ZK$Z*?4R@19z5HT)K!nawl+8}^=p3uqU5ZPm)&$4^NJISN#r4U7ye zx8!3mZnVg_oxp6yv>~FG9I$`3Uxt6?MfWrsbws?R3omcF^2Ki;;7Q-)yY8dldc@hJ5)~09h;ref)Lu0{hG5ev~w^vRQ zRjL}#ViC2&u92u`cIFafe{tbEwKQ9Oni4atXVmERCNL~Ef<fqnM)-z+ag-^IrqAimc^%3lOkZ zi7W&-Rrxa^fcbjr>(n!r5KSq!L#K)SlF;c?OS6r^`Jrt1LZr-(hRiJ<>)b!p7G?fS zGsi+meuBkX`vUx<0s~n_4h>6HkO6t$5K$S2tu#f^cWUS}wI%qK5$^3!&LfTIbw$G|>Iv){IclO7o3KQM!M}(6?BR6WWfgvV;&oI+!6}eW%^7qnrkFL;bJscxP3bQ@Np%0Hz8Fik3H$AB?|wp=HL;VuM@Leq z3$Dq#Cgr)ycP`IHy4f81$nYKPjW3ZeE$uDxhQll*AVTLaa97w4pTLn*_oVQ4bKhT= zk^>!hnn#sGWFX?88Mh9FED>HA}P*LRER0t9(6UC$~; zs}uJTw<|!{pLk}Ut+6JvHcG-Gn%9F_ZfVGL+`J$=v03hW@_D>(6rV)e!uFdK z{B8~3wJ>(|C#|q`O8b*uBot~q8x@mW+n5s{`*^|8jW_?YWJzDW=G}|viS3OmZL@-P zu|B$F!}q!Al*1XCvR`Nk64xZ?5B~}MY~VM#Rp72^{Eht3s zs>fTvIJ#<*vljXDRXRSyW}LgG&Jx$9V5Y>%XDM@AbuF{Y<_O+m%$>2JJI(abgE3c$ zbjBvIbn&xVamA=B2JV>vCgI_j5o^|<+5kB&H^>RBJb{Qb*)!Qwkba@I@-XbC;cYzQ zUJ+!=Zpo(bj%I!HFKqy{+mqL>;gLLGrHVeh&vRSPbg0G-F>#5~o>oY?H0OC#VD*l~ zBcm;*?Eh|eO$MWD-k+#o-MV&fLUANn3rm=~H|y`iN`+peBtZ_Kj| z!?Dsj>JD=>tEOjO%p=A(Pb$+J+ekHohx(TN)#8Eu2df@b51djlq|;X3n>rBVWnT1D zErE-0>n#h1(N=(ILQHH3$zTeaKkq$pJG&9Uq#Y^9O|sJms4LPjsbdzBL8nF}%4f-J zylv;vd%1H``S__hZ!i~#X+}k3#j5x1 zvdi_q5w+?`eC(a^GaW}kO}@;+1`@LDaR>PY>xt(clP738&S{y}V(8~6$|T{@)N|$xuiVL8lxYdZ6ouXo`q6cDcvv6J_Z#uO@nNM?~&3z)fo$hN%iRv;p*fEB= zM2#7%pRVO!XuihVEC6%GSblr`UuZZ9u5?fp+PEL%uTtn7V^Dt+KIQ(WuJ7cDbjH+Y za;23UDWR0@qm6KqI&Y=@^S*`Os)<4xt+(+D3%#E=JlyVyZ@wV1=G~{M%|bqVcKC$X ziyrY-@L_*da(g@YQQUhR`k{uo9W{KSg)_%b%aeVJ5`l^Elz6yLjH0tnzcKHDl{OXy z%M7@^3Oxt=Or66kw&vQRUE~fNX!ZFghKe9>2w%@bxVL%ggdWy|o*Ym^mo{Z}cdkc0bvVHnh^Jw?B#zg5uS-5-gThi~L`h3CoPndg!_YA)j!y048x)XRRhL#|i%g1W4d4lb z1f@CV4L;M70DM~tR3{#u{NwBS;pk0<7nQf>3P0A&o)%sni&dhwwxvU4NPsaqgL>g3 z?0Z1*2>Lbk&I%CUU&tc$si+YLDWEyUT4VQF;+?r&%i_gd{6CS+x%^d3!mq2WLdCo( zI;NomWq$I5P{fi+gulwZ{hykzg;Q5h2@z!K0_2kKvFr|&$t=5ZfcC>REdOyPM=~>` zC0D!3pViQ?1@cV+kFIX`zQ7m0yVq}i**RpJdY^KdSb)EGbDUbE5NYG`S!4ChB4N|G zKc`uu-LVf{=^uIvV?qZ;B?ARBq~6O$F5CmbOfUi4hG}`tU+2BrxBb`-vXC78{0(Wm zykJaB@|Wk%byCmopHJqQKX;0E9d51}p{Az^G?4UplC*(QAwn6LhKk0EBxaF)Xf(zV25YJwpON4FSZUDA_Dt`dGFHoV$a6X zFa0w>p#dJt8rRgc-?*|dt&N0-SoM27DPoZy+~RMF6w=GhWp=QHKH4|D&v)iNQ*v;B zOWBRf&Gw&A`HlCn0wRelhGlFrb#*y)1_&AZt4ZR`;*E}@3#_4e;mt{(u2Q70;MG=| zo#jJor@-;yB_bgkd}Innnj%f%=K=Rc0bO0|NrKFMT~zrk~wU7rae4qtZo4M9BCEgWx{hp`}lGU)*un?+13ai#H4 zV}7OZfFj&(+yUszUjV3_8T$F+qfGx&*_tCx#;MqOp+WM+M}Pzs7^YiULn&>1ACvw( zDgvd6`84h0S1s9!HZiV$1l#+19_c&j5oT>%Q18VAux?=3Ok&@_sbT+)nf1?fYr6o; z<(IhUV4)6R|7D9ylTS}10)DI)t=WbC9X#rb7SBaSx4maQ1H1Fk1pK>q%aE7Zyq@pX z-BJgwVV8-dIP^EFVw+?MrpUk^kM5__ZglYt^1xf{SR`tEBVz7-!n`2g{Qwzq+i?Fj zi8vVBO6`e5w^F?ABp=HB%3-Ms=MCC7cH}*2*-`o@qFP+(Xcc#5pMS+`Q^m+3$;}(~ zmyel3)XLnB(#4ee9?F~BOkr)O>+TZwWwVAaKmJwg4Huk#4)-XuF~z<7>MTaN#&Hks z(@-x_E}bTp)15trE}#t91Of^!Am4UdJZAW|FHBSwaWVn`|Aal7g)d^LJ$r02yB!Kl z16Cbut0Eu#0(|_sRd<`|)tiW>)>!yOKHkb-#OG2IL~E8yn@g1;!%ii+MzZKymFr(= z6QQfXFLLI_WyQ81_<|$*5dT4(Kxi+>ru$~)DmA%eCB2@C+M4+iY4ZkD0+YMf=&p5y zqvrReCD0GrzKX8dVxS>-t(jdA2G7s|Cz=%Nq+`!%xR<(O9gm0f1^!myGqZr-*Fun9 zS!+;}SS$+5ah|v{UF^xW;>4}3Mg9Np1&N|dV6#ytE!p(l`Cr!D-~?> zpO`uyTW0#Da<>jsPYur|KVUH(KK9f?sa&-d;V4uUFrd}Ss@(AOq|MjkAPxS@L@{O? z{h;FEL(}{_0}ZCLHv5(I`HZ5jHu`@SkR$8SfT&} zTcqGk?pWea#O$oxG0OGqk3X?`_UnvBtxkB>E zWRGkxj|G7SK-5hO&>b{QfRezcgM2bTdMBvVcCqId;-4ZTRbU5`SVH z8>2%Z<94rZn1V%j2)S)sGxXRBU;DG6*ntPLM&B*Kp&1uvMSA&(P}p>@Cu@VB|B@_! z@pTg7BJH)m3Gv6dHN;dxV}7xIGC|vm43~a7WD`4Ago9duwNfUtkie+)x9>ZT1~FSd zP`O!?VA4gy;hDRh<#wd1Q0o4~8%i^V^ZYIQ_5fwyIJJu>p)8(UuOq!HbCPfT?UTZ( z28d-)H02Kbn~(8B>h#Nxw#R>S$fvcISA|maeR+@#Zoy zbi>x-H|@jh@3(l1=#ZGswIY8Dp^sk%>uQ7L{Iq! z@!~KHL`DtJ!F%w>jD*`}9g#=c&wxU^8CJSBhD`-M846 zsi!jQ4~5m#pSQ3?j9a%h_o+2Cv?s&#H!C$KV`saiv#c^fl)LXCRc>Wk^3o$f*#cnQ zn)+v5xThza!SkEDoyhzGaNhHpZ8bFeJh15c~7v>Pf^S7v=b|Ba|O zKmzl#CzY8!Ya{a~_7#W7e^DH+Cykf9qH}%5{fy6%-*CVD%<2aPxLQD>(Eo4xH`}I~ zM%hSywpY#FVlLX3unUzM(^lN(Jbhe43xlgr6WUUK&3@eeJhSheySLB37LUUN0f4{4 z+%4ivM9=zU1k{Uf4#7Nn6O3JJI-pG@mInrrfByUdH- zff-uxoQBop3VXPhF!CL=owiB0ReAr z!XGA2{UCdpyn(9U5wbdY(|luPRrosg=^|BZ#{VIFo&dH2?cE4WcEAy_0|s79_U8wKefKMy4)On zdh|~rKr4fv^fX|G5(3>PW{J!Bgfx=~Df-9)JPsO3JH2w}DdhFs&=a%^A>EpOk_^Q9 zq;{Ag-HtHw`k>4gaAx5?Q8QkKR8{#m%1M0AnX<8$;nWISJ&No7X!U#z(9B}dzK_m{ z98~X+D|bm!SbX}f4kA3n+Wy8#g%72RR3J2TGSs1LQaO#8j*j!^H27@^GT;7(nI!J zSk*0zpx@XHW4P)YwiB!0J)j8#DmY-xks&T8A^BxU>$u~QiJQF&rNgH^?=NetuAX}| zKl{SBl=;$J-)G@u?F4@<_+^kI@-}|w1MKXt=A-?PzVj`!nAiU-16Js9HR#*ud*4li z0{xV%t@sp$1Xiy{0ov83HFMwcaxMRG>}gFgo-m&+r^HVFGw106b52rdC?PL>#l3I_kIk{jdot!jz|Zi z4U>=~ULRqp{yA5_14*CYH_EA%Toko^2`S>Qk$uQdTy~!OQ7D_Whzlt|{D2}^Zv%v0 z+h_lJ;F3rVi(IY1BgayoupPwf0qjeyDWIc54&s_WJL4#1Gi}$Mn+BgqUf0Dt@C@b+ z@FFg>q9;nmzw&)tkxQxtxOWPxvf!n7R7qrOk35etHW3+Cv-C}ZGH(IEK37YID5I#pD-n=5YcQ(VI{rF-*%S7VY%FxINN2K@oN~+wGngaPmpi$t*fBy z*aV8?4h900z4VRUsluH8W{`tA=*iIw_(uy+z)p1pkFu$?YK z?>}C`l)tOuIT6MYh3+kD2dul9Z=MM{rJqxop{OiQ8_%?_^6EX1KWMcpdQD>ai2)9B zgQI}E`)|{k#nL+thmWhhj-|&q&g7WFA796MeYwKUgyK!^e~YgE!Ushzyc)`KC7G#( z6$VL~=+Y<}zT6gTGC$8x$f6HDYJ-JQ96X~{Ii9HmPq|8TU)y*Tk=*n1{$*<6>-5Yl zkzPUmy60|Bx~!5Ro666+QeFe}s1WS0PckY1R$V;a=@&GEsypjch%u{{AjYi}vW4mh z0)5shkFcKz>Am0&vktE&u9tp)x_9(I*MoBbr(R&Aux}b=dsA_o>>5;-cCCJy~$&I$5!z)ao`6k#_H(_qK=m~tq%nUyd0at=<++E*>9_1uQBIf zkH9~}D@5S-&$3)%)2q1tfQ2JRcZO|M0ZALx%?UIU!$S4IJ9wv`ke@s28cTCh%Ox?0 zwo?R^{zTUVM6T6=AoS}ZPx4K${mf=BcTu!HJk{WJLtmX)@bt7$Zl>hDu#Dz#D{Eha z$y=9@9DoYGm>2YsveSi$;-T(t2jA@4TjV!ed99l9Jelx40 zENtOPE}KfM<>c8cHRKLQhiF@bQR8KrBALViLZ5O}XnY#SF?2NEk}dPf zcxAmWq;bi;Ms!0if;V2I#2CL>6fM75uwZ1U;nux-o~Xd$G`z$D`7jGzH(k5Sdgn!a z*HpK(^oDz)XZfeYpJROfS2I`s4fX%;l?p|p%^FiFLiW8dWJ?H1l4Yz($d;@#L)o%3 z*=a(^zGUAfOLhho#u{VII>TUQ%*-A2`J8*d=l%irzJ8kXJ~Q(^=ly!V-mmBDu^mEo zz{SM?XCCq9!Th&J-=Ef5G}8-`!f&BO>%Ed_P&mVM(WY8DB_=?0n{)5GrLv?4nV}qS z^T1=d9eywpXHxm~~Sc&^PV=sXbxMd;> z?}Ob*)SqWN)_sTW-EQgnr^4J(FI5h#jd)CZJ1-kc{S5!#H|lUCErO+Epw)carr7%k zeVG3jeJ~K%FZl)Qc-A14=fr$O+;RL%+*SW8yg1>m7WdabPIHNS{$nNofBMmq>j>(# zs=Wxp$Onru=PvxoacZzqrk)m`Vr77~oI?50oG|&dw~|Z2a_V3brwW}AXuj}pJ@+JS z6LI+irHmvSyX}w6Pe~sMK;EE`^6_u6dJezreX+QF9A9bwFb&;~*5!nY&bnL9vNl_#ca@HFMP7Ck7<0qQPg}ioq^Tm(szWwUvTDh292wbl zXvtPOUq!>T2IV2ID~hx`|5({ec6pC1Flxz$7yhqepN`2V1=XlP1T)V3C2XDTT3T1I zQFAj$oA(n8?HUJk>!BhlGV@+fVKHMIF)!#RQ1qI*f0u=nyyRoG z3=HMImO|H894j#!FT^`nU<>;uy6GMp1&Q;gO$UGAUgif{fMRGqP~1t1*Nle{JDE;}>3fBPqc z)pbz-ynQZ?rg^-+P(0-R7-XI-V67wXr1$;a6G7W*SR`Y~FBU=Kw7cK3NvLcb(i(u?a`< zwgpS&m>ojawH77KRaR6PG7Pkgw_@HmWAQ&B)GAe4bf- zqQ`nJY0@B^a~RWYA)1KsV{9o#`{9w%C1`3c@yMmFJCL;f;m8!wxaek?k=0k0MioYP zA*N^PsW{i^e9k7Sz#)q=2By)q4Fh5F8_%_H7_`Wah@tKGZZy)^l5!#R=c6vg*TQF) z#-8%t{U2@@d1z10f*_r)qVAW2zi?Z3FKQX*IQlLi%3s`5KcxBu|5DuV_&h{T`i1r6 z5H0&WMRPt^AhUN!&+8e%!J>bUh;C~Bgc=ZPdu4T8)I;p&UmFWKWJ3VBQ91f~Kovo} zp^=R+ulaWN>)FVuNfX<9dV9h@XO9p>J_WX#oBpSdS^cl`=kRwZZRyQA6AG?6(Q1`; z{0LMY$YL+4p~{On=~{1KVeXegLNEBU)ao6l&0qN2%y0=Cf>kmudL*& z?Kvg3wFQxieaqv9A36;*A44~2T5?z(GMZq|HisGo7lkKrI(_DhP4OeBqAU{lyEm>0PmmlxG6cl9vdq z#v^6PR2!m#_EGQ?&FxZ2;U^hC2mTFuO3na&oODDlndF};E(u6H-(}Zf#ev?D%9k|v zSKIqu4=uRzJ(df^tlDJMiRgskdR0*o|(}8mh`n{ZGmJg>xY(5$YL~Clkyh0$HAK+)w3H=g z^%~ELXP=n=(=;j++ebJCqKJO|&nzf}-azuYV8Zra>6HgfdL`!CLF{z>!!0rL+(H!x z_swqw-697mxBxj0UcA{joQl;_sfIY_-lkFfCa(}U?0-94ipO4pl-5jyg@~&`5o9TL zYo8wCRpD7PQRK@X`@o4dmOAUeM#!8acoQg;+0T;{vwhBpbWR8clik-}!0y9f;M<4h z6Kf6y@N^+JTHX`WyQ93PdqeNyiGBaL&}F3maiJ%5&YKLeuGW4-45v`xpF=4L{n|=X z7Hk=U65*7N10e$NHbu6@8!JF77OGR21M~oR2yAJajacia_y&vZp$;4wQ#p!?t4gFN zWQYnHY@!bxJKoQ`Ms6Mn4bs5AN-Ny3*-vEh;L}&Esk4;keN-9zeiTGfR0m=B!?q+OUlwvP2dZ+nY#pw^BCR>kg$P@L9M@P zU@Ee?h{64OecSAt)-br1kbZPEx@)#J$HM~dS>Zsan9=@P+{R_DS|TGe+#eLI+#TKiSj2GHZ;!c zpXWx;B=Zh;XVpV{_Z?1&TOb=tUFj1@Qqv3P4PavEUn1w6FY8u5e|e4c$@1*HufpQF zEZ)tiQj;ou#RFcoR8`$Y;ZAUzJ{-g5;yT~Wp(fBqR9ocp!qs%As9Tu8F5wa}t}lVa zgJ3bBx6f+Bsj;T^CGtA2j5zn(dO{t!C4x!CW?k$!F7TA;T3LzFN z6J@`Eh2wf`n^@V2SSEL9)bJ3LD`$?J`)2bnVCLr(^Y3w3u*K-)=(2u34D|#i^!f1Z z2<#IyS|LWeUgpa1R<*bM7qj0;;W7P8a;iEMgKu0Th7Q$%gmcsg&+p0-C88h_BXQ9) z{e05so0|L$vdp%zX_}&a69N+W>%(Q5@rXsta?bt>b#I|%fpfXMDkx*f&vbNzH4WzMlexZD$!^eF#6S*Vo3 z=GwSe7qbU5X;>tYnP*^A%s74!;2;;K{Jv87-n9e!9f2DCqH#Tr=F1aKFFJ^wUi$Ay)7`hOxyS`!YtU z8MlcPsTudEY6E(SUu~|!UvyXyr92FZXd~1X*zT+}Ci)dLysN4?8D+~u=n?xwG?M$s z1-n3?RkYOzHg8c3`3cP}N>ABZr}C!sJFL1M-~!>Ed4K2l7AkF&?vT5HwS>Qe?;^DO z_rcdbr>r+wu#Zr3vAv86Il&+KU`hJ-q+C{JRx0&TSs5MnERqQlv=84w`Ug{Nn>23R zlRpGHI+21m%vvaghq0lsks;&{=p$0?X;|Fw zIQ#FNhrRnLmlZ+V4L4xvmsOH$#d_s#^v8SC6bHOd9&G<3i1=XgM#o zP-o19x6wDB#aWd}$MwAzu5p(D*P4mwZIGTo9&N&UmyJ!uhLKayi+huy5ZNiXNW& zlG*LEUc0h*xO>H?wZk`Nnap=lpt$if@Rh9`fwwoC%XHWCgVzzwR7T^t;kAj>j-}il zUg_)|`wbluxMua%WZWuA?kCwCg*09@t#%Y0O|L--(2MIPJxbKgmP8v&lWMb9#^uu2 zRWp)bDdEZDdg^gKw(wKZ*0FT6v7>VJLgcma*i>>FI)4yfxz|`yCJz@5NV?+S#u`Mv zU(p;(x4bTo(3PI_<}V^5FoaW!2zy421evmQl&qa%@R#~;#UfajHT}!f_;pO=zVP-K zVjz|?gUW>LqNkAF5s8R-I8$L$o}0(YgX>pev9eA& zH*x!>V5ZUUGI8(Glm_jm6Ge0!p0kao>Ue1+u4vvc-41sz7=bTaW+Q5m6;2IHZ%{?V zo#jeC7m}F=t-_~E((`9!6rlMyKu2S{8^r$l&Xc$a{iGzHhGXTe(mMM6%)v2QDsG8` z>5(%0PpUaS=2QYK$d7xI_h9d8BN^#s!P3pG9q5mV{aGcX+Dg3FTb^-L>-zG_jW;a6 zqRu*+b*V87KS*{-nt!%wr8F?|7<`o@nnju9DzPT8(-I!2#~-EuFWPfudNGaU+KXO1 z>DSCVrGYQloSsykIw_u#F<&#*{z~ern=XzbSE0}I`B2}h`7Tw6BvAu4B3%@d`%`ue zJ-L+A@aIo$0(;Q$hZ!lJ5s1Q5y*8v{YvDaEhy-mXaG5ixkqJKkV9bqQ_y>N@7=uDh z7ncTwOb*-J>|4u-`LY)TOQbB|eqzcTfei<{ywp~wLmyK^7?BH9;o$MM5Xj4YF-JA{ z+oZi@+2oC9wcPUU5}2EIcpdXPBXu|N)Uxv4!G#E1*|R5k5tE`0DelB~<%0{hk@n@* z85u($=a9WV(k%M$;)H`{MO~Y-sXf_vuV@Y!9@aR=Wm2MKTEoOcinmp0v|4hBj`QSIy7F&0n^Bui2?*)^EYji{`h?3C-^aM9?0QIV77p}+`e~H5Y|pQtU3o|+ zCdPrUjKJdy4?!JMre8&-TW|EPIKYcC>+K@ZKaUTKLmo1@2I4jAK7ax&c-^wbD6bXT z6A$dlZh)03Y8SUfUbh>|1qr?iR;~Iv`9OBa3!iLRa+&s;dJ)iuq_nj4$syk(2d2pp zC^5?`{k}B1@y1&{3uKXxkkP9p% zCmHSnE>fmh*NXUu=lv+TA6D3w5Ppp9F-s;tk+Qo*zd`%g7RwzS*$2pGcw%MiMiko4 zJ>BQHnEBi*Zyz|Mu~F9N04-KOpYzI)S}_LJvW3mYCk~o zM!2^C4F$`x^*wZB-vWM2`m4LSb?&BK-}-`Q57}U5M}NOhJr2BLi2@DmqVwO&P9*o} z8!AxV+}x29^!tnuHH>(?6q_gzg>)fEHtlS?Hg(3rr0SNwgRr2(b1KG-F>k==) zR9i|BS`hAhu6}*Xa5O8r=eYujd+&#$b?~4g& z-fo;f!)#1y7^()hg6te9DU#E4!)=gjXEI~RbO%jvXW47(m0<3*d`s$q9}D^ZkrRaH*TkKS`i0FcXUh}}wCb1bb=D1}*YgPnqk9{TOcOZJB?AI5 z7xr)!Yz?|ka(Rx3-e<5F)5&HhJO|18Nzxk5^KsEHZ$-D*WxKYE??q+bG2Vcu__1Vb z$#kN$@<+p49u4YizP%cmlBmugyePbzA6LeUj5#b!C>OdeZ5`GoAy~d^T}RvPD$a#) zxbY%R02t5;nNPSi%8|!CgJ`Yh`ssgK&26EhRx@4`>3?$Xq&}OHn55jr?6pYb1#)B) zgs1cEi`OTOsN2Qkm+IC4$T`8#wBK3~z`YGMHDu+U7fGMo9Q>?MwDFBRHI(w*2O?6B zWJ29H*t9K-l!s01hTgyk$5xKnnLPK=Pn`5VNm6^pP)xNwSZNzB-uxHlaYMHN literal 0 HcmV?d00001 diff --git a/pictures/spark-flume-input.png b/pictures/spark-flume-input.png new file mode 100644 index 0000000000000000000000000000000000000000..bef23844ec8e124395f8e264f5cd00fe3f84af58 GIT binary patch literal 16528 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 S;z%!$>1Y_-tG;U!`M&_Eh&UYp literal 0 HcmV?d00001