TriHUG November Pig Talk by Alan Gates

Download TriHUG November Pig Talk by Alan Gates

Post on 08-May-2015




0 download


  • 1.PigDataflow Scripting for HadoopAlan F. Gates@alanfgates Hortonworks, Inc 2011Page 1

2. Who Am I? Pig committer and PMC Member HCatalog committer and mentor Member of ASF and Incubator PMC Co-founder of Hortonworks Author of Programming Pig from OReilly Photo credit: Steven Guarnaccia, The Three Little Pigs 3. Who Are You? 3 4. ExampleFor all of your Load UsersLoad Logsregistered users, youSemi-joinwant to count howmany came to your site Count by zipCount bythis month. You wantage, genderthis count both bygeography (zip code)StoreStore resultsresultsand by demographicgroup (age andgender) 5. In Pig Latin-- Load web server logslogs= load server_logs using HCatLoader();thismonth = filter logs by date >= 20110801and date < 20110901;-- Load usersusers = load users using HCatLoader();-- Remove any users that did not visit this monthgrpd= cogroup thismonth by userid, users by userid;fltrd = filter grpd by not IsEmpty(logs);visited = foreach fltrd generate flatten(users);-- Count by zip codegrpbyzip = group visited by zip;cntzip= foreach grpbyzip generate group, COUNT(visited);store cntzip into by_zip using HCatStorer(date=201108);-- Count by demographicsgrpbydemo = group visited by (age, gender);cntdemo = foreach grpbydemo generate flatten(group), COUNT(visited);store cntdemo into by_demo using HCatStorer(date=201108); 6. Pigs Place in the Data World Data Collection Data Factory Data Warehouse PigHive PipelinesBI Tools Iterative Processing Analysis Research6 7. Why not MapReduce? Pig Provides a number of standard data operators Five different implementations of join (hash, fragment- replicate, merge, sparse merged, skewed) Order by provides total ordering across reducers in a balanced way Provides optimizations that are hard to do by hand Multi-query: Pig will combine certain types of operations together in a single pipeline to reduce the number of times data is scanned User Defined Functions provide a way to inject your codeinto the data transformation can be written in Java or Python can do column transformation (TOUPPER) and aggregation (SUM) can be written to take advantage of the combiner Control flow can be done via Python or Java7 8. Embedding Example: Compute PagerankPageRank:A system of linear equations (as many as thereare pages on the web, yeah, a lot):It can be approximated iteratively: compute the new page rank based on the page ranks of the previous iteration. Start with some value.Ref: Slide courtesy of Julien Le Dem 9. Or more visuallyEach page sends a fraction of its PageRank to the pages linked to. Inversely proportional to the number of links.Slide courtesy of Julien Le Dem 10. Slide courtesy of Julien Le Dem 11. Lets zoom in pig script: PR(A) = (1-d) + d (PR(T1)/C(T1) + ... + PR(Tn)/C(Tn))Iterate 10 times Pass parametersas a dictionary Just run P, that was declared aboveThe output becomes the newinputSlide courtesy of Julien Le Dem 12. Recently Added Features New in 0.9 (released July 2011): Embedding in Python Macros and Imports New in 0.10 (should release in Dec 2011) Boolean data type Hash based aggregation for aggregates withlow cardinality keys UDFs to build and apply bloom filters UDFs in JRuby (may slip to next release) 14 13. Learn More Read the online documentation: Programming Pig from OReillyPress Join the mailing lists: for userquestions for developerissues Follow me onTwitter, @alanfgates 14. Questions16