wukong 3.0.0.pre → 3.0.0.pre2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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>