Thrill  0.1
random_text_writer.hpp
Go to the documentation of this file.
1 /*******************************************************************************
2  * examples/word_count/random_text_writer.hpp
3  *
4  * A C++ clone of org.apache.hadoop.examples.RandomTextWriter. The clone outputs
5  * only text lines containing words. It uses the same words, but a different
6  * underlying random generator.
7  *
8  * Part of Project Thrill - http://project-thrill.org
9  *
10  * Copyright (C) 2016 Timo Bingmann <[email protected]>
11  *
12  * All rights reserved. Published under the BSD-2 license in the LICENSE file.
13  ******************************************************************************/
14 
15 #pragma once
16 #ifndef THRILL_EXAMPLES_WORD_COUNT_RANDOM_TEXT_WRITER_HEADER
17 #define THRILL_EXAMPLES_WORD_COUNT_RANDOM_TEXT_WRITER_HEADER
18 
19 #include <string>
20 #include <vector>
21 
22 namespace examples {
23 namespace word_count {
24 
25 // list of words borrowed from
26 // hadoop-2.6.3-src/hadoop-mapreduce-project/hadoop-mapreduce-examples/
27 // src/main/java/org/apache/hadoop/examples/RandomTextWriter.java
28 static const char* s_random_text_writer_words[] = {
29  "diurnalness", "Homoiousian", "spiranthic", "tetragynian", "silverhead",
30  "ungreat", "lithograph", "exploiter", "physiologian", "by", "hellbender",
31  "Filipendula", "undeterring", "antiscolic", "pentagamist", "hypoid",
32  "cacuminal", "sertularian", "schoolmasterism", "nonuple", "gallybeggar",
33  "phytonic", "swearingly", "nebular", "Confervales", "thermochemically",
34  "characinoid", "cocksuredom", "fallacious", "feasibleness", "debromination",
35  "playfellowship", "tramplike", "testa", "participatingly", "unaccessible",
36  "bromate", "experientialist", "roughcast", "docimastical", "choralcelo",
37  "blightbird", "peptonate", "sombreroed", "unschematized",
38  "antiabolitionist", "besagne", "mastication", "bromic", "sviatonosite",
39  "cattimandoo", "metaphrastical", "endotheliomyoma", "hysterolysis",
40  "unfulminated", "Hester", "oblongly", "blurredness", "authorling", "chasmy",
41  "Scorpaenidae", "toxihaemia", "Dictograph", "Quakerishly", "deaf",
42  "timbermonger", "strammel", "Thraupidae", "seditious", "plerome", "Arneb",
43  "eristically", "serpentinic", "glaumrie", "socioromantic", "apocalypst",
44  "tartrous", "Bassaris", "angiolymphoma", "horsefly", "kenno", "astronomize",
45  "euphemious", "arsenide", "untongued", "parabolicness", "uvanite",
46  "helpless", "gemmeous", "stormy", "templar", "erythrodextrin", "comism",
47  "interfraternal", "preparative", "parastas", "frontoorbital", "Ophiosaurus",
48  "diopside", "serosanguineous", "ununiformly", "karyological", "collegian",
49  "allotropic", "depravity", "amylogenesis", "reformatory", "epidymides",
50  "pleurotropous", "trillium", "dastardliness", "coadvice", "embryotic",
51  "benthonic", "pomiferous", "figureheadship", "Megaluridae", "Harpa",
52  "frenal", "commotion", "abthainry", "cobeliever", "manilla", "spiciferous",
53  "nativeness", "obispo", "monilioid", "biopsic", "valvula", "enterostomy",
54  "planosubulate", "pterostigma", "lifter", "triradiated", "venialness",
55  "tum", "archistome", "tautness", "unswanlike", "antivenin",
56  "Lentibulariaceae", "Triphora", "angiopathy", "anta", "Dawsonia", "becomma",
57  "Yannigan", "winterproof", "antalgol", "harr", "underogating", "ineunt",
58  "cornberry", "flippantness", "scyphostoma", "approbation", "Ghent",
59  "Macraucheniidae", "scabbiness", "unanatomized", "photoelasticity",
60  "eurythermal", "enation", "prepavement", "flushgate", "subsequentially",
61  "Edo", "antihero", "Isokontae", "unforkedness", "porriginous", "daytime",
62  "nonexecutive", "trisilicic", "morphiomania", "paranephros", "botchedly",
63  "impugnation", "Dodecatheon", "obolus", "unburnt", "provedore",
64  "Aktistetae", "superindifference", "Alethea", "Joachimite", "cyanophilous",
65  "chorograph", "brooky", "figured", "periclitation", "quintette", "hondo",
66  "ornithodelphous", "unefficient", "pondside", "bogydom", "laurinoxylon",
67  "Shiah", "unharmed", "cartful", "noncrystallized", "abusiveness",
68  "cromlech", "japanned", "rizzomed", "underskin", "adscendent", "allectory",
69  "gelatinousness", "volcano", "uncompromisingly", "cubit", "idiotize",
70  "unfurbelowed", "undinted", "magnetooptics", "Savitar", "diwata",
71  "ramosopalmate", "Pishquow", "tomorn", "apopenptic", "Haversian",
72  "Hysterocarpus", "ten", "outhue", "Bertat", "mechanist", "asparaginic",
73  "velaric", "tonsure", "bubble", "Pyrales", "regardful", "glyphography",
74  "calabazilla", "shellworker", "stradametrical", "havoc",
75  "theologicopolitical", "sawdust", "diatomaceous", "jajman",
76  "temporomastoid", "Serrifera", "Ochnaceae", "aspersor", "trailmaking",
77  "Bishareen", "digitule", "octogynous", "epididymitis", "smokefarthings",
78  "bacillite", "overcrown", "mangonism", "sirrah", "undecorated",
79  "psychofugal", "bismuthiferous", "rechar", "Lemuridae", "frameable",
80  "thiodiazole", "Scanic", "sportswomanship", "interruptedness", "admissory",
81  "osteopaedion", "tingly", "tomorrowness", "ethnocracy", "trabecular",
82  "vitally", "fossilism", "adz", "metopon", "prefatorial", "expiscate",
83  "diathermacy", "chronist", "nigh", "generalizable", "hysterogen",
84  "aurothiosulphuric", "whitlowwort", "downthrust", "Protestantize",
85  "monander", "Itea", "chronographic", "silicize", "Dunlop", "eer",
86  "componental", "spot", "pamphlet", "antineuritic", "paradisean",
87  "interruptor", "debellator", "overcultured", "Florissant", "hyocholic",
88  "pneumatotherapy", "tailoress", "rave", "unpeople", "Sebastian",
89  "thermanesthesia", "Coniferae", "swacking", "posterishness", "ethmopalatal",
90  "whittle", "analgize", "scabbardless", "naught", "symbiogenetically",
91  "trip", "parodist", "columniform", "trunnel", "yawler", "goodwill",
92  "pseudohalogen", "swangy", "cervisial", "mediateness", "genii",
93  "imprescribable", "pony", "consumptional", "carposporangial", "poleax",
94  "bestill", "subfebrile", "sapphiric", "arrowworm", "qualminess",
95  "ultraobscure", "thorite", "Fouquieria", "Bermudian", "prescriber",
96  "elemicin", "warlike", "semiangle", "rotular", "misthread", "returnability",
97  "seraphism", "precostal", "quarried", "Babylonism", "sangaree", "seelful",
98  "placatory", "pachydermous", "bozal", "galbulus", "spermaphyte",
99  "cumbrousness", "pope", "signifier", "Endomycetaceae", "shallowish",
100  "sequacity", "periarthritis", "bathysphere", "pentosuria", "Dadaism",
101  "spookdom", "Consolamentum", "afterpressure", "mutter", "louse",
102  "ovoviviparous", "corbel", "metastoma", "biventer", "Hydrangea", "hogmace",
103  "seizing", "nonsuppressed", "oratorize", "uncarefully", "benzothiofuran",
104  "penult", "balanocele", "macropterous", "dishpan", "marten", "absvolt",
105  "jirble", "parmelioid", "airfreighter", "acocotl", "archesporial",
106  "hypoplastral", "preoral", "quailberry", "cinque", "terrestrially",
107  "stroking", "limpet", "moodishness", "canicule", "archididascalian",
108  "pompiloid", "overstaid", "introducer", "Italical", "Christianopaganism",
109  "prescriptible", "subofficer", "danseuse", "cloy", "saguran",
110  "frictionlessly", "deindividualization", "Bulanda", "ventricous",
111  "subfoliar", "basto", "scapuloradial", "suspend", "stiffish",
112  "Sphenodontidae", "eternal", "verbid", "mammonish", "upcushion",
113  "barkometer", "concretion", "preagitate", "incomprehensible", "tristich",
114  "visceral", "hemimelus", "patroller", "stentorophonic", "pinulus",
115  "kerykeion", "brutism", "monstership", "merciful", "overinstruct",
116  "defensibly", "bettermost", "splenauxe", "Mormyrus", "unreprimanded",
117  "taver", "ell", "proacquittal", "infestation", "overwoven", "Lincolnlike",
118  "chacona", "Tamil", "classificational", "lebensraum", "reeveland",
119  "intuition", "Whilkut", "focaloid", "Eleusinian", "micromembrane", "byroad",
120  "nonrepetition", "bacterioblast", "brag", "ribaldrous", "phytoma",
121  "counteralliance", "pelvimetry", "pelf", "relaster", "thermoresistant",
122  "aneurism", "molossic", "euphonym", "upswell", "ladhood", "phallaceous",
123  "inertly", "gunshop", "stereotypography", "laryngic", "refasten",
124  "twinling", "oflete", "hepatorrhaphy", "electrotechnics", "cockal",
125  "guitarist", "topsail", "Cimmerianism", "larklike", "Llandovery",
126  "pyrocatechol", "immatchable", "chooser", "metrocratic", "craglike",
127  "quadrennial", "nonpoisonous", "undercolored", "knob", "ultratense",
128  "balladmonger", "slait", "sialadenitis", "bucketer", "magnificently",
129  "unstipulated", "unscourged", "unsupercilious", "packsack", "pansophism",
130  "soorkee", "percent", "subirrigate", "champer", "metapolitics",
131  "spherulitic", "involatile", "metaphonical", "stachyuraceous",
132  "speckedness", "bespin", "proboscidiform", "gul", "squit", "yeelaman",
133  "peristeropode", "opacousness", "shibuichi", "retinize", "yote",
134  "misexposition", "devilwise", "pumpkinification", "vinny", "bonze",
135  "glossing", "decardinalize", "transcortical", "serphoid", "deepmost",
136  "guanajuatite", "wemless", "arval", "lammy", "Effie", "Saponaria",
137  "tetrahedral", "prolificy", "excerpt", "dunkadoo", "Spencerism",
138  "insatiately", "Gilaki", "oratorship", "arduousness", "unbashfulness",
139  "Pithecolobium", "unisexuality", "veterinarian", "detractive", "liquidity",
140  "acidophile", "proauction", "sural", "totaquina", "Vichyite",
141  "uninhabitedness", "allegedly", "Gothish", "manny", "Inger", "flutist",
142  "ticktick", "Ludgatian", "homotransplant", "orthopedical", "diminutively",
143  "monogoneutic", "Kenipsim", "sarcologist", "drome", "stronghearted",
144  "Fameuse", "Swaziland", "alen", "chilblain", "beatable", "agglomeratic",
145  "constitutor", "tendomucoid", "porencephalous", "arteriasis", "boser",
146  "tantivy", "rede", "lineamental", "uncontradictableness", "homeotypical",
147  "masa", "folious", "dosseret", "neurodegenerative", "subtransverse",
148  "Chiasmodontidae", "palaeotheriodont", "unstressedly", "chalcites",
149  "piquantness", "lampyrine", "Aplacentalia", "projecting", "elastivity",
150  "isopelletierin", "bladderwort", "strander", "almud", "iniquitously",
151  "theologal", "bugre", "chargeably", "imperceptivity", "meriquinoidal",
152  "mesophyte", "divinator", "perfunctory", "counterappellant", "synovial",
153  "charioteer", "crystallographical", "comprovincial", "infrastapedial",
154  "pleasurehood", "inventurous", "ultrasystematic", "subangulated",
155  "supraoesophageal", "Vaishnavism", "transude", "chrysochrous", "ungrave",
156  "reconciliable", "uninterpleaded", "erlking", "wherefrom", "aprosopia",
157  "antiadiaphorist", "metoxazine", "incalculable", "umbellic", "predebit",
158  "foursquare", "unimmortal", "nonmanufacture", "slangy", "predisputant",
159  "familist", "preaffiliate", "friarhood", "corelysis", "zoonitic", "halloo",
160  "paunchy", "neuromimesis", "aconitine", "hackneyed", "unfeeble", "cubby",
161  "autoschediastical", "naprapath", "lyrebird", "inexistency",
162  "leucophoenicite", "ferrogoslarite", "reperuse", "uncombable", "tambo",
163  "propodiale", "diplomatize", "Russifier", "clanned", "corona", "michigan",
164  "nonutilitarian", "transcorporeal", "bought", "Cercosporella", "stapedius",
165  "glandularly", "pictorially", "weism", "disilane", "rainproof", "Caphtor",
166  "scrubbed", "oinomancy", "pseudoxanthine", "nonlustrous", "redesertion",
167  "Oryzorictinae", "gala", "Mycogone", "reappreciate", "cyanoguanidine",
168  "seeingness", "breadwinner", "noreast", "furacious", "epauliere",
169  "omniscribent", "Passiflorales", "uninductive", "inductivity", "Orbitolina",
170  "Semecarpus", "migrainoid", "steprelationship", "phlogisticate",
171  "mesymnion", "sloped", "edificator", "beneficent", "culm",
172  "paleornithology", "unurban", "throbless", "amplexifoliate",
173  "sesquiquintile", "sapience", "astucious", "dithery", "boor", "ambitus",
174  "scotching", "uloid", "uncompromisingness", "hoove", "waird", "marshiness",
175  "Jerusalem", "mericarp", "unevoked", "benzoperoxide", "outguess", "pyxie",
176  "hymnic", "euphemize", "mendacity", "erythremia", "rosaniline",
177  "unchatteled", "lienteria", "Bushongo", "dialoguer", "unrepealably",
178  "rivethead", "antideflation", "vinegarish", "manganosiderite",
179  "doubtingness", "ovopyriform", "Cephalodiscus", "Muscicapa", "Animalivora",
180  "angina", "planispheric", "ipomoein", "cuproiodargyrite", "sandbox",
181  "scrat", "Munnopsidae", "shola", "pentafid", "overstudiousness", "times",
182  "nonprofession", "appetible", "valvulotomy", "goladar", "uniarticular",
183  "oxyterpene", "unlapsing", "omega", "trophonema", "seminonflammable",
184  "circumzenithal", "starer", "depthwise", "liberatress", "unleavened",
185  "unrevolting", "groundneedle", "topline", "wandoo", "umangite", "ordinant",
186  "unachievable", "oversand", "snare", "avengeful", "unexplicit", "mustafina",
187  "sonable", "rehabilitative", "eulogization", "papery", "technopsychology",
188  "impressor", "cresylite", "entame", "transudatory", "scotale",
189  "pachydermatoid", "imaginary", "yeat", "slipped", "stewardship", "adatom",
190  "cockstone", "skyshine", "heavenful", "comparability", "exprobratory",
191  "dermorhynchous", "parquet", "cretaceous", "vesperal", "raphis",
192  "undangered", "Glecoma", "engrain", "counteractively", "Zuludom",
193  "orchiocatabasis", "Auriculariales", "warriorwise", "extraorganismal",
194  "overbuilt", "alveolite", "tetchy", "terrificness", "widdle",
195  "unpremonished", "rebilling", "sequestrum", "equiconvex", "heliocentricism",
196  "catabaptist", "okonite", "propheticism", "helminthagogic", "calycular",
197  "giantly", "wingable", "golem", "unprovided", "commandingness", "greave",
198  "haply", "doina", "depressingly", "subdentate", "impairment", "decidable",
199  "neurotrophic", "unpredict", "bicorporeal", "pendulant", "flatman",
200  "intrabred", "toplike", "Prosobranchiata", "farrantly", "toxoplasmosis",
201  "gorilloid", "dipsomaniacal", "aquiline", "atlantite", "ascitic",
202  "perculsive", "prospectiveness", "saponaceous", "centrifugalization",
203  "dinical", "infravaginal", "beadroll", "affaite", "Helvidian",
204  "tickleproof", "abstractionism", "enhedge", "outwealth", "overcontribute",
205  "coldfinch", "gymnastic", "Pincian", "Munychian", "codisjunct", "quad",
206  "coracomandibular", "phoenicochroite", "amender", "selectivity", "putative",
207  "semantician", "lophotrichic", "Spatangoidea", "saccharogenic", "inferent",
208  "Triconodonta", "arrendation", "sheepskin", "taurocolla", "bunghole",
209  "Machiavel", "triakistetrahedral", "dehairer", "prezygapophysial",
210  "cylindric", "pneumonalgia", "sleigher", "emir", "Socraticism", "licitness",
211  "massedly", "instructiveness", "sturdied", "redecrease", "starosta",
212  "evictor", "orgiastic", "squdge", "meloplasty", "Tsonecan",
213  "repealableness", "swoony", "myesthesia", "molecule", "autobiographist",
214  "reciprocation", "refective", "unobservantness", "tricae", "ungouged",
215  "floatability", "Mesua", "fetlocked", "chordacentrum", "sedentariness",
216  "various", "laubanite", "nectopod", "zenick", "sequentially", "analgic",
217  "biodynamics", "posttraumatic", "nummi", "pyroacetic", "bot", "redescend",
218  "dispermy", "undiffusive", "circular", "trillion", "Uraniidae", "ploration",
219  "discipular", "potentness", "sud", "Hu", "Eryon", "plugger", "subdrainage",
220  "jharal", "abscission", "supermarket", "countergabion", "glacierist",
221  "lithotresis", "minniebush", "zanyism", "eucalypteol", "sterilely",
222  "unrealize", "unpatched", "hypochondriacism", "critically", "cheesecutter"
223 };
224 
225 static constexpr size_t s_num_random_text_writer_words =
226  sizeof(s_random_text_writer_words) / sizeof(s_random_text_writer_words[0]);
227 
228 template <typename RandomGenerator>
229 std::string RandomTextWriterGenerate(size_t num_words, RandomGenerator& rng) {
230  // use words from Java
231  const char** words = s_random_text_writer_words;
232  std::string sentence;
233  for (size_t i = 0; i < num_words; ++i) {
234  sentence += words[rng() % s_num_random_text_writer_words];
235  // add space even at end, Java does this too.
236  sentence += ' ';
237  }
238  return sentence;
239 }
240 
241 } // namespace word_count
242 } // namespace examples
243 
244 #endif // !THRILL_EXAMPLES_WORD_COUNT_RANDOM_TEXT_WRITER_HEADER
245 
246 /******************************************************************************/
Definition: bfs.hpp:21
std::string RandomTextWriterGenerate(size_t num_words, RandomGenerator &rng)
static constexpr size_t s_num_random_text_writer_words
std::basic_string< char, std::char_traits< char >, Allocator< char > > string
string with Manager tracking
Definition: allocator.hpp:220
static const char * s_random_text_writer_words[]