wukong 3.0.0.pre → 3.0.0.pre2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (476) hide show
  1. data/.gitignore +46 -33
  2. data/.gitmodules +3 -0
  3. data/.rspec +1 -1
  4. data/.travis.yml +8 -1
  5. data/.yardopts +0 -13
  6. data/Guardfile +4 -6
  7. data/{LICENSE.textile → LICENSE.md} +43 -55
  8. data/README-old.md +422 -0
  9. data/README.md +279 -418
  10. data/Rakefile +21 -5
  11. data/TODO.md +6 -6
  12. data/bin/wu-clean-encoding +31 -0
  13. data/bin/wu-lign +2 -2
  14. data/bin/wu-local +69 -0
  15. data/bin/wu-server +70 -0
  16. data/examples/Gemfile +38 -0
  17. data/examples/README.md +9 -0
  18. data/examples/dataflow/apache_log_line.rb +64 -25
  19. data/examples/dataflow/fibonacci_series.rb +101 -0
  20. data/examples/dataflow/parse_apache_logs.rb +37 -7
  21. data/examples/{dataflow.rb → dataflow/scraper_macro_flow.rb} +0 -0
  22. data/examples/dataflow/simple.rb +4 -4
  23. data/examples/geo.rb +4 -0
  24. data/examples/geo/geo_grids.numbers +0 -0
  25. data/examples/geo/geolocated.rb +331 -0
  26. data/examples/geo/quadtile.rb +69 -0
  27. data/examples/geo/spec/geolocated_spec.rb +247 -0
  28. data/examples/geo/tile_fetcher.rb +77 -0
  29. data/examples/graph/minimum_spanning_tree.rb +61 -61
  30. data/examples/jabberwocky.txt +36 -0
  31. data/examples/models/wikipedia.rb +20 -0
  32. data/examples/munging/Gemfile +8 -0
  33. data/examples/munging/airline_flights/airline.rb +57 -0
  34. data/examples/munging/airline_flights/airline_flights.rake +83 -0
  35. data/{lib/wukong/settings.rb → examples/munging/airline_flights/airplane.rb} +0 -0
  36. data/examples/munging/airline_flights/airport.rb +211 -0
  37. data/examples/munging/airline_flights/airport_id_unification.rb +129 -0
  38. data/examples/munging/airline_flights/airport_ok_chars.rb +4 -0
  39. data/examples/munging/airline_flights/flight.rb +156 -0
  40. data/examples/munging/airline_flights/models.rb +4 -0
  41. data/examples/munging/airline_flights/parse.rb +26 -0
  42. data/examples/munging/airline_flights/reconcile_airports.rb +142 -0
  43. data/examples/munging/airline_flights/route.rb +35 -0
  44. data/examples/munging/airline_flights/tasks.rake +83 -0
  45. data/examples/munging/airline_flights/timezone_fixup.rb +62 -0
  46. data/examples/munging/airline_flights/topcities.rb +167 -0
  47. data/examples/munging/airports/40_wbans.txt +40 -0
  48. data/examples/munging/airports/filter_weather_reports.rb +37 -0
  49. data/examples/munging/airports/join.pig +31 -0
  50. data/examples/munging/airports/to_tsv.rb +33 -0
  51. data/examples/munging/airports/usa_wbans.pig +19 -0
  52. data/examples/munging/airports/usa_wbans.txt +2157 -0
  53. data/examples/munging/airports/wbans.pig +19 -0
  54. data/examples/munging/airports/wbans.txt +2310 -0
  55. data/examples/munging/geo/geo_json.rb +54 -0
  56. data/examples/munging/geo/geo_models.rb +69 -0
  57. data/examples/munging/geo/geonames_models.rb +78 -0
  58. data/examples/munging/geo/iso_codes.rb +172 -0
  59. data/examples/munging/geo/reconcile_countries.rb +124 -0
  60. data/examples/munging/geo/tasks.rake +71 -0
  61. data/examples/munging/rake_helper.rb +62 -0
  62. data/examples/munging/weather/.gitignore +1 -0
  63. data/examples/munging/weather/Gemfile +4 -0
  64. data/examples/munging/weather/Rakefile +28 -0
  65. data/examples/munging/weather/extract_ish.rb +13 -0
  66. data/examples/munging/weather/models/weather.rb +119 -0
  67. data/examples/munging/weather/utils/noaa_downloader.rb +46 -0
  68. data/examples/munging/wikipedia/README.md +34 -0
  69. data/examples/munging/wikipedia/Rakefile +193 -0
  70. data/examples/munging/wikipedia/articles/extract_articles-parsed.rb +79 -0
  71. data/examples/munging/wikipedia/articles/extract_articles-templated.rb +136 -0
  72. data/examples/munging/wikipedia/articles/textualize_articles.rb +54 -0
  73. data/examples/munging/wikipedia/articles/verify_structure.rb +43 -0
  74. data/examples/munging/wikipedia/articles/wp2txt-LICENSE.txt +22 -0
  75. data/examples/munging/wikipedia/articles/wp2txt_article.rb +259 -0
  76. data/examples/munging/wikipedia/articles/wp2txt_utils.rb +452 -0
  77. data/examples/munging/wikipedia/dbpedia/dbpedia_common.rb +4 -0
  78. data/examples/munging/wikipedia/dbpedia/dbpedia_extract_geocoordinates.rb +78 -0
  79. data/examples/munging/wikipedia/dbpedia/extract_links.rb +193 -0
  80. data/examples/munging/wikipedia/dbpedia/sameas_extractor.rb +20 -0
  81. data/examples/munging/wikipedia/n1_subuniverse/n1_nodes.pig +18 -0
  82. data/examples/munging/wikipedia/page_metadata/extract_page_metadata.rb +21 -0
  83. data/examples/munging/wikipedia/page_metadata/extract_page_metadata.rb.old +27 -0
  84. data/examples/munging/wikipedia/pagelinks/augment_pagelinks.pig +29 -0
  85. data/examples/munging/wikipedia/pagelinks/extract_pagelinks.rb +14 -0
  86. data/examples/munging/wikipedia/pagelinks/extract_pagelinks.rb.old +25 -0
  87. data/examples/munging/wikipedia/pagelinks/undirect_pagelinks.pig +29 -0
  88. data/examples/munging/wikipedia/pageviews/augment_pageviews.pig +32 -0
  89. data/examples/munging/wikipedia/pageviews/extract_pageviews.rb +85 -0
  90. data/examples/munging/wikipedia/pig_style_guide.md +25 -0
  91. data/examples/munging/wikipedia/redirects/redirects_page_metadata.pig +19 -0
  92. data/examples/munging/wikipedia/subuniverse/sub_articles.pig +23 -0
  93. data/examples/munging/wikipedia/subuniverse/sub_page_metadata.pig +24 -0
  94. data/examples/munging/wikipedia/subuniverse/sub_pagelinks_from.pig +22 -0
  95. data/examples/munging/wikipedia/subuniverse/sub_pagelinks_into.pig +22 -0
  96. data/examples/munging/wikipedia/subuniverse/sub_pagelinks_within.pig +26 -0
  97. data/examples/munging/wikipedia/subuniverse/sub_pageviews.pig +29 -0
  98. data/examples/munging/wikipedia/subuniverse/sub_undirected_pagelinks_within.pig +24 -0
  99. data/examples/munging/wikipedia/utils/get_namespaces.rb +86 -0
  100. data/examples/munging/wikipedia/utils/munging_utils.rb +68 -0
  101. data/examples/munging/wikipedia/utils/namespaces.json +1 -0
  102. data/examples/rake_helper.rb +85 -0
  103. data/examples/server_logs/geo_ip_mapping/munge_geolite.rb +82 -0
  104. data/examples/server_logs/logline.rb +95 -0
  105. data/examples/server_logs/models.rb +66 -0
  106. data/examples/server_logs/page_counts.pig +48 -0
  107. data/examples/server_logs/server_logs-01-parse-script.rb +13 -0
  108. data/examples/server_logs/server_logs-02-histograms-full.rb +33 -0
  109. data/examples/server_logs/server_logs-02-histograms-mapper.rb +14 -0
  110. data/{old/examples/server_logs/breadcrumbs.rb → examples/server_logs/server_logs-03-breadcrumbs-full.rb} +26 -30
  111. data/examples/server_logs/server_logs-04-page_page_edges-full.rb +40 -0
  112. data/examples/string_reverser.rb +26 -0
  113. data/examples/text/pig_latin.rb +2 -2
  114. data/examples/text/regional_flavor/README.md +14 -0
  115. data/examples/text/regional_flavor/article_wordbags.pig +39 -0
  116. data/examples/text/regional_flavor/j01-article_wordbags.rb +4 -0
  117. data/examples/text/regional_flavor/simple_pig_script.pig +27 -0
  118. data/examples/word_count/accumulator.rb +26 -0
  119. data/examples/word_count/tokenizer.rb +13 -0
  120. data/examples/word_count/word_count.rb +6 -0
  121. data/examples/workflow/cherry_pie.dot +97 -0
  122. data/examples/workflow/cherry_pie.png +0 -0
  123. data/examples/workflow/cherry_pie.rb +61 -26
  124. data/lib/hanuman.rb +34 -7
  125. data/lib/hanuman/graph.rb +55 -31
  126. data/lib/hanuman/graphvizzer.rb +199 -178
  127. data/lib/hanuman/graphvizzer/gv_models.rb +161 -0
  128. data/lib/hanuman/graphvizzer/gv_presenter.rb +97 -0
  129. data/lib/hanuman/link.rb +35 -0
  130. data/lib/hanuman/registry.rb +46 -0
  131. data/lib/hanuman/stage.rb +76 -32
  132. data/lib/wukong.rb +23 -24
  133. data/lib/wukong/boot.rb +87 -0
  134. data/lib/wukong/configuration.rb +8 -0
  135. data/lib/wukong/dataflow.rb +45 -78
  136. data/lib/wukong/driver.rb +99 -0
  137. data/lib/wukong/emitter.rb +22 -0
  138. data/lib/wukong/model/faker.rb +24 -24
  139. data/lib/wukong/model/flatpack_parser/flat.rb +60 -0
  140. data/lib/wukong/model/flatpack_parser/flatpack.rb +4 -0
  141. data/lib/wukong/model/flatpack_parser/lang.rb +46 -0
  142. data/lib/wukong/model/flatpack_parser/parser.rb +55 -0
  143. data/lib/wukong/model/flatpack_parser/tokens.rb +130 -0
  144. data/lib/wukong/processor.rb +60 -114
  145. data/lib/wukong/spec_helpers.rb +81 -0
  146. data/lib/wukong/spec_helpers/integration_driver.rb +144 -0
  147. data/lib/wukong/spec_helpers/integration_driver_matchers.rb +219 -0
  148. data/lib/wukong/spec_helpers/processor_helpers.rb +95 -0
  149. data/lib/wukong/spec_helpers/processor_methods.rb +108 -0
  150. data/lib/wukong/spec_helpers/shared_examples.rb +15 -0
  151. data/lib/wukong/spec_helpers/spec_driver.rb +28 -0
  152. data/lib/wukong/spec_helpers/spec_driver_matchers.rb +195 -0
  153. data/lib/wukong/version.rb +2 -1
  154. data/lib/wukong/widget/filters.rb +311 -0
  155. data/lib/wukong/widget/processors.rb +156 -0
  156. data/lib/wukong/widget/reducers.rb +7 -0
  157. data/lib/wukong/widget/reducers/accumulator.rb +73 -0
  158. data/lib/wukong/widget/reducers/bin.rb +318 -0
  159. data/lib/wukong/widget/reducers/count.rb +61 -0
  160. data/lib/wukong/widget/reducers/group.rb +85 -0
  161. data/lib/wukong/widget/reducers/group_concat.rb +70 -0
  162. data/lib/wukong/widget/reducers/moments.rb +72 -0
  163. data/lib/wukong/widget/reducers/sort.rb +130 -0
  164. data/lib/wukong/widget/serializers.rb +287 -0
  165. data/lib/wukong/widget/sink.rb +10 -52
  166. data/lib/wukong/widget/source.rb +7 -113
  167. data/lib/wukong/widget/utils.rb +46 -0
  168. data/lib/wukong/widgets.rb +6 -0
  169. data/spec/examples/dataflow/fibonacci_series_spec.rb +18 -0
  170. data/spec/examples/dataflow/parsing_spec.rb +12 -11
  171. data/spec/examples/dataflow/simple_spec.rb +32 -6
  172. data/spec/examples/dataflow/telegram_spec.rb +36 -36
  173. data/spec/examples/graph/minimum_spanning_tree_spec.rb +30 -31
  174. data/spec/examples/munging/airline_flights/identifiers_spec.rb +16 -0
  175. data/spec/examples/munging/airline_flights_spec.rb +202 -0
  176. data/spec/examples/text/pig_latin_spec.rb +13 -16
  177. data/spec/examples/workflow/cherry_pie_spec.rb +34 -4
  178. data/spec/hanuman/graph_spec.rb +27 -2
  179. data/spec/hanuman/hanuman_spec.rb +10 -0
  180. data/spec/hanuman/registry_spec.rb +123 -0
  181. data/spec/hanuman/stage_spec.rb +61 -7
  182. data/spec/spec_helper.rb +29 -19
  183. data/spec/support/hanuman_test_helpers.rb +14 -12
  184. data/spec/support/shared_context_for_reducers.rb +37 -0
  185. data/spec/support/shared_examples_for_builders.rb +101 -0
  186. data/spec/support/shared_examples_for_shortcuts.rb +57 -0
  187. data/spec/support/wukong_test_helpers.rb +37 -11
  188. data/spec/wukong/dataflow_spec.rb +77 -55
  189. data/spec/wukong/local_runner_spec.rb +24 -24
  190. data/spec/wukong/model/faker_spec.rb +132 -131
  191. data/spec/wukong/runner_spec.rb +8 -8
  192. data/spec/wukong/widget/filters_spec.rb +61 -0
  193. data/spec/wukong/widget/processors_spec.rb +126 -0
  194. data/spec/wukong/widget/reducers/bin_spec.rb +92 -0
  195. data/spec/wukong/widget/reducers/count_spec.rb +11 -0
  196. data/spec/wukong/widget/reducers/group_spec.rb +20 -0
  197. data/spec/wukong/widget/reducers/moments_spec.rb +36 -0
  198. data/spec/wukong/widget/reducers/sort_spec.rb +26 -0
  199. data/spec/wukong/widget/serializers_spec.rb +92 -0
  200. data/spec/wukong/widget/sink_spec.rb +15 -15
  201. data/spec/wukong/widget/source_spec.rb +65 -41
  202. data/spec/wukong/wukong_spec.rb +10 -0
  203. data/wukong.gemspec +17 -10
  204. metadata +359 -335
  205. data/.document +0 -5
  206. data/VERSION +0 -1
  207. data/bin/hdp-bin +0 -44
  208. data/bin/hdp-bzip +0 -23
  209. data/bin/hdp-cat +0 -3
  210. data/bin/hdp-catd +0 -3
  211. data/bin/hdp-cp +0 -3
  212. data/bin/hdp-du +0 -86
  213. data/bin/hdp-get +0 -3
  214. data/bin/hdp-kill +0 -3
  215. data/bin/hdp-kill-task +0 -3
  216. data/bin/hdp-ls +0 -11
  217. data/bin/hdp-mkdir +0 -2
  218. data/bin/hdp-mkdirp +0 -12
  219. data/bin/hdp-mv +0 -3
  220. data/bin/hdp-parts_to_keys.rb +0 -77
  221. data/bin/hdp-ps +0 -3
  222. data/bin/hdp-put +0 -3
  223. data/bin/hdp-rm +0 -32
  224. data/bin/hdp-sort +0 -40
  225. data/bin/hdp-stream +0 -40
  226. data/bin/hdp-stream-flat +0 -22
  227. data/bin/hdp-stream2 +0 -39
  228. data/bin/hdp-sync +0 -17
  229. data/bin/hdp-wc +0 -67
  230. data/bin/wu-flow +0 -10
  231. data/bin/wu-map +0 -17
  232. data/bin/wu-red +0 -17
  233. data/bin/wukong +0 -17
  234. data/data/CREDITS.md +0 -355
  235. data/data/graph/airfares.tsv +0 -2174
  236. data/data/text/gift_of_the_magi.txt +0 -225
  237. data/data/text/jabberwocky.txt +0 -36
  238. data/data/text/rectification_of_names.txt +0 -33
  239. data/data/twitter/a_atsigns_b.tsv +0 -64
  240. data/data/twitter/a_follows_b.tsv +0 -53
  241. data/data/twitter/tweet.tsv +0 -167
  242. data/data/twitter/twitter_user.tsv +0 -55
  243. data/data/wikipedia/dbpedia-sentences.tsv +0 -1000
  244. data/docpages/INSTALL.textile +0 -92
  245. data/docpages/LICENSE.textile +0 -107
  246. data/docpages/README-elastic_map_reduce.textile +0 -377
  247. data/docpages/README-performance.textile +0 -90
  248. data/docpages/README-wulign.textile +0 -65
  249. data/docpages/UsingWukong-part1-get_ready.textile +0 -17
  250. data/docpages/UsingWukong-part2-ThinkingBigData.textile +0 -75
  251. data/docpages/UsingWukong-part3-parsing.textile +0 -138
  252. data/docpages/_config.yml +0 -39
  253. data/docpages/avro/avro_notes.textile +0 -56
  254. data/docpages/avro/performance.textile +0 -36
  255. data/docpages/avro/tethering.textile +0 -19
  256. data/docpages/bigdata-tips.textile +0 -143
  257. data/docpages/code/api_response_example.txt +0 -20
  258. data/docpages/code/parser_skeleton.rb +0 -38
  259. data/docpages/diagrams/MapReduceDiagram.graffle +0 -0
  260. data/docpages/favicon.ico +0 -0
  261. data/docpages/gem.css +0 -16
  262. data/docpages/hadoop-tips.textile +0 -83
  263. data/docpages/index.textile +0 -92
  264. data/docpages/intro.textile +0 -8
  265. data/docpages/moreinfo.textile +0 -174
  266. data/docpages/news.html +0 -24
  267. data/docpages/pig/PigLatinExpressionsList.txt +0 -122
  268. data/docpages/pig/PigLatinReferenceManual.txt +0 -1640
  269. data/docpages/pig/commandline_params.txt +0 -26
  270. data/docpages/pig/cookbook.html +0 -481
  271. data/docpages/pig/images/hadoop-logo.jpg +0 -0
  272. data/docpages/pig/images/instruction_arrow.png +0 -0
  273. data/docpages/pig/images/pig-logo.gif +0 -0
  274. data/docpages/pig/piglatin_ref1.html +0 -1103
  275. data/docpages/pig/piglatin_ref2.html +0 -14340
  276. data/docpages/pig/setup.html +0 -505
  277. data/docpages/pig/skin/basic.css +0 -166
  278. data/docpages/pig/skin/breadcrumbs.js +0 -237
  279. data/docpages/pig/skin/fontsize.js +0 -166
  280. data/docpages/pig/skin/getBlank.js +0 -40
  281. data/docpages/pig/skin/getMenu.js +0 -45
  282. data/docpages/pig/skin/images/chapter.gif +0 -0
  283. data/docpages/pig/skin/images/chapter_open.gif +0 -0
  284. data/docpages/pig/skin/images/current.gif +0 -0
  285. data/docpages/pig/skin/images/external-link.gif +0 -0
  286. data/docpages/pig/skin/images/header_white_line.gif +0 -0
  287. data/docpages/pig/skin/images/page.gif +0 -0
  288. data/docpages/pig/skin/images/pdfdoc.gif +0 -0
  289. data/docpages/pig/skin/images/rc-b-l-15-1body-2menu-3menu.png +0 -0
  290. data/docpages/pig/skin/images/rc-b-r-15-1body-2menu-3menu.png +0 -0
  291. data/docpages/pig/skin/images/rc-b-r-5-1header-2tab-selected-3tab-selected.png +0 -0
  292. data/docpages/pig/skin/images/rc-t-l-5-1header-2searchbox-3searchbox.png +0 -0
  293. data/docpages/pig/skin/images/rc-t-l-5-1header-2tab-selected-3tab-selected.png +0 -0
  294. data/docpages/pig/skin/images/rc-t-l-5-1header-2tab-unselected-3tab-unselected.png +0 -0
  295. data/docpages/pig/skin/images/rc-t-r-15-1body-2menu-3menu.png +0 -0
  296. data/docpages/pig/skin/images/rc-t-r-5-1header-2searchbox-3searchbox.png +0 -0
  297. data/docpages/pig/skin/images/rc-t-r-5-1header-2tab-selected-3tab-selected.png +0 -0
  298. data/docpages/pig/skin/images/rc-t-r-5-1header-2tab-unselected-3tab-unselected.png +0 -0
  299. data/docpages/pig/skin/print.css +0 -54
  300. data/docpages/pig/skin/profile.css +0 -181
  301. data/docpages/pig/skin/screen.css +0 -587
  302. data/docpages/pig/tutorial.html +0 -1059
  303. data/docpages/pig/udf.html +0 -1509
  304. data/docpages/tutorial.textile +0 -283
  305. data/docpages/usage.textile +0 -195
  306. data/docpages/wutils.textile +0 -263
  307. data/examples/dataflow/complex.rb +0 -11
  308. data/examples/dataflow/donuts.rb +0 -13
  309. data/examples/tiny_count/jabberwocky_output.tsv +0 -92
  310. data/examples/word_count.rb +0 -48
  311. data/examples/workflow/fiddle.rb +0 -24
  312. data/lib/away/escapement.rb +0 -129
  313. data/lib/away/exe.rb +0 -11
  314. data/lib/away/experimental.rb +0 -5
  315. data/lib/away/from_file.rb +0 -52
  316. data/lib/away/job.rb +0 -56
  317. data/lib/away/job/rake_compat.rb +0 -17
  318. data/lib/away/registry.rb +0 -79
  319. data/lib/away/runner.rb +0 -276
  320. data/lib/away/runner/execute.rb +0 -121
  321. data/lib/away/script.rb +0 -161
  322. data/lib/away/script/hadoop_command.rb +0 -240
  323. data/lib/away/source/file_list_source.rb +0 -15
  324. data/lib/away/source/looper.rb +0 -18
  325. data/lib/away/task.rb +0 -219
  326. data/lib/hanuman/action.rb +0 -21
  327. data/lib/hanuman/chain.rb +0 -4
  328. data/lib/hanuman/graphviz.rb +0 -74
  329. data/lib/hanuman/resource.rb +0 -6
  330. data/lib/hanuman/slot.rb +0 -87
  331. data/lib/hanuman/slottable.rb +0 -220
  332. data/lib/wukong/bad_record.rb +0 -15
  333. data/lib/wukong/event.rb +0 -44
  334. data/lib/wukong/local_runner.rb +0 -55
  335. data/lib/wukong/mapred.rb +0 -3
  336. data/lib/wukong/universe.rb +0 -48
  337. data/lib/wukong/widget/filter.rb +0 -81
  338. data/lib/wukong/widget/gibberish.rb +0 -123
  339. data/lib/wukong/widget/monitor.rb +0 -26
  340. data/lib/wukong/widget/reducer.rb +0 -66
  341. data/lib/wukong/widget/stringifier.rb +0 -50
  342. data/lib/wukong/workflow.rb +0 -22
  343. data/lib/wukong/workflow/command.rb +0 -42
  344. data/old/config/emr-example.yaml +0 -48
  345. data/old/examples/README.txt +0 -17
  346. data/old/examples/contrib/jeans/README.markdown +0 -165
  347. data/old/examples/contrib/jeans/data/normalized_sizes +0 -3
  348. data/old/examples/contrib/jeans/data/orders.tsv +0 -1302
  349. data/old/examples/contrib/jeans/data/sizes +0 -3
  350. data/old/examples/contrib/jeans/normalize.rb +0 -20
  351. data/old/examples/contrib/jeans/sizes.rb +0 -55
  352. data/old/examples/corpus/bnc_word_freq.rb +0 -44
  353. data/old/examples/corpus/bucket_counter.rb +0 -47
  354. data/old/examples/corpus/dbpedia_abstract_to_sentences.rb +0 -86
  355. data/old/examples/corpus/sentence_bigrams.rb +0 -53
  356. data/old/examples/corpus/sentence_coocurrence.rb +0 -66
  357. data/old/examples/corpus/stopwords.rb +0 -138
  358. data/old/examples/corpus/words_to_bigrams.rb +0 -53
  359. data/old/examples/emr/README.textile +0 -110
  360. data/old/examples/emr/dot_wukong_dir/credentials.json +0 -7
  361. data/old/examples/emr/dot_wukong_dir/emr.yaml +0 -69
  362. data/old/examples/emr/dot_wukong_dir/emr_bootstrap.sh +0 -33
  363. data/old/examples/emr/elastic_mapreduce_example.rb +0 -28
  364. data/old/examples/network_graph/adjacency_list.rb +0 -74
  365. data/old/examples/network_graph/breadth_first_search.rb +0 -72
  366. data/old/examples/network_graph/gen_2paths.rb +0 -68
  367. data/old/examples/network_graph/gen_multi_edge.rb +0 -112
  368. data/old/examples/network_graph/gen_symmetric_links.rb +0 -64
  369. data/old/examples/pagerank/README.textile +0 -6
  370. data/old/examples/pagerank/gen_initial_pagerank_graph.pig +0 -57
  371. data/old/examples/pagerank/pagerank.rb +0 -72
  372. data/old/examples/pagerank/pagerank_initialize.rb +0 -42
  373. data/old/examples/pagerank/run_pagerank.sh +0 -21
  374. data/old/examples/sample_records.rb +0 -33
  375. data/old/examples/server_logs/apache_log_parser.rb +0 -15
  376. data/old/examples/server_logs/nook.rb +0 -48
  377. data/old/examples/server_logs/nook/faraday_dummy_adapter.rb +0 -94
  378. data/old/examples/server_logs/user_agent.rb +0 -40
  379. data/old/examples/simple_word_count.rb +0 -82
  380. data/old/examples/size.rb +0 -61
  381. data/old/examples/stats/avg_value_frequency.rb +0 -86
  382. data/old/examples/stats/binning_percentile_estimator.rb +0 -140
  383. data/old/examples/stats/data/avg_value_frequency.tsv +0 -3
  384. data/old/examples/stats/rank_and_bin.rb +0 -173
  385. data/old/examples/stupidly_simple_filter.rb +0 -40
  386. data/old/examples/word_count.rb +0 -75
  387. data/old/graph/graphviz_builder.rb +0 -580
  388. data/old/graph_easy/Attributes.pm +0 -4181
  389. data/old/graph_easy/Graphviz.pm +0 -2232
  390. data/old/wukong.rb +0 -18
  391. data/old/wukong/and_pig.rb +0 -38
  392. data/old/wukong/bad_record.rb +0 -18
  393. data/old/wukong/datatypes.rb +0 -24
  394. data/old/wukong/datatypes/enum.rb +0 -127
  395. data/old/wukong/datatypes/fake_types.rb +0 -17
  396. data/old/wukong/decorator.rb +0 -28
  397. data/old/wukong/encoding/asciize.rb +0 -108
  398. data/old/wukong/extensions.rb +0 -16
  399. data/old/wukong/extensions/array.rb +0 -18
  400. data/old/wukong/extensions/blank.rb +0 -93
  401. data/old/wukong/extensions/class.rb +0 -189
  402. data/old/wukong/extensions/date_time.rb +0 -53
  403. data/old/wukong/extensions/emittable.rb +0 -69
  404. data/old/wukong/extensions/enumerable.rb +0 -79
  405. data/old/wukong/extensions/hash.rb +0 -167
  406. data/old/wukong/extensions/hash_keys.rb +0 -16
  407. data/old/wukong/extensions/hash_like.rb +0 -150
  408. data/old/wukong/extensions/hashlike_class.rb +0 -47
  409. data/old/wukong/extensions/module.rb +0 -2
  410. data/old/wukong/extensions/pathname.rb +0 -27
  411. data/old/wukong/extensions/string.rb +0 -65
  412. data/old/wukong/extensions/struct.rb +0 -17
  413. data/old/wukong/extensions/symbol.rb +0 -11
  414. data/old/wukong/filename_pattern.rb +0 -74
  415. data/old/wukong/helper.rb +0 -7
  416. data/old/wukong/helper/stopwords.rb +0 -195
  417. data/old/wukong/helper/tokenize.rb +0 -35
  418. data/old/wukong/logger.rb +0 -38
  419. data/old/wukong/periodic_monitor.rb +0 -72
  420. data/old/wukong/schema.rb +0 -269
  421. data/old/wukong/script.rb +0 -286
  422. data/old/wukong/script/avro_command.rb +0 -5
  423. data/old/wukong/script/cassandra_loader_script.rb +0 -40
  424. data/old/wukong/script/emr_command.rb +0 -168
  425. data/old/wukong/script/hadoop_command.rb +0 -237
  426. data/old/wukong/script/local_command.rb +0 -41
  427. data/old/wukong/store.rb +0 -10
  428. data/old/wukong/store/base.rb +0 -27
  429. data/old/wukong/store/cassandra.rb +0 -10
  430. data/old/wukong/store/cassandra/streaming.rb +0 -75
  431. data/old/wukong/store/cassandra/struct_loader.rb +0 -21
  432. data/old/wukong/store/cassandra_model.rb +0 -91
  433. data/old/wukong/store/chh_chunked_flat_file_store.rb +0 -37
  434. data/old/wukong/store/chunked_flat_file_store.rb +0 -48
  435. data/old/wukong/store/conditional_store.rb +0 -57
  436. data/old/wukong/store/factory.rb +0 -8
  437. data/old/wukong/store/flat_file_store.rb +0 -89
  438. data/old/wukong/store/key_store.rb +0 -51
  439. data/old/wukong/store/null_store.rb +0 -15
  440. data/old/wukong/store/read_thru_store.rb +0 -22
  441. data/old/wukong/store/tokyo_tdb_key_store.rb +0 -33
  442. data/old/wukong/store/tyrant_rdb_key_store.rb +0 -57
  443. data/old/wukong/store/tyrant_tdb_key_store.rb +0 -20
  444. data/old/wukong/streamer.rb +0 -30
  445. data/old/wukong/streamer/accumulating_reducer.rb +0 -83
  446. data/old/wukong/streamer/base.rb +0 -126
  447. data/old/wukong/streamer/counting_reducer.rb +0 -25
  448. data/old/wukong/streamer/filter.rb +0 -20
  449. data/old/wukong/streamer/instance_streamer.rb +0 -15
  450. data/old/wukong/streamer/json_streamer.rb +0 -21
  451. data/old/wukong/streamer/line_streamer.rb +0 -12
  452. data/old/wukong/streamer/list_reducer.rb +0 -31
  453. data/old/wukong/streamer/rank_and_bin_reducer.rb +0 -145
  454. data/old/wukong/streamer/record_streamer.rb +0 -14
  455. data/old/wukong/streamer/reducer.rb +0 -11
  456. data/old/wukong/streamer/set_reducer.rb +0 -14
  457. data/old/wukong/streamer/struct_streamer.rb +0 -48
  458. data/old/wukong/streamer/summing_reducer.rb +0 -29
  459. data/old/wukong/streamer/uniq_by_last_reducer.rb +0 -51
  460. data/old/wukong/typed_struct.rb +0 -12
  461. data/spec/away/encoding_spec.rb +0 -32
  462. data/spec/away/exe_spec.rb +0 -20
  463. data/spec/away/flow_spec.rb +0 -82
  464. data/spec/away/graph_spec.rb +0 -6
  465. data/spec/away/job_spec.rb +0 -15
  466. data/spec/away/rake_compat_spec.rb +0 -9
  467. data/spec/away/script_spec.rb +0 -81
  468. data/spec/hanuman/graphviz_spec.rb +0 -29
  469. data/spec/hanuman/slot_spec.rb +0 -2
  470. data/spec/support/examples_helper.rb +0 -10
  471. data/spec/support/streamer_test_helpers.rb +0 -6
  472. data/spec/support/wukong_widget_helpers.rb +0 -66
  473. data/spec/wukong/processor_spec.rb +0 -109
  474. data/spec/wukong/widget/filter_spec.rb +0 -99
  475. data/spec/wukong/widget/stringifier_spec.rb +0 -51
  476. data/spec/wukong/workflow/command_spec.rb +0 -5
@@ -1,1059 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2
- <html>
3
- <head>
4
- <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
5
- <meta content="Apache Forrest" name="Generator">
6
- <meta name="Forrest-version" content="0.8">
7
- <meta name="Forrest-skin-name" content="pelt">
8
- <title>Pig Tutorial</title>
9
- <link type="text/css" href="skin/basic.css" rel="stylesheet">
10
- <link media="screen" type="text/css" href="skin/screen.css" rel="stylesheet">
11
- <link media="print" type="text/css" href="skin/print.css" rel="stylesheet">
12
- <link type="text/css" href="skin/profile.css" rel="stylesheet">
13
- <script src="skin/getBlank.js" language="javascript" type="text/javascript"></script><script src="skin/getMenu.js" language="javascript" type="text/javascript"></script><script src="skin/fontsize.js" language="javascript" type="text/javascript"></script>
14
- <link rel="shortcut icon" href="">
15
- </head>
16
- <body onload="init()">
17
- <script type="text/javascript">ndeSetTextSize();</script>
18
- <div id="top">
19
- <!--+
20
- |breadtrail
21
- +-->
22
- <div class="breadtrail">
23
- <a href="http://www.apache.org/">Apache</a> &gt; <a href="http://hadoop.apache.org/">Hadoop</a> &gt; <a href="http://hadoop.apache.org/pig/">Pig</a><script src="skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script>
24
- </div>
25
- <!--+
26
- |header
27
- +-->
28
- <div class="header">
29
- <!--+
30
- |start group logo
31
- +-->
32
- <div class="grouplogo">
33
- <a href="http://hadoop.apache.org/"><img class="logoImage" alt="Hadoop" src="images/hadoop-logo.jpg" title="Apache Hadoop"></a>
34
- </div>
35
- <!--+
36
- |end group logo
37
- +-->
38
- <!--+
39
- |start Project Logo
40
- +-->
41
- <div class="projectlogo">
42
- <a href="http://hadoop.apache.org/pig/"><img class="logoImage" alt="Pig" src="images/pig-logo.gif" title="A platform for analyzing large datasets."></a>
43
- </div>
44
- <!--+
45
- |end Project Logo
46
- +-->
47
- <!--+
48
- |start Search
49
- +-->
50
- <div class="searchbox">
51
- <form action="http://www.google.com/search" method="get" class="roundtopsmall">
52
- <input value="" name="sitesearch" type="hidden"><input onFocus="getBlank (this, 'Search the site with google');" size="25" name="q" id="query" type="text" value="Search the site with google">&nbsp;
53
- <input name="Search" value="Search" type="submit">
54
- </form>
55
- </div>
56
- <!--+
57
- |end search
58
- +-->
59
- <!--+
60
- |start Tabs
61
- +-->
62
- <ul id="tabs">
63
- <li>
64
- <a class="unselected" href="http://hadoop.apache.org/pig/">Project</a>
65
- </li>
66
- <li>
67
- <a class="unselected" href="http://wiki.apache.org/pig/">Wiki</a>
68
- </li>
69
- <li class="current">
70
- <a class="selected" href="index.html">Pig 0.7.0 Documentation</a>
71
- </li>
72
- </ul>
73
- <!--+
74
- |end Tabs
75
- +-->
76
- </div>
77
- </div>
78
- <div id="main">
79
- <div id="publishedStrip">
80
- <!--+
81
- |start Subtabs
82
- +-->
83
- <div id="level2tabs"></div>
84
- <!--+
85
- |end Endtabs
86
- +-->
87
- <script type="text/javascript"><!--
88
- document.write("Last Published: " + document.lastModified);
89
- // --></script>
90
- </div>
91
- <!--+
92
- |breadtrail
93
- +-->
94
- <div class="breadtrail">
95
-
96
- &nbsp;
97
- </div>
98
- <!--+
99
- |start Menu, mainarea
100
- +-->
101
- <!--+
102
- |start Menu
103
- +-->
104
- <div id="menu">
105
- <div onclick="SwitchMenu('menu_selected_1.1', 'skin/')" id="menu_selected_1.1Title" class="menutitle" style="background-image: url('skin/images/chapter_open.gif');">Pig</div>
106
- <div id="menu_selected_1.1" class="selectedmenuitemgroup" style="display: block;">
107
- <div class="menuitem">
108
- <a href="index.html">Overview</a>
109
- </div>
110
- <div class="menuitem">
111
- <a href="setup.html">Setup</a>
112
- </div>
113
- <div class="menupage">
114
- <div class="menupagetitle">Tutorial</div>
115
- </div>
116
- <div class="menuitem">
117
- <a href="piglatin_ref1.html">Pig Latin 1</a>
118
- </div>
119
- <div class="menuitem">
120
- <a href="piglatin_ref2.html">Pig Latin 2</a>
121
- </div>
122
- <div class="menuitem">
123
- <a href="cookbook.html">Cookbook</a>
124
- </div>
125
- <div class="menuitem">
126
- <a href="udf.html">UDFs</a>
127
- </div>
128
- </div>
129
- <div onclick="SwitchMenu('menu_1.2', 'skin/')" id="menu_1.2Title" class="menutitle">Zebra</div>
130
- <div id="menu_1.2" class="menuitemgroup">
131
- <div class="menuitem">
132
- <a href="zebra_overview.html">Zebra Overview </a>
133
- </div>
134
- <div class="menuitem">
135
- <a href="zebra_users.html">Zebra Users </a>
136
- </div>
137
- <div class="menuitem">
138
- <a href="zebra_reference.html">Zebra Reference </a>
139
- </div>
140
- <div class="menuitem">
141
- <a href="zebra_mapreduce.html">Zebra MapReduce </a>
142
- </div>
143
- <div class="menuitem">
144
- <a href="zebra_pig.html">Zebra Pig </a>
145
- </div>
146
- <div class="menuitem">
147
- <a href="zebra_stream.html">Zebra Streaming </a>
148
- </div>
149
- </div>
150
- <div onclick="SwitchMenu('menu_1.3', 'skin/')" id="menu_1.3Title" class="menutitle">Miscellaneous</div>
151
- <div id="menu_1.3" class="menuitemgroup">
152
- <div class="menuitem">
153
- <a href="api/">API Docs</a>
154
- </div>
155
- <div class="menuitem">
156
- <a href="http://wiki.apache.org/pig/">Wiki</a>
157
- </div>
158
- <div class="menuitem">
159
- <a href="http://wiki.apache.org/pig/FAQ">FAQ</a>
160
- </div>
161
- <div class="menuitem">
162
- <a href="http://hadoop.apache.org/pig/releases.html">Release Notes</a>
163
- </div>
164
- </div>
165
- <div id="credit"></div>
166
- <div id="roundbottom">
167
- <img style="display: none" class="corner" height="15" width="15" alt="" src="skin/images/rc-b-l-15-1body-2menu-3menu.png"></div>
168
- <!--+
169
- |alternative credits
170
- +-->
171
- <div id="credit2"></div>
172
- </div>
173
- <!--+
174
- |end Menu
175
- +-->
176
- <!--+
177
- |start content
178
- +-->
179
- <div id="content">
180
- <div title="Portable Document Format" class="pdflink">
181
- <a class="dida" href="tutorial.pdf"><img alt="PDF -icon" src="skin/images/pdfdoc.gif" class="skin"><br>
182
- PDF</a>
183
- </div>
184
- <h1>Pig Tutorial</h1>
185
- <div id="minitoc-area">
186
- <ul class="minitoc">
187
- <li>
188
- <a href="#Overview">Overview</a>
189
- </li>
190
- <li>
191
- <a href="#Java+Installation"> Java Installation</a>
192
- </li>
193
- <li>
194
- <a href="#Pig+Installation"> Pig Installation</a>
195
- </li>
196
- <li>
197
- <a href="#Running+the+Pig+Scripts+in+Local+Mode"> Running the Pig Scripts in Local Mode</a>
198
- </li>
199
- <li>
200
- <a href="#Running+the+Pig+Scripts+in+Mapreduce+Mode"> Running the Pig Scripts in Mapreduce Mode</a>
201
- </li>
202
- <li>
203
- <a href="#Pig+Tutorial+File"> Pig Tutorial File</a>
204
- </li>
205
- <li>
206
- <a href="#Pig+Script+1%3A+Query+Phrase+Popularity"> Pig Script 1: Query Phrase Popularity</a>
207
- </li>
208
- <li>
209
- <a href="#Pig+Script+2%3A+Temporal+Query+Phrase+Popularity">Pig Script 2: Temporal Query Phrase Popularity</a>
210
- </li>
211
- </ul>
212
- </div>
213
-
214
-
215
- <a name="N1000D"></a><a name="Overview"></a>
216
- <h2 class="h3">Overview</h2>
217
- <div class="section">
218
- <p>The Pig tutorial shows you how to run two Pig scripts in local mode and mapreduce mode. </p>
219
- <ul>
220
-
221
- <li>
222
- <p>
223
- <strong>Local Mode</strong>: To run the scripts in local mode, no Hadoop or HDFS installation is required. All files are installed and run from your local host and file system. </p>
224
-
225
- </li>
226
-
227
- <li>
228
- <p>
229
- <strong>Mapreduce Mode</strong>: To run the scripts in mapreduce mode, you need access to a Hadoop cluster and HDFS installation. </p>
230
-
231
- </li>
232
-
233
- </ul>
234
- <p>The Pig tutorial file (tutorial/pigtutorial.tar.gz file in the pig distribution) includes the Pig JAR file (pig.jar) and the tutorial files (tutorial.jar, Pigs scripts, log files).
235
- These files work with Hadoop 0.20.2 and include everything you need to run the Pig scripts.</p>
236
- <p>To get started, follow these basic steps: </p>
237
- <ol>
238
-
239
- <li>
240
- <p>Install Java </p>
241
-
242
- </li>
243
-
244
- <li>
245
- <p>Install Pig </p>
246
-
247
- </li>
248
-
249
- <li>
250
- <p>Run the Pig scripts - in Local or Hadoop mode </p>
251
-
252
- </li>
253
-
254
- </ol>
255
- </div>
256
-
257
-
258
- <a name="N10042"></a><a name="Java+Installation"></a>
259
- <h2 class="h3"> Java Installation</h2>
260
- <div class="section">
261
- <p>Make sure your run-time environment includes the following: </p>
262
- <ul>
263
-
264
- <li>
265
- <p>Java 1.6 or higher (preferably from Sun) </p>
266
-
267
- </li>
268
-
269
- <li>
270
- <p>The JAVA_HOME environment variable is set the root of your Java installation. </p>
271
-
272
- </li>
273
-
274
- </ul>
275
- </div>
276
-
277
-
278
- <a name="N10059"></a><a name="Pig+Installation"></a>
279
- <h2 class="h3"> Pig Installation</h2>
280
- <div class="section">
281
- <p>To install Pig, do the following: </p>
282
- <ol>
283
-
284
- <li>
285
- <p>Download the Pig tutorial file to your local directory. </p>
286
-
287
- </li>
288
-
289
- <li>
290
- <p>Unzip the Pig tutorial file (the files are stored in a newly created directory, pigtmp). </p>
291
-
292
- <pre class="code">
293
- $ tar -xzf pigtutorial.tar.gz
294
- </pre>
295
-
296
- </li>
297
-
298
- <li>
299
- <p>Move to the pigtmp directory. </p>
300
-
301
- </li>
302
-
303
- <li>
304
- <p>Review the contents of the Pig tutorial file. </p>
305
-
306
- </li>
307
-
308
- <li>
309
- <p>Copy the <strong>pig.jar</strong> file to the appropriate directory on your system. For example: /home/me/pig. </p>
310
-
311
- </li>
312
-
313
- <li>
314
- <p>Create an environment variable, <strong>PIGDIR</strong>, and point it to your directory; for example, export PIGDIR=/home/me/pig (bash, sh) or setenv PIGDIR /home/me/pig (tcsh, csh). </p>
315
-
316
- </li>
317
-
318
- </ol>
319
- </div>
320
-
321
-
322
- <a name="N1008E"></a><a name="Running+the+Pig+Scripts+in+Local+Mode"></a>
323
- <h2 class="h3"> Running the Pig Scripts in Local Mode</h2>
324
- <div class="section">
325
- <p>To run the Pig scripts in local mode, do the following: </p>
326
- <ol>
327
-
328
- <li>
329
-
330
- <p>Set the maximum memory for Java.</p>
331
-
332
- <pre class="code">
333
- java -Xmx256m -cp pig.jar org.apache.pig.Main -x local script1-local.pig
334
- java -Xmx256m -cp pig.jar org.apache.pig.Main -x local script2-local.pig
335
- </pre>
336
-
337
- </li>
338
-
339
- <li>
340
- <p>Move to the pigtmp directory. </p>
341
- </li>
342
-
343
- <li>
344
- <p>Review Pig Script 1 and Pig Script 2. </p>
345
- </li>
346
-
347
- <li>
348
-
349
- <p>Execute the following command (using either script1-local.pig or script2-local.pig). </p>
350
-
351
- <pre class="code">
352
- $ java -cp $PIGDIR/pig.jar org.apache.pig.Main -x local script1-local.pig
353
- </pre>
354
-
355
- </li>
356
-
357
- <li>
358
- <p>Review the result files, located in the part-r-00000 directory.</p>
359
-
360
- <p>The output may contain a few Hadoop warnings which can be ignored:</p>
361
-
362
- <pre class="code">
363
- 2010-04-08 12:55:33,642 [main] INFO org.apache.hadoop.metrics.jvm.JvmMetrics
364
- - Cannot initialize JVM Metrics with processName=JobTracker, sessionId= - already initialized
365
- </pre>
366
-
367
- </li>
368
-
369
- </ol>
370
- </div>
371
-
372
-
373
- <a name="N100C3"></a><a name="Running+the+Pig+Scripts+in+Mapreduce+Mode"></a>
374
- <h2 class="h3"> Running the Pig Scripts in Mapreduce Mode</h2>
375
- <div class="section">
376
- <p>To run the Pig scripts in mapreduce mode, do the following: </p>
377
- <ol>
378
-
379
- <li>
380
- <p>Move to the pigtmp directory. </p>
381
-
382
- </li>
383
-
384
- <li>
385
- <p>Review Pig Script 1 and Pig Script 2. </p>
386
-
387
- </li>
388
-
389
- <li>
390
- <p>Copy the excite.log.bz2 file from the pigtmp directory to the HDFS directory. </p>
391
-
392
- <pre class="code">
393
- $ hadoop fs &ndash;copyFromLocal excite.log.bz2 .
394
- </pre>
395
-
396
- </li>
397
-
398
-
399
- <li>
400
- <p>Set the HADOOP_CONF_DIR environment variable to the location of your core-site.xml, hdfs-site.xml and mapred-site.xml files. </p>
401
-
402
- </li>
403
-
404
- <li>
405
- <p>Execute the following command (using either script1-hadoop.pig or script2-hadoop.pig): </p>
406
-
407
- <pre class="code">
408
- $ java -cp $PIGDIR/pig.jar:$HADOOP_CONF_DIR org.apache.pig.Main script1-hadoop.pig
409
- </pre>
410
-
411
- </li>
412
-
413
-
414
- <li>
415
- <p>Review the result files, located in the script1-hadoop-results or script2-hadoop-results HDFS directory: </p>
416
-
417
- <pre class="code">
418
- $ hadoop fs -ls script1-hadoop-results
419
- $ hadoop fs -cat 'script1-hadoop-results/*' | less
420
- </pre>
421
-
422
- </li>
423
-
424
- </ol>
425
- </div>
426
-
427
-
428
- <a name="N100FA"></a><a name="Pig+Tutorial+File"></a>
429
- <h2 class="h3"> Pig Tutorial File</h2>
430
- <div class="section">
431
- <p>The contents of the Pig tutorial file (pigtutorial.tar.gz) are described here. </p>
432
- <table class="ForrestTable" cellspacing="1" cellpadding="4">
433
-
434
- <tr>
435
-
436
- <td colspan="1" rowspan="1">
437
-
438
- <p>
439
- <strong>File</strong>
440
- </p>
441
-
442
- </td>
443
- <td colspan="1" rowspan="1">
444
-
445
- <p>
446
- <strong>Description</strong>
447
- </p>
448
-
449
- </td>
450
-
451
- </tr>
452
-
453
- <tr>
454
-
455
- <td colspan="1" rowspan="1">
456
-
457
- <p> pig.jar </p>
458
-
459
- </td>
460
- <td colspan="1" rowspan="1">
461
-
462
- <p> Pig JAR file </p>
463
-
464
- </td>
465
-
466
- </tr>
467
-
468
- <tr>
469
-
470
- <td colspan="1" rowspan="1">
471
-
472
- <p> tutorial.jar </p>
473
-
474
- </td>
475
- <td colspan="1" rowspan="1">
476
-
477
- <p> User-defined functions (UDFs) and Java classes </p>
478
-
479
- </td>
480
-
481
- </tr>
482
-
483
- <tr>
484
-
485
- <td colspan="1" rowspan="1">
486
-
487
- <p> script1-local.pig </p>
488
-
489
- </td>
490
- <td colspan="1" rowspan="1">
491
-
492
- <p> Pig Script 1, Query Phrase Popularity (local mode) </p>
493
-
494
- </td>
495
-
496
- </tr>
497
-
498
- <tr>
499
-
500
- <td colspan="1" rowspan="1">
501
-
502
- <p> script1-hadoop.pig </p>
503
-
504
- </td>
505
- <td colspan="1" rowspan="1">
506
-
507
- <p> Pig Script 1, Query Phrase Popularity (Hadoop cluster) </p>
508
-
509
- </td>
510
-
511
- </tr>
512
-
513
- <tr>
514
-
515
- <td colspan="1" rowspan="1">
516
-
517
- <p> script2-local.pig </p>
518
-
519
- </td>
520
- <td colspan="1" rowspan="1">
521
-
522
- <p> Pig Script 2, Temporal Query Phrase Popularity (local mode)</p>
523
-
524
- </td>
525
-
526
- </tr>
527
-
528
- <tr>
529
-
530
- <td colspan="1" rowspan="1">
531
-
532
- <p> script2-hadoop.pig </p>
533
-
534
- </td>
535
- <td colspan="1" rowspan="1">
536
-
537
- <p> Pig Script 2, Temporal Query Phrase Popularity (Hadoop cluster) </p>
538
-
539
- </td>
540
-
541
- </tr>
542
-
543
- <tr>
544
-
545
- <td colspan="1" rowspan="1">
546
-
547
- <p> excite-small.log </p>
548
-
549
- </td>
550
- <td colspan="1" rowspan="1">
551
-
552
- <p> Log file, Excite search engine (local mode) </p>
553
-
554
- </td>
555
-
556
- </tr>
557
-
558
- <tr>
559
-
560
- <td colspan="1" rowspan="1">
561
-
562
- <p> excite.log.bz2 </p>
563
-
564
- </td>
565
- <td colspan="1" rowspan="1">
566
-
567
- <p> Log file, Excite search engine (Hadoop cluster) </p>
568
-
569
- </td>
570
-
571
- </tr>
572
-
573
- </table>
574
- <p>The user-defined functions (UDFs) are described here. </p>
575
- <table class="ForrestTable" cellspacing="1" cellpadding="4">
576
-
577
- <tr>
578
-
579
- <td colspan="1" rowspan="1">
580
-
581
- <p>
582
- <strong>UDF</strong>
583
- </p>
584
-
585
- </td>
586
- <td colspan="1" rowspan="1">
587
-
588
- <p>
589
- <strong>Description</strong>
590
- </p>
591
-
592
- </td>
593
-
594
- </tr>
595
-
596
- <tr>
597
-
598
- <td colspan="1" rowspan="1">
599
-
600
- <p> ExtractHour </p>
601
-
602
- </td>
603
- <td colspan="1" rowspan="1">
604
-
605
- <p> Extracts the hour from the record.</p>
606
-
607
- </td>
608
-
609
- </tr>
610
-
611
- <tr>
612
-
613
- <td colspan="1" rowspan="1">
614
-
615
- <p> NGramGenerator </p>
616
-
617
- </td>
618
- <td colspan="1" rowspan="1">
619
-
620
- <p> Composes n-grams from the set of words. </p>
621
-
622
- </td>
623
-
624
- </tr>
625
-
626
- <tr>
627
-
628
- <td colspan="1" rowspan="1">
629
-
630
- <p> NonURLDetector </p>
631
-
632
- </td>
633
- <td colspan="1" rowspan="1">
634
-
635
- <p> Removes the record if the query field is empty or a URL. </p>
636
-
637
- </td>
638
-
639
- </tr>
640
-
641
- <tr>
642
-
643
- <td colspan="1" rowspan="1">
644
-
645
- <p> ScoreGenerator </p>
646
-
647
- </td>
648
- <td colspan="1" rowspan="1">
649
-
650
- <p> Calculates a "popularity" score for the n-gram.</p>
651
-
652
- </td>
653
-
654
- </tr>
655
-
656
- <tr>
657
-
658
- <td colspan="1" rowspan="1">
659
-
660
- <p> ToLower </p>
661
-
662
- </td>
663
- <td colspan="1" rowspan="1">
664
-
665
- <p> Changes the query field to lowercase. </p>
666
-
667
- </td>
668
-
669
- </tr>
670
-
671
- <tr>
672
-
673
- <td colspan="1" rowspan="1">
674
-
675
- <p> TutorialUtil </p>
676
-
677
- </td>
678
- <td colspan="1" rowspan="1">
679
-
680
- <p> Divides the query string into a set of words.</p>
681
-
682
- </td>
683
-
684
- </tr>
685
-
686
- </table>
687
- </div>
688
-
689
-
690
- <a name="N10247"></a><a name="Pig+Script+1%3A+Query+Phrase+Popularity"></a>
691
- <h2 class="h3"> Pig Script 1: Query Phrase Popularity</h2>
692
- <div class="section">
693
- <p>The Query Phrase Popularity script (script1-local.pig or script1-hadoop.pig) processes a search query log file from the Excite search engine and finds search phrases that occur with particular high frequency during certain times of the day. </p>
694
- <p>The script is shown here: </p>
695
- <ul>
696
-
697
- <li>
698
- <p> Register the tutorial JAR file so that the included UDFs can be called in the script. </p>
699
-
700
- </li>
701
-
702
- </ul>
703
- <pre class="code">
704
- REGISTER ./tutorial.jar;
705
- </pre>
706
- <ul>
707
-
708
- <li>
709
- <p> Use the PigStorage function to load the excite log file (excite.log or excite-small.log) into the &ldquo;raw&rdquo; bag as an array of records with the fields <strong>user</strong>, <strong>time</strong>, and <strong>query</strong>. </p>
710
-
711
- </li>
712
-
713
- </ul>
714
- <pre class="code">
715
- raw = LOAD 'excite.log' USING PigStorage('\t') AS (user, time, query);
716
- </pre>
717
- <ul>
718
-
719
- <li>
720
- <p> Call the NonURLDetector UDF to remove records if the query field is empty or a URL. </p>
721
-
722
- </li>
723
-
724
- </ul>
725
- <pre class="code">
726
- clean1 = FILTER raw BY org.apache.pig.tutorial.NonURLDetector(query);
727
- </pre>
728
- <ul>
729
-
730
- <li>
731
- <p> Call the ToLower UDF to change the query field to lowercase. </p>
732
-
733
- </li>
734
-
735
- </ul>
736
- <pre class="code">
737
- clean2 = FOREACH clean1 GENERATE user, time, org.apache.pig.tutorial.ToLower(query) as query;
738
- </pre>
739
- <ul>
740
-
741
- <li>
742
- <p> Because the log file only contains queries for a single day, we are only interested in the hour. The excite query log timestamp format is YYMMDDHHMMSS. Call the ExtractHour UDF to extract the hour (HH) from the time field. </p>
743
-
744
- </li>
745
-
746
- </ul>
747
- <pre class="code">
748
- houred = FOREACH clean2 GENERATE user, org.apache.pig.tutorial.ExtractHour(time) as hour, query;
749
- </pre>
750
- <ul>
751
-
752
- <li>
753
- <p> Call the NGramGenerator UDF to compose the n-grams of the query. </p>
754
-
755
- </li>
756
-
757
- </ul>
758
- <pre class="code">
759
- ngramed1 = FOREACH houred GENERATE user, hour, flatten(org.apache.pig.tutorial.NGramGenerator(query)) as ngram;
760
- </pre>
761
- <ul>
762
-
763
- <li>
764
- <p> Use the DISTINCT operator to get the unique n-grams for all records. </p>
765
-
766
- </li>
767
-
768
- </ul>
769
- <pre class="code">
770
- ngramed2 = DISTINCT ngramed1;
771
- </pre>
772
- <ul>
773
-
774
- <li>
775
- <p> Use the GROUP operator to group records by n-gram and hour. </p>
776
-
777
- </li>
778
-
779
- </ul>
780
- <pre class="code">
781
- hour_frequency1 = GROUP ngramed2 BY (ngram, hour);
782
- </pre>
783
- <ul>
784
-
785
- <li>
786
- <p> Use the COUNTfunction to get the count (occurrences) of each n-gram. </p>
787
-
788
- </li>
789
-
790
- </ul>
791
- <pre class="code">
792
- hour_frequency2 = FOREACH hour_frequency1 GENERATE flatten($0), COUNT($1) as count;
793
- </pre>
794
- <ul>
795
-
796
- <li>
797
- <p> Use the GROUP operator to group records by n-gram only. Each group now corresponds to a distinct n-gram and has the count for each hour. </p>
798
-
799
- </li>
800
-
801
- </ul>
802
- <pre class="code">
803
- uniq_frequency1 = GROUP hour_frequency2 BY group::ngram;
804
- </pre>
805
- <ul>
806
-
807
- <li>
808
- <p> For each group, identify the hour in which this n-gram is used with a particularly high frequency. Call the ScoreGenerator UDF to calculate a "popularity" score for the n-gram. </p>
809
-
810
- </li>
811
-
812
- </ul>
813
- <pre class="code">
814
- uniq_frequency2 = FOREACH uniq_frequency1 GENERATE flatten($0), flatten(org.apache.pig.tutorial.ScoreGenerator($1));
815
- </pre>
816
- <ul>
817
-
818
- <li>
819
- <p> Use the FOREACH-GENERATE operator to assign names to the fields. </p>
820
-
821
- </li>
822
-
823
- </ul>
824
- <pre class="code">
825
- uniq_frequency3 = FOREACH uniq_frequency2 GENERATE $1 as hour, $0 as ngram, $2 as score, $3 as count, $4 as mean;
826
- </pre>
827
- <ul>
828
-
829
- <li>
830
- <p> Use the FILTER operator to move all records with a score less than or equal to 2.0. </p>
831
-
832
- </li>
833
-
834
- </ul>
835
- <pre class="code">
836
- filtered_uniq_frequency = FILTER uniq_frequency3 BY score &gt; 2.0;
837
- </pre>
838
- <ul>
839
-
840
- <li>
841
- <p> Use the ORDER operator to sort the remaining records by hour and score. </p>
842
-
843
- </li>
844
-
845
- </ul>
846
- <pre class="code">
847
- ordered_uniq_frequency = ORDER filtered_uniq_frequency BY (hour, score);
848
- </pre>
849
- <ul>
850
-
851
- <li>
852
- <p> Use the PigStorage function to store the results. The output file contains a list of n-grams with the following fields: <strong>hour</strong>, <strong>ngram</strong>, <strong>score</strong>, <strong>count</strong>, <strong>mean</strong>. </p>
853
-
854
- </li>
855
-
856
- </ul>
857
- <pre class="code">
858
- STORE ordered_uniq_frequency INTO '/tmp/tutorial-results' USING PigStorage();
859
- </pre>
860
- </div>
861
-
862
-
863
- <a name="N10320"></a><a name="Pig+Script+2%3A+Temporal+Query+Phrase+Popularity"></a>
864
- <h2 class="h3">Pig Script 2: Temporal Query Phrase Popularity</h2>
865
- <div class="section">
866
- <p>The Temporal Query Phrase Popularity script (script2-local.pig or script2-hadoop.pig) processes a search query log file from the Excite search engine and compares the occurrence of frequency of search phrases across two time periods separated by twelve hours. </p>
867
- <p>The script is shown here: </p>
868
- <ul>
869
-
870
- <li>
871
- <p> Register the tutorial JAR file so that the user-defined functions (UDFs) can be called in the script. </p>
872
-
873
- </li>
874
-
875
- </ul>
876
- <pre class="code">
877
- REGISTER ./tutorial.jar;
878
- </pre>
879
- <ul>
880
-
881
- <li>
882
- <p> Use the PigStorage function to load the excite log file (excite.log or excite-small.log) into the &ldquo;raw&rdquo; bag as an array of records with the fields <strong>user</strong>, <strong>time</strong>, and <strong>query</strong>. </p>
883
-
884
- </li>
885
-
886
- </ul>
887
- <pre class="code">
888
- raw = LOAD 'excite.log' USING PigStorage('\t') AS (user, time, query);
889
- </pre>
890
- <ul>
891
-
892
- <li>
893
- <p> Call the NonURLDetector UDF to remove records if the query field is empty or a URL. </p>
894
-
895
- </li>
896
-
897
- </ul>
898
- <pre class="code">
899
- clean1 = FILTER raw BY org.apache.pig.tutorial.NonURLDetector(query);
900
- </pre>
901
- <ul>
902
-
903
- <li>
904
- <p> Call the ToLower UDF to change the query field to lowercase. </p>
905
-
906
- </li>
907
-
908
- </ul>
909
- <pre class="code">
910
- clean2 = FOREACH clean1 GENERATE user, time, org.apache.pig.tutorial.ToLower(query) as query;
911
- </pre>
912
- <ul>
913
-
914
- <li>
915
- <p> Because the log file only contains queries for a single day, we are only interested in the hour. The excite query log timestamp format is YYMMDDHHMMSS. Call the ExtractHour UDF to extract the hour from the time field. </p>
916
-
917
- </li>
918
-
919
- </ul>
920
- <pre class="code">
921
- houred = FOREACH clean2 GENERATE user, org.apache.pig.tutorial.ExtractHour(time) as hour, query;
922
- </pre>
923
- <ul>
924
-
925
- <li>
926
- <p> Call the NGramGenerator UDF to compose the n-grams of the query. </p>
927
-
928
- </li>
929
-
930
- </ul>
931
- <pre class="code">
932
- ngramed1 = FOREACH houred GENERATE user, hour, flatten(org.apache.pig.tutorial.NGramGenerator(query)) as ngram;
933
- </pre>
934
- <ul>
935
-
936
- <li>
937
- <p> Use the DISTINCT operator to get the unique n-grams for all records. </p>
938
-
939
- </li>
940
-
941
- </ul>
942
- <pre class="code">
943
- ngramed2 = DISTINCT ngramed1;
944
- </pre>
945
- <ul>
946
-
947
- <li>
948
- <p> Use the GROUP operator to group the records by n-gram and hour. </p>
949
-
950
- </li>
951
-
952
- </ul>
953
- <pre class="code">
954
- hour_frequency1 = GROUP ngramed2 BY (ngram, hour);
955
- </pre>
956
- <ul>
957
-
958
- <li>
959
- <p> Use the COUNT function to get the count (occurrences) of each n-gram. </p>
960
-
961
- </li>
962
-
963
- </ul>
964
- <pre class="code">
965
- hour_frequency2 = FOREACH hour_frequency1 GENERATE flatten($0), COUNT($1) as count;
966
- </pre>
967
- <ul>
968
-
969
- <li>
970
- <p> Use the FOREACH-GENERATE operator to assign names to the fields. </p>
971
-
972
- </li>
973
-
974
- </ul>
975
- <pre class="code">
976
- hour_frequency3 = FOREACH hour_frequency2 GENERATE $0 as ngram, $1 as hour, $2 as count;
977
- </pre>
978
- <ul>
979
-
980
- <li>
981
- <p> Use the FILTERoperator to get the n-grams for hour &lsquo;00&rsquo; </p>
982
-
983
- </li>
984
-
985
- </ul>
986
- <pre class="code">
987
- hour00 = FILTER hour_frequency2 BY hour eq '00';
988
- </pre>
989
- <ul>
990
-
991
- <li>
992
- <p> Uses the FILTER operators to get the n-grams for hour &lsquo;12&rsquo; </p>
993
-
994
- </li>
995
-
996
- </ul>
997
- <pre class="code">
998
- hour12 = FILTER hour_frequency3 BY hour eq '12';
999
- </pre>
1000
- <ul>
1001
-
1002
- <li>
1003
- <p> Use the JOIN operator to get the n-grams that appear in both hours. </p>
1004
-
1005
- </li>
1006
-
1007
- </ul>
1008
- <pre class="code">
1009
- same = JOIN hour00 BY $0, hour12 BY $0;
1010
- </pre>
1011
- <ul>
1012
-
1013
- <li>
1014
- <p> Use the FOREACH-GENERATE operator to record their frequency. </p>
1015
-
1016
- </li>
1017
-
1018
- </ul>
1019
- <pre class="code">
1020
- same1 = FOREACH same GENERATE hour_frequency2::hour00::group::ngram as ngram, $2 as count00, $5 as count12;
1021
- </pre>
1022
- <ul>
1023
-
1024
- <li>
1025
- <p> Use the PigStorage function to store the results. The output file contains a list of n-grams with the following fields: <strong>hour</strong>, <strong>count00</strong>, <strong>count12</strong>. </p>
1026
-
1027
- </li>
1028
-
1029
- </ul>
1030
- <pre class="code">
1031
- STORE same1 INTO '/tmp/tutorial-join-results' USING PigStorage();
1032
- </pre>
1033
- </div>
1034
-
1035
- </div>
1036
- <!--+
1037
- |end content
1038
- +-->
1039
- <div class="clearboth">&nbsp;</div>
1040
- </div>
1041
- <div id="footer">
1042
- <!--+
1043
- |start bottomstrip
1044
- +-->
1045
- <div class="lastmodified">
1046
- <script type="text/javascript"><!--
1047
- document.write("Last Published: " + document.lastModified);
1048
- // --></script>
1049
- </div>
1050
- <div class="copyright">
1051
- Copyright &copy;
1052
- 2007-2010 <a href="http://www.apache.org/licenses/">The Apache Software Foundation.</a>
1053
- </div>
1054
- <!--+
1055
- |end bottomstrip
1056
- +-->
1057
- </div>
1058
- </body>
1059
- </html>