Added: avro/site/publish/docs/1.8.2/mr.html URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/mr.html?rev=1797063&view=auto ============================================================================== --- avro/site/publish/docs/1.8.2/mr.html (added) +++ avro/site/publish/docs/1.8.2/mr.html Wed May 31 15:48:43 2017 @@ -0,0 +1,795 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<meta content="Apache Forrest" name="Generator"> +<meta name="Forrest-version" content="0.9"> +<meta name="Forrest-skin-name" content="pelt"> +<title>Apache Avro™ 1.8.2 + Hadoop MapReduce guide</title> +<link type="text/css" href="skin/basic.css" rel="stylesheet"> +<link media="screen" type="text/css" href="skin/screen.css" rel="stylesheet"> +<link media="print" type="text/css" href="skin/print.css" rel="stylesheet"> +<link type="text/css" href="skin/profile.css" rel="stylesheet"> +<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> +<link rel="shortcut icon" href="images/favicon.ico"> +</head> +<body onload="init()"> +<script type="text/javascript">ndeSetTextSize();</script> +<div id="top"> +<!--+ + |breadtrail + +--> +<div class="breadtrail"> +<a href="http://www.apache.org/">Apache</a> > <a href="http://avro.apache.org/">Avro</a> > <a href="http://avro.apache.org/">Avro</a><script src="skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script> +</div> +<!--+ + |header + +--> +<div class="header"> +<!--+ + |start group logo + +--> +<div class="grouplogo"> +<a href="http://www.apache.org/"><img class="logoImage" alt="Apache" src="images/apache_feather.gif" title="The Apache Software Foundation"></a> +</div> +<!--+ + |end group logo + +--> +<!--+ + |start Project Logo + +--> +<div class="projectlogo"> +<a href="http://avro.apache.org/"><img class="logoImage" alt="Avro" src="images/avro-logo.png" title="Serialization System"></a> +</div> +<!--+ + |end Project Logo + +--> +<!--+ + |start Search + +--> +<div class="searchbox"> +<form action="http://www.google.com/search" method="get" class="roundtopsmall"> +<input value="avro.apache.org" 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"> + <input name="Search" value="Search" type="submit"> +</form> +</div> +<!--+ + |end search + +--> +<!--+ + |start Tabs + +--> +<ul id="tabs"> +<li> +<a class="unselected" href="http://avro.apache.org/">Project</a> +</li> +<li> +<a class="unselected" href="http://wiki.apache.org/hadoop/Avro/">Wiki</a> +</li> +<li class="current"> +<a class="selected" href="index.html">Avro 1.8.2 Documentation</a> +</li> +</ul> +<!--+ + |end Tabs + +--> +</div> +</div> +<div id="main"> +<div id="publishedStrip"> +<!--+ + |start Subtabs + +--> +<div id="level2tabs"></div> +<!--+ + |end Endtabs + +--> +<script type="text/javascript"><!-- +document.write("Last Published: " + document.lastModified); +// --></script> +</div> +<!--+ + |breadtrail + +--> +<div class="breadtrail"> + + + </div> +<!--+ + |start Menu, mainarea + +--> +<!--+ + |start Menu + +--> +<div id="menu"> +<div onclick="SwitchMenu('menu_selected_1.1', 'skin/')" id="menu_selected_1.1Title" class="menutitle" style="background-image: url('skin/images/chapter_open.gif');">Documentation</div> +<div id="menu_selected_1.1" class="selectedmenuitemgroup" style="display: block;"> +<div class="menuitem"> +<a href="index.html">Overview</a> +</div> +<div class="menuitem"> +<a href="gettingstartedjava.html">Getting started (Java)</a> +</div> +<div class="menuitem"> +<a href="gettingstartedpython.html">Getting started (Python)</a> +</div> +<div class="menuitem"> +<a href="spec.html">Specification</a> +</div> +<div class="menuitem"> +<a href="trevni/spec.html">Trevni</a> +</div> +<div class="menuitem"> +<a href="api/java/index.html">Java API</a> +</div> +<div class="menuitem"> +<a href="api/c/index.html">C API</a> +</div> +<div class="menuitem"> +<a href="api/cpp/html/index.html">C++ API</a> +</div> +<div class="menuitem"> +<a href="api/csharp/index.html">C# API</a> +</div> +<div class="menupage"> +<div class="menupagetitle">MapReduce guide</div> +</div> +<div class="menuitem"> +<a href="idl.html">IDL language</a> +</div> +<div class="menuitem"> +<a href="sasl.html">SASL profile</a> +</div> +<div class="menuitem"> +<a href="http://wiki.apache.org/hadoop/Avro/">Wiki</a> +</div> +<div class="menuitem"> +<a href="http://wiki.apache.org/hadoop/Avro/FAQ">FAQ</a> +</div> +</div> +<div id="credit"></div> +<div id="roundbottom"> +<img style="display: none" class="corner" height="15" width="15" alt="" src="skin/images/rc-b-l-15-1body-2menu-3menu.png"></div> +<!--+ + |alternative credits + +--> +<div id="credit2"></div> +</div> +<!--+ + |end Menu + +--> +<!--+ + |start content + +--> +<div id="content"> +<div title="Portable Document Format" class="pdflink"> +<a class="dida" href="mr.pdf"><img alt="PDF -icon" src="skin/images/pdfdoc.gif" class="skin"><br> + PDF</a> +</div> +<h1>Apache Avro™ 1.8.2 + Hadoop MapReduce guide</h1> +<div id="front-matter"> +<div id="minitoc-area"> +<ul class="minitoc"> +<li> +<a href="#Setup">Setup</a> +</li> +<li> +<a href="#Example%3A+ColorCount">Example: ColorCount</a> +<ul class="minitoc"> +<li> +<a href="#Running+ColorCount">Running ColorCount</a> +</li> +</ul> +</li> +<li> +<a href="#Mapper+-+org.apache.hadoop.mapred+API">Mapper - org.apache.hadoop.mapred API</a> +</li> +<li> +<a href="#Mapper+-+org.apache.hadoop.mapreduce+API">Mapper - org.apache.hadoop.mapreduce API</a> +</li> +<li> +<a href="#Reducer+-+org.apache.hadoop.mapred+API">Reducer - org.apache.hadoop.mapred API</a> +</li> +<li> +<a href="#Reduce+-+org.apache.hadoop.mapreduce+API">Reduce - org.apache.hadoop.mapreduce API</a> +</li> +<li> +<a href="#Learning+more">Learning more</a> +</li> +</ul> +</div> +</div> + +<p> + Avro provides a convenient way to represent complex data structures within + a Hadoop MapReduce job. Avro data can be used as both input to and output + from a MapReduce job, as well as the intermediate format. The example in + this guide uses Avro data for all three, but it's possible to mix and + match; for instance, MapReduce can be used to aggregate a particular field + in an Avro record. + </p> + +<p> + This guide assumes basic familiarity with both Hadoop MapReduce and Avro. + See the <a href="http://hadoop.apache.org/docs/current/">Hadoop + documentation</a> and the <a href="gettingstartedjava.html">Avro getting + started guide</a> for introductions to these projects. This guide uses + the old MapReduce API (<span class="codefrag">org.apache.hadoop.mapred</span>) and the new + MapReduce API (<span class="codefrag">org.apache.hadoop.mapreduce</span>). + </p> + +<a name="Setup"></a> +<h2 class="h3">Setup</h2> +<div class="section"> +<p> + The code from this guide is included in the Avro docs under + <em>examples/mr-example</em>. The example is set up as a Maven project + that includes the necessary Avro and MapReduce dependencies and the Avro + Maven plugin for code generation, so no external jars are needed to run + the example. In particular, the POM includes the following dependencies: + </p> +<pre class="code"> +<dependency> + <groupId>org.apache.avro</groupId> + <artifactId>avro</artifactId> + <version>1.8.2 +</version> +</dependency> +<dependency> + <groupId>org.apache.avro</groupId> + <artifactId>avro-mapred</artifactId> + <version>1.8.2 +</version> +</dependency> +<dependency> + <groupId>org.apache.hadoop</groupId> + <artifactId>hadoop-core</artifactId> + <version>1.1.0</version> +</dependency> + </pre> +<p> + And the following plugin: + </p> +<pre class="code"> +<plugin> + <groupId>org.apache.avro</groupId> + <artifactId>avro-maven-plugin</artifactId> + <version>1.8.2 +</version> + <executions> + <execution> + <phase>generate-sources</phase> + <goals> + <goal>schema</goal> + </goals> + <configuration> + <sourceDirectory>${project.basedir}/../</sourceDirectory> + <outputDirectory>${project.basedir}/target/generated-sources/</outputDirectory> + </configuration> + </execution> + </executions> +</plugin> + </pre> +<p> + If you do not configure the <em>sourceDirectory</em> and <em>outputDirectory</em> + properties, the defaults will be used. The <em>sourceDirectory</em> property + defaults to <em>src/main/avro</em>. The <em>outputDirectory</em> property + defaults to <em>target/generated-sources</em>. You can change the paths to + match your project layout. + </p> +<p> + Alternatively, Avro jars can be downloaded directly from the <a href="http://avro.apache.org/releases.html">Apache Avro™ + Releases</a> page. The relevant Avro jars for this guide are + <em>avro-1.8.2 +.jar</em> and + <em>avro-mapred-1.8.2 +.jar</em>, as well as + <em>avro-tools-1.8.2 +.jar</em> for code generation and viewing + Avro data files as JSON. In addition, you will need to install Hadoop + in order to use MapReduce. + </p> +</div> + + +<a name="Example%3A+ColorCount"></a> +<h2 class="h3">Example: ColorCount</h2> +<div class="section"> +<p> + Below is a simple example of a MapReduce that uses Avro. There is an example + for both the old (<em>org.apache.hadoop.mapred</em>) and new + (<em>org.apache.hadoop.mapreduce</em>) APIs under + <em>examples/mr-example/src/main/java/example/</em>. <em>MapredColorCount</em> + is the example for the older mapred API while <em>MapReduceColorCount</em> is + the example for the newer mapreduce API. Both examples are below, but + we will detail the mapred API in our subsequent examples. + </p> +<p>MapredColorCount:</p> +<pre class="code"> +package example; + +import java.io.IOException; + +import org.apache.avro.*; +import org.apache.avro.Schema.Type; +import org.apache.avro.mapred.*; +import org.apache.hadoop.conf.*; +import org.apache.hadoop.fs.Path; +import org.apache.hadoop.mapred.*; +import org.apache.hadoop.util.*; + +import example.avro.User; + +public class MapredColorCount extends Configured implements Tool { + + public static class ColorCountMapper extends AvroMapper<User, Pair<CharSequence, Integer>> { + @Override + public void map(User user, AvroCollector<Pair<CharSequence, Integer>> collector, Reporter reporter) + throws IOException { + CharSequence color = user.getFavoriteColor(); + // We need this check because the User.favorite_color field has type ["string", "null"] + if (color == null) { + color = "none"; + } + collector.collect(new Pair<CharSequence, Integer>(color, 1)); + } + } + + public static class ColorCountReducer extends AvroReducer<CharSequence, Integer, + Pair<CharSequence, Integer>> { + @Override + public void reduce(CharSequence key, Iterable<Integer> values, + AvroCollector<Pair<CharSequence, Integer>> collector, + Reporter reporter) + throws IOException { + int sum = 0; + for (Integer value : values) { + sum += value; + } + collector.collect(new Pair<CharSequence, Integer>(key, sum)); + } + } + + public int run(String[] args) throws Exception { + if (args.length != 2) { + System.err.println("Usage: MapredColorCount <input path> <output path>"); + return -1; + } + + JobConf conf = new JobConf(getConf(), MapredColorCount.class); + conf.setJobName("colorcount"); + + FileInputFormat.setInputPaths(conf, new Path(args[0])); + FileOutputFormat.setOutputPath(conf, new Path(args[1])); + + AvroJob.setMapperClass(conf, ColorCountMapper.class); + AvroJob.setReducerClass(conf, ColorCountReducer.class); + + // Note that AvroJob.setInputSchema and AvroJob.setOutputSchema set + // relevant config options such as input/output format, map output + // classes, and output key class. + AvroJob.setInputSchema(conf, User.getClassSchema()); + AvroJob.setOutputSchema(conf, Pair.getPairSchema(Schema.create(Type.STRING), + Schema.create(Type.INT))); + + JobClient.runJob(conf); + return 0; + } + + public static void main(String[] args) throws Exception { + int res = ToolRunner.run(new Configuration(), new MapredColorCount(), args); + System.exit(res); + } +} + </pre> +<p>MapReduceColorCount:</p> +<pre class="code"> +package example; + +import java.io.IOException; + +import org.apache.avro.Schema; +import org.apache.avro.mapred.AvroKey; +import org.apache.avro.mapred.AvroValue; +import org.apache.avro.mapreduce.AvroJob; +import org.apache.avro.mapreduce.AvroKeyInputFormat; +import org.apache.avro.mapreduce.AvroKeyValueOutputFormat; +import org.apache.hadoop.conf.Configured; +import org.apache.hadoop.fs.Path; +import org.apache.hadoop.io.IntWritable; +import org.apache.hadoop.io.NullWritable; +import org.apache.hadoop.io.Text; +import org.apache.hadoop.mapreduce.Job; +import org.apache.hadoop.mapreduce.Mapper; +import org.apache.hadoop.mapreduce.Reducer; +import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; +import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; +import org.apache.hadoop.util.Tool; +import org.apache.hadoop.util.ToolRunner; + +import example.avro.User; + +public class MapReduceColorCount extends Configured implements Tool { + + public static class ColorCountMapper extends + Mapper<AvroKey<User>, NullWritable, Text, IntWritable> { + + @Override + public void map(AvroKey<User> key, NullWritable value, Context context) + throws IOException, InterruptedException { + + CharSequence color = key.datum().getFavoriteColor(); + if (color == null) { + color = "none"; + } + context.write(new Text(color.toString()), new IntWritable(1)); + } + } + + public static class ColorCountReducer extends + Reducer<Text, IntWritable, AvroKey<CharSequence>, AvroValue<Integer>> { + + @Override + public void reduce(Text key, Iterable<IntWritable> values, + Context context) throws IOException, InterruptedException { + + int sum = 0; + for (IntWritable value : values) { + sum += value.get(); + } + context.write(new AvroKey<CharSequence>(key.toString()), new AvroValue<Integer>(sum)); + } + } + + public int run(String[] args) throws Exception { + if (args.length != 2) { + System.err.println("Usage: MapReduceColorCount <input path> <output path>"); + return -1; + } + + Job job = new Job(getConf()); + job.setJarByClass(MapReduceColorCount.class); + job.setJobName("Color Count"); + + FileInputFormat.setInputPaths(job, new Path(args[0])); + FileOutputFormat.setOutputPath(job, new Path(args[1])); + + job.setInputFormatClass(AvroKeyInputFormat.class); + job.setMapperClass(ColorCountMapper.class); + AvroJob.setInputKeySchema(job, User.getClassSchema()); + job.setMapOutputKeyClass(Text.class); + job.setMapOutputValueClass(IntWritable.class); + + job.setOutputFormatClass(AvroKeyValueOutputFormat.class); + job.setReducerClass(ColorCountReducer.class); + AvroJob.setOutputKeySchema(job, Schema.create(Schema.Type.STRING)); + AvroJob.setOutputValueSchema(job, Schema.create(Schema.Type.INT)); + + return (job.waitForCompletion(true) ? 0 : 1); + } + + public static void main(String[] args) throws Exception { + int res = ToolRunner.run(new MapReduceColorCount(), args); + System.exit(res); + } +} + </pre> +<p> + ColorCount reads in data files containing <span class="codefrag">User</span> records, + defined in <em>examples/user.avsc</em>, and counts the number of + instances of each favorite color. (This example draws inspiration from + the canonical WordCount MapReduce application.) This example uses the + old MapReduce API. See MapReduceAvroWordCount, found under + <em>doc/examples/mr-example/src/main/java/example/</em> to see the new MapReduce + API example. The <span class="codefrag">User</span> + schema is defined as follows: + </p> +<pre class="code"> +{"namespace": "example.avro", + "type": "record", + "name": "User", + "fields": [ + {"name": "name", "type": "string"}, + {"name": "favorite_number", "type": ["int", "null"]}, + {"name": "favorite_color", "type": ["string", "null"]} + ] +} + </pre> +<p> + This schema is compiled into the <span class="codefrag">User</span> class used by + ColorCount via the Avro Maven plugin (see + <em>examples/mr-example/pom.xml</em> for how this is set up). + </p> +<p> + ColorCountMapper essentially takes a <span class="codefrag">User</span> as input and + extracts the <span class="codefrag">User</span>'s favorite color, emitting the key-value + pair <span class="codefrag"><</span><em>favoriteColor</em><span class="codefrag">, 1></span>. + ColorCountReducer then adds up how many occurrences of a particular + favorite color were emitted, and outputs the result as a + <span class="codefrag">Pair</span> record. These <span class="codefrag">Pair</span>s are serialized to an + Avro data file. + </p> +<a name="Running+ColorCount"></a> +<h3 class="h4">Running ColorCount</h3> +<p> + The ColorCount application is provided as a Maven project in the Avro + docs under <em>examples/mr-example</em>. To build the project, + including the code generation of the User schema, run: + </p> +<pre class="code"> +mvn compile + </pre> +<p> + Next, run GenerateData from examples/mr-examples to create an Avro data + file, <em>input/users.avro</em>, containing 20 <span class="codefrag">User</span>s with + favorite colors chosen randomly from a list: + </p> +<pre class="code"> +mvn exec:java -q -Dexec.mainClass=example.GenerateData + </pre> +<p> + Besides creating the data file, GenerateData prints the JSON + representations of the Users generated to stdout, for example: + </p> +<pre class="code"> +{"name": "user", "favorite_number": null, "favorite_color": "red"} +{"name": "user", "favorite_number": null, "favorite_color": "green"} +{"name": "user", "favorite_number": null, "favorite_color": "purple"} +{"name": "user", "favorite_number": null, "favorite_color": null} +... + </pre> +<p> + Now we're ready to run ColorCount. We specify our freshly-generated + <em>input</em> folder as the input path and <em>output</em> as our + output folder (note that MapReduce will not start a job if the output + folder already exists): + </p> +<pre class="code"> +mvn exec:java -q -Dexec.mainClass=example.MapredColorCount -Dexec.args="input output" + </pre> +<p> + Once ColorCount completes, checking the contents of the new + <em>output</em> directory should yield the following: + </p> +<pre class="code"> +$ ls output/ +part-00000.avro _SUCCESS + </pre> +<p> + You can check the contents of the generated Avro file using the avro-tools jar: + </p> +<pre class="code"> +$ java -jar /path/to/avro-tools-1.8.2 +.jar tojson output/part-00000.avro +{"value": 3, "key": "blue"} +{"value": 7, "key": "green"} +{"value": 1, "key": "none"} +{"value": 2, "key": "orange"} +{"value": 3, "key": "purple"} +{"value": 2, "key": "red"} +{"value": 2, "key": "yellow"} + </pre> +</div> + +<p>Now let's go over the ColorCount example in detail.</p> + +<a name="Mapper+-+org.apache.hadoop.mapred+API"></a> +<h2 class="h3">Mapper - org.apache.hadoop.mapred API</h2> +<div class="section"> +<p> + The easiest way to use Avro data files as input to a MapReduce job is to + subclass <span class="codefrag">AvroMapper</span>. An <span class="codefrag">AvroMapper</span> defines a + map function that takes an Avro datum as input and outputs a key/value + pair represented as a <span class="codefrag">Pair</span> record. In the ColorCount + example, <span class="codefrag">ColorCountMapper</span> is an <span class="codefrag">AvroMapper</span> + that takes a <span class="codefrag">User</span> as input and outputs a + <span class="codefrag">Pair<CharSequence, Integer>></span>, where the + <span class="codefrag">CharSequence</span> key is the user's favorite color and the + <span class="codefrag">Integer</span> value is 1. + </p> +<pre class="code"> +public static class ColorCountMapper extends AvroMapper<User, Pair<CharSequence, Integer>> { + @Override + public void map(User user, AvroCollector<Pair<CharSequence, Integer>> collector, Reporter reporter) + throws IOException { + CharSequence color = user.getFavoriteColor(); + // We need this check because the User.favorite_color field has type ["string", "null"] + if (color == null) { + color = "none"; + } + collector.collect(new Pair<CharSequence, Integer>(color, 1)); + } +} + </pre> +<p> + In order to use our <span class="codefrag">AvroMapper</span>, we must call + <span class="codefrag">AvroJob.setMapperClass</span> and + <span class="codefrag">AvroJob.setInputSchema</span>. + </p> +<pre class="code"> +AvroJob.setMapperClass(conf, ColorCountMapper.class); +AvroJob.setInputSchema(conf, User.getClassSchema()); + </pre> +<p> + Note that <span class="codefrag">AvroMapper</span> does not implement the + <span class="codefrag">Mapper</span> interface. Under the hood, the specified Avro data + files are deserialized into <span class="codefrag">AvroWrapper</span>s containing the + actual data, which are processed by a <span class="codefrag">Mapper</span> that calls the + configured <span class="codefrag">AvroMapper</span>'s map function. + <span class="codefrag">AvroJob.setInputSchema</span> sets up the relevant configuration + parameters needed to make this happen, thus you should not need to call + <span class="codefrag">JobConf.setMapperClass</span>, + <span class="codefrag">JobConf.setInputFormat</span>, + <span class="codefrag">JobConf.setMapOutputKeyClass</span>, + <span class="codefrag">JobConf.setMapOutputValueClass</span>, or + <span class="codefrag">JobConf.setOutputKeyComparatorClass</span>. + </p> +</div> + +<a name="Mapper+-+org.apache.hadoop.mapreduce+API"></a> +<h2 class="h3">Mapper - org.apache.hadoop.mapreduce API</h2> +<div class="section"> +<p> + This document will not go into all the differences between the mapred and mapreduce APIs, + however will describe the main differences. As you can see, ColorCountMapper is now a + subclass of the Hadoop Mapper class and is passed an AvroKey as it's key. + + Additionally, the AvroJob method calls were slightly changed. + </p> +<pre class="code"> + public static class ColorCountMapper extends + Mapper<AvroKey<User>, NullWritable, Text, IntWritable> { + + @Override + public void map(AvroKey<User> key, NullWritable value, Context context) + throws IOException, InterruptedException { + + CharSequence color = key.datum().getFavoriteColor(); + if (color == null) { + color = "none"; + } + context.write(new Text(color.toString()), new IntWritable(1)); + } + } + </pre> +</div> + +<a name="Reducer+-+org.apache.hadoop.mapred+API"></a> +<h2 class="h3">Reducer - org.apache.hadoop.mapred API</h2> +<div class="section"> +<p> + Analogously to <span class="codefrag">AvroMapper</span>, an <span class="codefrag">AvroReducer</span> + defines a reducer function that takes the key/value types output by an + <span class="codefrag">AvroMapper</span> (or any mapper that outputs <span class="codefrag">Pair</span>s) + and outputs a key/value pair represented a <span class="codefrag">Pair</span> record. In + the ColorCount example, <span class="codefrag">ColorCountReducer</span> is an + <span class="codefrag">AvroReducer</span> that takes the <span class="codefrag">CharSequence</span> key + representing a favorite color and the <span class="codefrag">Iterable<Integer></span> + representing the counts for that color (they should all be 1 in this + example) and adds up the counts. + </p> +<pre class="code"> +public static class ColorCountReducer extends AvroReducer<CharSequence, Integer, + Pair<CharSequence, Integer>> { + @Override + public void reduce(CharSequence key, Iterable<Integer> values, + AvroCollector<Pair<CharSequence, Integer>> collector, + Reporter reporter) + throws IOException { + int sum = 0; + for (Integer value : values) { + sum += value; + } + collector.collect(new Pair<CharSequence, Integer>(key, sum)); + } +} + </pre> +<p> + In order to use our <span class="codefrag">AvroReducer</span>, we must call + <span class="codefrag">AvroJob.setReducerClass</span> and + <span class="codefrag">AvroJob.setOutputSchema</span>. + </p> +<pre class="code"> +AvroJob.setReducerClass(conf, ColorCountReducer.class); +AvroJob.setOutputSchema(conf, Pair.getPairSchema(Schema.create(Type.STRING), + Schema.create(Type.INT))); + </pre> +<p> + Note that <span class="codefrag">AvroReducer</span> does not implement the + <span class="codefrag">Reducer</span> interface. The intermediate <span class="codefrag">Pair</span>s + output by the mapper are split into <span class="codefrag">AvroKey</span>s and + <span class="codefrag">AvroValue</span>s, which are processed by a <span class="codefrag">Reducer</span> + that calls the configured <span class="codefrag">AvroReducer</span>'s reduce function. + <span class="codefrag">AvroJob.setOutputSchema</span> sets up the relevant configuration + parameters needed to make this happen, thus you should not need to call + <span class="codefrag">JobConf.setReducerClass</span>, + <span class="codefrag">JobConf.setOutputFormat</span>, + <span class="codefrag">JobConf.setOutputKeyClass</span>, + <span class="codefrag">JobConf.setMapOutputKeyClass</span>, + <span class="codefrag">JobConf.setMapOutputValueClass</span>, or + <span class="codefrag">JobConf.setOutputKeyComparatorClass</span>. + </p> +</div> + +<a name="Reduce+-+org.apache.hadoop.mapreduce+API"></a> +<h2 class="h3">Reduce - org.apache.hadoop.mapreduce API</h2> +<div class="section"> +<p> + As before we not detail every difference between the APIs. As with the Mapper + change ColorCountReducer is now a subclass of Reducer and AvroKey and AvroValue + are emitted. + + Additionally, the AvroJob method calls were slightly changed. + </p> +<pre class="code"> + public static class ColorCountReducer extends + Reducer<Text, IntWritable, AvroKey<CharSequence>, AvroValue<Integer>> { + + @Override + public void reduce(Text key, Iterable<IntWritable> values, + Context context) throws IOException, InterruptedException { + + int sum = 0; + for (IntWritable value : values) { + sum += value.get(); + } + context.write(new AvroKey<CharSequence>(key.toString()), new AvroValue<Integer>(sum)); + } + } + </pre> +</div> + +<a name="Learning+more"></a> +<h2 class="h3">Learning more</h2> +<div class="section"> +<p> + The mapred API allows users to mix Avro <span class="codefrag">AvroMapper</span>s and + <span class="codefrag">AvroReducer</span>s with non-Avro <span class="codefrag">Mapper</span>s and + <span class="codefrag">Reducer</span>s and the mapreduce API allows users input Avro + and output non-Avro or vice versa. + </p> +<p> + The mapred package has API <a href="http://avro.apache.org/docs/current/api/java/org/apache/avro/mapred/package-summary.html"> + <span class="codefrag">org.apache.avro.mapred</span> documentation</a> as does the <a href="http://avro.apache.org/docs/current/api/java/org/apache/avro/mapreduce/package-summary.html"> + <span class="codefrag">org.apache.avro.mapreduce</span> package</a>. + MapReduce API (<span class="codefrag">org.apache.hadoop.mapreduce</span>). Similarily to the mapreduce package, + it's possible with the mapred API to implement your own <span class="codefrag">Mapper</span>s and + <span class="codefrag">Reducer</span>s directly using the public classes provided in + these libraries. See the AvroWordCount application, found under + <em>examples/mr-example/src/main/java/example/AvroWordCount.java</em> in + the Avro documentation, for an example of implementing a + <span class="codefrag">Reducer</span> that outputs Avro data using the old MapReduce API. + See the MapReduceAvroWordCount application, found under + <em>examples/mr-example/src/main/java/example/MapReduceAvroWordCount.java</em> in + the Avro documentation, for an example of implementing a + <span class="codefrag">Reducer</span> that outputs Avro data using the new MapReduce API. + </p> +</div> + +</div> +<!--+ + |end content + +--> +<div class="clearboth"> </div> +</div> +<div id="footer"> +<!--+ + |start bottomstrip + +--> +<div class="lastmodified"> +<script type="text/javascript"><!-- +document.write("Last Published: " + document.lastModified); +// --></script> +</div> +<div class="copyright"> + Copyright © + 2012 <a href="http://www.apache.org/licenses/">The Apache Software Foundation.</a> +</div> +<!--+ + |end bottomstrip + +--> +</div> +</body> +</html>
Added: avro/site/publish/docs/1.8.2/mr.pdf URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/mr.pdf?rev=1797063&view=auto ============================================================================== Binary file - no diff available. Propchange: avro/site/publish/docs/1.8.2/mr.pdf ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: avro/site/publish/docs/1.8.2/sasl.html URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/sasl.html?rev=1797063&view=auto ============================================================================== --- avro/site/publish/docs/1.8.2/sasl.html (added) +++ avro/site/publish/docs/1.8.2/sasl.html Wed May 31 15:48:43 2017 @@ -0,0 +1,359 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> +<meta content="Apache Forrest" name="Generator"> +<meta name="Forrest-version" content="0.9"> +<meta name="Forrest-skin-name" content="pelt"> +<title>Apache Avro™ 1.8.2 + SASL Profile</title> +<link type="text/css" href="skin/basic.css" rel="stylesheet"> +<link media="screen" type="text/css" href="skin/screen.css" rel="stylesheet"> +<link media="print" type="text/css" href="skin/print.css" rel="stylesheet"> +<link type="text/css" href="skin/profile.css" rel="stylesheet"> +<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> +<link rel="shortcut icon" href="images/favicon.ico"> +</head> +<body onload="init()"> +<script type="text/javascript">ndeSetTextSize();</script> +<div id="top"> +<!--+ + |breadtrail + +--> +<div class="breadtrail"> +<a href="http://www.apache.org/">Apache</a> > <a href="http://avro.apache.org/">Avro</a> > <a href="http://avro.apache.org/">Avro</a><script src="skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script> +</div> +<!--+ + |header + +--> +<div class="header"> +<!--+ + |start group logo + +--> +<div class="grouplogo"> +<a href="http://www.apache.org/"><img class="logoImage" alt="Apache" src="images/apache_feather.gif" title="The Apache Software Foundation"></a> +</div> +<!--+ + |end group logo + +--> +<!--+ + |start Project Logo + +--> +<div class="projectlogo"> +<a href="http://avro.apache.org/"><img class="logoImage" alt="Avro" src="images/avro-logo.png" title="Serialization System"></a> +</div> +<!--+ + |end Project Logo + +--> +<!--+ + |start Search + +--> +<div class="searchbox"> +<form action="http://www.google.com/search" method="get" class="roundtopsmall"> +<input value="avro.apache.org" 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"> + <input name="Search" value="Search" type="submit"> +</form> +</div> +<!--+ + |end search + +--> +<!--+ + |start Tabs + +--> +<ul id="tabs"> +<li> +<a class="unselected" href="http://avro.apache.org/">Project</a> +</li> +<li> +<a class="unselected" href="http://wiki.apache.org/hadoop/Avro/">Wiki</a> +</li> +<li class="current"> +<a class="selected" href="index.html">Avro 1.8.2 Documentation</a> +</li> +</ul> +<!--+ + |end Tabs + +--> +</div> +</div> +<div id="main"> +<div id="publishedStrip"> +<!--+ + |start Subtabs + +--> +<div id="level2tabs"></div> +<!--+ + |end Endtabs + +--> +<script type="text/javascript"><!-- +document.write("Last Published: " + document.lastModified); +// --></script> +</div> +<!--+ + |breadtrail + +--> +<div class="breadtrail"> + + + </div> +<!--+ + |start Menu, mainarea + +--> +<!--+ + |start Menu + +--> +<div id="menu"> +<div onclick="SwitchMenu('menu_selected_1.1', 'skin/')" id="menu_selected_1.1Title" class="menutitle" style="background-image: url('skin/images/chapter_open.gif');">Documentation</div> +<div id="menu_selected_1.1" class="selectedmenuitemgroup" style="display: block;"> +<div class="menuitem"> +<a href="index.html">Overview</a> +</div> +<div class="menuitem"> +<a href="gettingstartedjava.html">Getting started (Java)</a> +</div> +<div class="menuitem"> +<a href="gettingstartedpython.html">Getting started (Python)</a> +</div> +<div class="menuitem"> +<a href="spec.html">Specification</a> +</div> +<div class="menuitem"> +<a href="trevni/spec.html">Trevni</a> +</div> +<div class="menuitem"> +<a href="api/java/index.html">Java API</a> +</div> +<div class="menuitem"> +<a href="api/c/index.html">C API</a> +</div> +<div class="menuitem"> +<a href="api/cpp/html/index.html">C++ API</a> +</div> +<div class="menuitem"> +<a href="api/csharp/index.html">C# API</a> +</div> +<div class="menuitem"> +<a href="mr.html">MapReduce guide</a> +</div> +<div class="menuitem"> +<a href="idl.html">IDL language</a> +</div> +<div class="menupage"> +<div class="menupagetitle">SASL profile</div> +</div> +<div class="menuitem"> +<a href="http://wiki.apache.org/hadoop/Avro/">Wiki</a> +</div> +<div class="menuitem"> +<a href="http://wiki.apache.org/hadoop/Avro/FAQ">FAQ</a> +</div> +</div> +<div id="credit"></div> +<div id="roundbottom"> +<img style="display: none" class="corner" height="15" width="15" alt="" src="skin/images/rc-b-l-15-1body-2menu-3menu.png"></div> +<!--+ + |alternative credits + +--> +<div id="credit2"></div> +</div> +<!--+ + |end Menu + +--> +<!--+ + |start content + +--> +<div id="content"> +<div title="Portable Document Format" class="pdflink"> +<a class="dida" href="sasl.pdf"><img alt="PDF -icon" src="skin/images/pdfdoc.gif" class="skin"><br> + PDF</a> +</div> +<h1>Apache Avro™ 1.8.2 + SASL Profile</h1> +<div id="front-matter"> +<div id="minitoc-area"> +<ul class="minitoc"> +<li> +<a href="#intro">Introduction</a> +</li> +<li> +<a href="#overview">Overview</a> +</li> +<li> +<a href="#negotiation">Negotiation</a> +<ul class="minitoc"> +<li> +<a href="#commands">Commands</a> +</li> +<li> +<a href="#process">Process</a> +</li> +</ul> +</li> +<li> +<a href="#session">Session Data</a> +</li> +<li> +<a href="#anonymous">Anonymous Mechanism</a> +</li> +</ul> +</div> +</div> + +<a name="intro"></a> +<h2 class="h3">Introduction</h2> +<div class="section"> +<p>SASL (<a href="http://www.ietf.org/rfc/rfc2222.txt">RFC 2222</a>) + provides a framework for authentication and security of network + protocols. Each protocol that uses SASL is meant to define a + SASL <em>profile</em>. This document provides a SASL profile + for connection-based Avro RPC.</p> +</div> + + +<a name="overview"></a> +<h2 class="h3">Overview</h2> +<div class="section"> +<p>SASL negotiation proceeds as a series of message interactions + over a connection between a client and server using a selected + SASL <em>mechanism</em>. The client starts this negotiation by + sending its chosen mechanism name with an initial (possibly + empty) message. Negotiation proceeds with the exchange of + messages until either side indicates success or failure. The + content of the messages is mechanism-specific. If the + negotiation succeeds, then the session can proceed over the + connection, otherwise it must be abandoned.</p> +<p>Some mechanisms continue to process session data after + negotiation (e.g., encrypting it), while some specify that + further session data is transmitted unmodifed.</p> +</div> + + +<a name="negotiation"></a> +<h2 class="h3">Negotiation</h2> +<div class="section"> +<a name="commands"></a> +<h3 class="h4">Commands</h3> +<p>Avro SASL negotiation uses four one-byte commands.</p> +<ul> + +<li> +<span class="codefrag">0: START</span> Used in a client's initial message.</li> + +<li> +<span class="codefrag">1: CONTINUE</span> Used while negotiation is ongoing.</li> + +<li> +<span class="codefrag">2: FAIL</span> Terminates negotiation unsuccessfully.</li> + +<li> +<span class="codefrag">3: COMPLETE</span> Terminates negotiation sucessfully.</li> + +</ul> +<p>The format of a START message is:</p> +<pre class="code">| 0 | 4-byte mechanism name length | mechanism name | 4-byte payload length | payload data |</pre> +<p>The format of a CONTINUE message is:</p> +<pre class="code">| 1 | 4-byte payload length | payload data |</pre> +<p>The format of a FAIL message is:</p> +<pre class="code">| 2 | 4-byte message length | UTF-8 message |</pre> +<p>The format of a COMPLETE message is:</p> +<pre class="code">| 3 | 4-byte payload length | payload data |</pre> +<a name="process"></a> +<h3 class="h4">Process</h3> +<p>Negotiation is initiated by a client sending a START command + containing the client's chosen mechanism name and any + mechanism-specific payload data.</p> +<p>The server and client then interchange some number + (possibly zero) of CONTINUE messages. Each message contains + payload data that is processed by the security mechanism to + generate the next message.</p> +<p>Once either the client or server send a FAIL message then + negotiation has failed. UTF-8-encoded text is included in + the failure message. Once either a FAIL message has been + sent or recieved, or any other error occurs in the + negotiation, further communication on this connection must + cease.</p> +<p>Once either the client or server send a COMPLETE message + then negotiation has completed successfully. Session data + may now be transmitted over the connection until it is + closed by either side.</p> +</div> + + +<a name="session"></a> +<h2 class="h3">Session Data</h2> +<div class="section"> +<p>If no SASL QOP (quality of protection) is negotiated, then + all subsequent writes to/reads over this connection are + written/read unmodified. In particular, messages use + Avro <a href="spec.html#Message+Framing">framing</a>, and are + of the form:</p> +<pre class="code">| 4-byte frame length | frame data | ... | 4 zero bytes |</pre> +<p>If a SASL QOP is negotiated, then it must be used by the + connection for all subsequent messages. This is done by + wrapping each non-empty frame written using the security + mechanism and unwrapping each non-empty frame read. The + length written in each non-empty frame is the length of the + wrapped data. Complete frames must be passed to the security + mechanism for unwrapping. Unwrapped data is then passed to + the application as the content of the frame.</p> +<p>If at any point processing fails due to wrapping, unwrapping + or framing errors, then all further communication on this + connection must cease.</p> +</div> + + +<a name="anonymous"></a> +<h2 class="h3">Anonymous Mechanism</h2> +<div class="section"> +<p>The SASL anonymous mechanism + (<a href="http://www.ietf.org/rfc/rfc2222.txt">RFC 2245</a>) is + quite simple to implement. In particular, an initial anonymous + request may be prefixed by the following static sequence:</p> +<pre class="code">| 0 | 0009 | ANONYMOUS | 0000 |</pre> +<p>If a server uses the anonymous mechanism, it should check + that the mechanism name in the start message prefixing the first + request recieved is 'ANONYMOUS', then simply prefix its initial + response with a COMPLETE message of:</p> +<pre class="code">| 3 | 0000 |</pre> +<p>If an anonymous server recieves some other mechanism name, + then it may respond with a FAIL message as simple as:</p> +<pre class="code">| 2 | 0000 |</pre> +<p>Note that the anonymous mechanism need add no additional + round-trip messages between client and server. The START + message can be piggybacked on the initial request and the + COMPLETE or FAIL message can be piggybacked on the initial + response.</p> +</div> + + +<p> +<em>Apache Avro, Avro, Apache, and the Avro and Apache logos are + trademarks of The Apache Software Foundation.</em> +</p> + + +</div> +<!--+ + |end content + +--> +<div class="clearboth"> </div> +</div> +<div id="footer"> +<!--+ + |start bottomstrip + +--> +<div class="lastmodified"> +<script type="text/javascript"><!-- +document.write("Last Published: " + document.lastModified); +// --></script> +</div> +<div class="copyright"> + Copyright © + 2012 <a href="http://www.apache.org/licenses/">The Apache Software Foundation.</a> +</div> +<!--+ + |end bottomstrip + +--> +</div> +</body> +</html> Added: avro/site/publish/docs/1.8.2/sasl.pdf URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/sasl.pdf?rev=1797063&view=auto ============================================================================== Binary file - no diff available. Propchange: avro/site/publish/docs/1.8.2/sasl.pdf ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: avro/site/publish/docs/1.8.2/skin/CommonMessages_de.xml URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/CommonMessages_de.xml?rev=1797063&view=auto ============================================================================== --- avro/site/publish/docs/1.8.2/skin/CommonMessages_de.xml (added) +++ avro/site/publish/docs/1.8.2/skin/CommonMessages_de.xml Wed May 31 15:48:43 2017 @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<catalogue> + <message key="Font size:">Schriftgrösse:</message> + <message key="Last Published:">Zuletzt veröffentlicht:</message> + <message key="Search">Suche:</message> + <message key="Search the site with">Suche auf der Seite mit</message> +</catalogue> Added: avro/site/publish/docs/1.8.2/skin/CommonMessages_en_US.xml URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/CommonMessages_en_US.xml?rev=1797063&view=auto ============================================================================== --- avro/site/publish/docs/1.8.2/skin/CommonMessages_en_US.xml (added) +++ avro/site/publish/docs/1.8.2/skin/CommonMessages_en_US.xml Wed May 31 15:48:43 2017 @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<catalogue> + <message key="Font size:">Font size:</message> + <message key="Last Published:">Last Published:</message> + <message key="Search">Search</message> + <message key="Search the site with">Search site with</message> +</catalogue> Added: avro/site/publish/docs/1.8.2/skin/CommonMessages_es.xml URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/CommonMessages_es.xml?rev=1797063&view=auto ============================================================================== --- avro/site/publish/docs/1.8.2/skin/CommonMessages_es.xml (added) +++ avro/site/publish/docs/1.8.2/skin/CommonMessages_es.xml Wed May 31 15:48:43 2017 @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<catalogue> + <message key="Font size:">Tamaño del texto:</message> + <message key="Last Published:">Fecha de publicación:</message> + <message key="Search">Buscar</message> + <message key="Search the site with">Buscar en</message> +</catalogue> Added: avro/site/publish/docs/1.8.2/skin/CommonMessages_fr.xml URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/CommonMessages_fr.xml?rev=1797063&view=auto ============================================================================== --- avro/site/publish/docs/1.8.2/skin/CommonMessages_fr.xml (added) +++ avro/site/publish/docs/1.8.2/skin/CommonMessages_fr.xml Wed May 31 15:48:43 2017 @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<catalogue> + <message key="Font size:">Taille :</message> + <message key="Last Published:">Dernière publication :</message> + <message key="Search">Rechercher</message> + <message key="Search the site with">Rechercher sur le site avec</message> +</catalogue> Added: avro/site/publish/docs/1.8.2/skin/basic.css URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/basic.css?rev=1797063&view=auto ============================================================================== --- avro/site/publish/docs/1.8.2/skin/basic.css (added) +++ avro/site/publish/docs/1.8.2/skin/basic.css Wed May 31 15:48:43 2017 @@ -0,0 +1,167 @@ +/* +* Licensed to the Apache Software Foundation (ASF) under one or more +* contributor license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright ownership. +* The ASF licenses this file to You under the Apache License, Version 2.0 +* (the "License"); you may not use this file except in compliance with +* the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +/** + * General + */ + +img { border: 0; } + +#content table { + border: 0; + width: 100%; +} +/*Hack to get IE to render the table at 100%*/ +* html #content table { margin-left: -3px; } + +#content th, +#content td { + margin: 0; + padding: 0; + vertical-align: top; +} + +.clearboth { + clear: both; +} + +.note, .warning, .fixme { + clear:right; + border: solid black 1px; + margin: 1em 3em; +} + +.note .label { + background: #369; + color: white; + font-weight: bold; + padding: 5px 10px; +} +.note .content { + background: #F0F0FF; + color: black; + line-height: 120%; + font-size: 90%; + padding: 5px 10px; +} +.warning .label { + background: #C00; + color: white; + font-weight: bold; + padding: 5px 10px; +} +.warning .content { + background: #FFF0F0; + color: black; + line-height: 120%; + font-size: 90%; + padding: 5px 10px; +} +.fixme .label { + background: #C6C600; + color: black; + font-weight: bold; + padding: 5px 10px; +} +.fixme .content { + padding: 5px 10px; +} + +/** + * Typography + */ + +body { + font-family: verdana, "Trebuchet MS", arial, helvetica, sans-serif; + font-size: 100%; +} + +#content { + font-family: Georgia, Palatino, Times, serif; + font-size: 95%; +} +#tabs { + font-size: 70%; +} +#menu { + font-size: 80%; +} +#footer { + font-size: 70%; +} + +h1, h2, h3, h4, h5, h6 { + font-family: "Trebuchet MS", verdana, arial, helvetica, sans-serif; + font-weight: bold; + margin-top: 1em; + margin-bottom: .5em; +} + +h1 { + margin-top: 0; + margin-bottom: 1em; + font-size: 1.4em; +} +#content h1 { + font-size: 160%; + margin-bottom: .5em; +} +#menu h1 { + margin: 0; + padding: 10px; + background: #336699; + color: white; +} +h2 { font-size: 120%; } +h3 { font-size: 100%; } +h4 { font-size: 90%; } +h5 { font-size: 80%; } +h6 { font-size: 75%; } + +p { + line-height: 120%; + text-align: left; + margin-top: .5em; + margin-bottom: 1em; +} + +#content li, +#content th, +#content td, +#content li ul, +#content li ol{ + margin-top: .5em; + margin-bottom: .5em; +} + + +#content li li, +#minitoc-area li{ + margin-top: 0em; + margin-bottom: 0em; +} + +#content .attribution { + text-align: right; + font-style: italic; + font-size: 85%; + margin-top: 1em; +} + +.codefrag { + font-family: "Courier New", Courier, monospace; + font-size: 110%; +} \ No newline at end of file Added: avro/site/publish/docs/1.8.2/skin/breadcrumbs-optimized.js URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/breadcrumbs-optimized.js?rev=1797063&view=auto ============================================================================== --- avro/site/publish/docs/1.8.2/skin/breadcrumbs-optimized.js (added) +++ avro/site/publish/docs/1.8.2/skin/breadcrumbs-optimized.js Wed May 31 15:48:43 2017 @@ -0,0 +1,90 @@ +/* +* Licensed to the Apache Software Foundation (ASF) under one or more +* contributor license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright ownership. +* The ASF licenses this file to You under the Apache License, Version 2.0 +* (the "License"); you may not use this file except in compliance with +* the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +var PREPREND_CRUMBS=new Array(); +var link1="@skinconfig.trail.link1.name@"; +var link2="@skinconfig.trail.link2.name@"; +var link3="@skinconfig.trail.link3.name@"; +if(!(link1=="")&&!link1.indexOf( "@" ) == 0){ + PREPREND_CRUMBS.push( new Array( link1, @skinconfig.trail.link1.href@ ) ); } +if(!(link2=="")&&!link2.indexOf( "@" ) == 0){ + PREPREND_CRUMBS.push( new Array( link2, @skinconfig.trail.link2.href@ ) ); } +if(!(link3=="")&&!link3.indexOf( "@" ) == 0){ + PREPREND_CRUMBS.push( new Array( link3, @skinconfig.trail.link3.href@ ) ); } +var DISPLAY_SEPARATOR=" > "; +var DISPLAY_PREPREND=" > "; +var DISPLAY_POSTPREND=":"; +var CSS_CLASS_CRUMB="breadcrumb"; +var CSS_CLASS_TRAIL="breadcrumbTrail"; +var CSS_CLASS_SEPARATOR="crumbSeparator"; +var FILE_EXTENSIONS=new Array( ".html", ".htm", ".jsp", ".php", ".php3", ".php4" ); +var PATH_SEPARATOR="/"; + +function sc(s) { + var l=s.toLowerCase(); + return l.substr(0,1).toUpperCase()+l.substr(1); +} +function getdirs() { + var t=document.location.pathname.split(PATH_SEPARATOR); + var lc=t[t.length-1]; + for(var i=0;i < FILE_EXTENSIONS.length;i++) + { + if(lc.indexOf(FILE_EXTENSIONS[i])) + return t.slice(1,t.length-1); } + return t.slice(1,t.length); +} +function getcrumbs( d ) +{ + var pre = "/"; + var post = "/"; + var c = new Array(); + if( d != null ) + { + for(var i=0;i < d.length;i++) { + pre+=d[i]+postfix; + c.push(new Array(d[i],pre)); } + } + if(PREPREND_CRUMBS.length > 0 ) + return PREPREND_CRUMBS.concat( c ); + return c; +} +function gettrail( c ) +{ + var h=DISPLAY_PREPREND; + for(var i=0;i < c.length;i++) + { + h+='<a href="'+c[i][1]+'" >'+sc(c[i][0])+'</a>'; + if(i!=(c.length-1)) + h+=DISPLAY_SEPARATOR; } + return h+DISPLAY_POSTPREND; +} + +function gettrailXHTML( c ) +{ + var h='<span class="'+CSS_CLASS_TRAIL+'">'+DISPLAY_PREPREND; + for(var i=0;i < c.length;i++) + { + h+='<a href="'+c[i][1]+'" class="'+CSS_CLASS_CRUMB+'">'+sc(c[i][0])+'</a>'; + if(i!=(c.length-1)) + h+='<span class="'+CSS_CLASS_SEPARATOR+'">'+DISPLAY_SEPARATOR+'</span>'; } + return h+DISPLAY_POSTPREND+'</span>'; +} + +if(document.location.href.toLowerCase().indexOf("http://")==-1) + document.write(gettrail(getcrumbs())); +else + document.write(gettrail(getcrumbs(getdirs()))); + Added: avro/site/publish/docs/1.8.2/skin/breadcrumbs.js URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/breadcrumbs.js?rev=1797063&view=auto ============================================================================== --- avro/site/publish/docs/1.8.2/skin/breadcrumbs.js (added) +++ avro/site/publish/docs/1.8.2/skin/breadcrumbs.js Wed May 31 15:48:43 2017 @@ -0,0 +1,237 @@ +/* +* Licensed to the Apache Software Foundation (ASF) under one or more +* contributor license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright ownership. +* The ASF licenses this file to You under the Apache License, Version 2.0 +* (the "License"); you may not use this file except in compliance with +* the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +/** + * This script, when included in a html file, builds a neat breadcrumb trail + * based on its url. That is, if it doesn't contains bugs (I'm relatively + * sure it does). + * + * Typical usage: + * <script type="text/javascript" language="JavaScript" src="breadcrumbs.js"></script> + */ + +/** + * IE 5 on Mac doesn't know Array.push. + * + * Implement it - courtesy to fritz. + */ +var abc = new Array(); +if (!abc.push) { + Array.prototype.push = function(what){this[this.length]=what} +} + +/* ======================================================================== + CONSTANTS + ======================================================================== */ + +/** + * Two-dimensional array containing extra crumbs to place at the front of + * the trail. Specify first the name of the crumb, then the URI that belongs + * to it. You'll need to modify this for every domain or subdomain where + * you use this script (you can leave it as an empty array if you wish) + */ +var PREPREND_CRUMBS = new Array(); + +var link1 = "@skinconfig.trail.link1.name@"; +var link2 = "@skinconfig.trail.link2.name@"; +var link3 = "@skinconfig.trail.link3.name@"; + +var href1 = "@skinconfig.trail.link1.href@"; +var href2 = "@skinconfig.trail.link2.href@"; +var href3 = "@skinconfig.trail.link3.href@"; + + if(!(link1=="")&&!link1.indexOf( "@" ) == 0){ + PREPREND_CRUMBS.push( new Array( link1, href1 ) ); + } + if(!(link2=="")&&!link2.indexOf( "@" ) == 0){ + PREPREND_CRUMBS.push( new Array( link2, href2 ) ); + } + if(!(link3=="")&&!link3.indexOf( "@" ) == 0){ + PREPREND_CRUMBS.push( new Array( link3, href3 ) ); + } + +/** + * String to include between crumbs: + */ +var DISPLAY_SEPARATOR = " > "; +/** + * String to include at the beginning of the trail + */ +var DISPLAY_PREPREND = " > "; +/** + * String to include at the end of the trail + */ +var DISPLAY_POSTPREND = ""; + +/** + * CSS Class to use for a single crumb: + */ +var CSS_CLASS_CRUMB = "breadcrumb"; + +/** + * CSS Class to use for the complete trail: + */ +var CSS_CLASS_TRAIL = "breadcrumbTrail"; + +/** + * CSS Class to use for crumb separator: + */ +var CSS_CLASS_SEPARATOR = "crumbSeparator"; + +/** + * Array of strings containing common file extensions. We use this to + * determine what part of the url to ignore (if it contains one of the + * string specified here, we ignore it). + */ +var FILE_EXTENSIONS = new Array( ".html", ".htm", ".jsp", ".php", ".php3", ".php4" ); + +/** + * String that separates parts of the breadcrumb trail from each other. + * When this is no longer a slash, I'm sure I'll be old and grey. + */ +var PATH_SEPARATOR = "/"; + +/* ======================================================================== + UTILITY FUNCTIONS + ======================================================================== */ +/** + * Capitalize first letter of the provided string and return the modified + * string. + */ +function sentenceCase( string ) +{ return string; + //var lower = string.toLowerCase(); + //return lower.substr(0,1).toUpperCase() + lower.substr(1); +} + +/** + * Returns an array containing the names of all the directories in the + * current document URL + */ +function getDirectoriesInURL() +{ + var trail = document.location.pathname.split( PATH_SEPARATOR ); + + // check whether last section is a file or a directory + var lastcrumb = trail[trail.length-1]; + for( var i = 0; i < FILE_EXTENSIONS.length; i++ ) + { + if( lastcrumb.indexOf( FILE_EXTENSIONS[i] ) ) + { + // it is, remove it and send results + return trail.slice( 1, trail.length-1 ); + } + } + + // it's not; send the trail unmodified + return trail.slice( 1, trail.length ); +} + +/* ======================================================================== + BREADCRUMB FUNCTIONALITY + ======================================================================== */ +/** + * Return a two-dimensional array describing the breadcrumbs based on the + * array of directories passed in. + */ +function getBreadcrumbs( dirs ) +{ + var prefix = "/"; + var postfix = "/"; + + // the array we will return + var crumbs = new Array(); + + if( dirs != null ) + { + for( var i = 0; i < dirs.length; i++ ) + { + prefix += dirs[i] + postfix; + crumbs.push( new Array( dirs[i], prefix ) ); + } + } + + // preprend the PREPREND_CRUMBS + if(PREPREND_CRUMBS.length > 0 ) + { + return PREPREND_CRUMBS.concat( crumbs ); + } + + return crumbs; +} + +/** + * Return a string containing a simple text breadcrumb trail based on the + * two-dimensional array passed in. + */ +function getCrumbTrail( crumbs ) +{ + var xhtml = DISPLAY_PREPREND; + + for( var i = 0; i < crumbs.length; i++ ) + { + xhtml += '<a href="' + crumbs[i][1] + '" >'; + xhtml += unescape( crumbs[i][0] ) + '</a>'; + if( i != (crumbs.length-1) ) + { + xhtml += DISPLAY_SEPARATOR; + } + } + + xhtml += DISPLAY_POSTPREND; + + return xhtml; +} + +/** + * Return a string containing an XHTML breadcrumb trail based on the + * two-dimensional array passed in. + */ +function getCrumbTrailXHTML( crumbs ) +{ + var xhtml = '<span class="' + CSS_CLASS_TRAIL + '">'; + xhtml += DISPLAY_PREPREND; + + for( var i = 0; i < crumbs.length; i++ ) + { + xhtml += '<a href="' + crumbs[i][1] + '" class="' + CSS_CLASS_CRUMB + '">'; + xhtml += unescape( crumbs[i][0] ) + '</a>'; + if( i != (crumbs.length-1) ) + { + xhtml += '<span class="' + CSS_CLASS_SEPARATOR + '">' + DISPLAY_SEPARATOR + '</span>'; + } + } + + xhtml += DISPLAY_POSTPREND; + xhtml += '</span>'; + + return xhtml; +} + +/* ======================================================================== + PRINT BREADCRUMB TRAIL + ======================================================================== */ + +// check if we're local; if so, only print the PREPREND_CRUMBS +if( document.location.href.toLowerCase().indexOf( "http://" ) == -1 ) +{ + document.write( getCrumbTrail( getBreadcrumbs() ) ); +} +else +{ + document.write( getCrumbTrail( getBreadcrumbs( getDirectoriesInURL() ) ) ); +} + Added: avro/site/publish/docs/1.8.2/skin/fontsize.js URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/fontsize.js?rev=1797063&view=auto ============================================================================== --- avro/site/publish/docs/1.8.2/skin/fontsize.js (added) +++ avro/site/publish/docs/1.8.2/skin/fontsize.js Wed May 31 15:48:43 2017 @@ -0,0 +1,166 @@ +/* +* Licensed to the Apache Software Foundation (ASF) under one or more +* contributor license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright ownership. +* The ASF licenses this file to You under the Apache License, Version 2.0 +* (the "License"); you may not use this file except in compliance with +* the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +function init() +{ //embedded in the doc + //ndeSetTextSize(); +} + +function checkBrowser(){ + if (!document.getElementsByTagName){ + return true; + } + else{ + return false; + } +} + + +function ndeSetTextSize(chgsize,rs) +{ + var startSize; + var newSize; + + if (!checkBrowser) + { + return; + } + + startSize = parseInt(ndeGetDocTextSize()); + + if (!startSize) + { + startSize = 16; + } + + switch (chgsize) + { + case 'incr': + newSize = startSize + 2; + break; + + case 'decr': + newSize = startSize - 2; + break; + + case 'reset': + if (rs) {newSize = rs;} else {newSize = 16;} + break; + + default: + try{ + newSize = parseInt(ndeReadCookie("nde-textsize")); + } + catch(e){ + alert(e); + } + + if (!newSize || newSize == 'NaN') + { + newSize = startSize; + } + break; + + } + + if (newSize < 10) + { + newSize = 10; + } + + newSize += 'px'; + + document.getElementsByTagName('html')[0].style.fontSize = newSize; + document.getElementsByTagName('body')[0].style.fontSize = newSize; + + ndeCreateCookie("nde-textsize", newSize, 365); +} + +function ndeGetDocTextSize() +{ + if (!checkBrowser) + { + return 0; + } + + var size = 0; + var body = document.getElementsByTagName('body')[0]; + + if (body.style && body.style.fontSize) + { + size = body.style.fontSize; + } + else if (typeof(getComputedStyle) != 'undefined') + { + size = getComputedStyle(body,'').getPropertyValue('font-size'); + } + else if (body.currentStyle) + { + size = body.currentStyle.fontSize; + } + + //fix IE bug + if( isNaN(size)){ + if(size.substring(size.length-1)=="%"){ + return + } + + } + + return size; + +} + + + +function ndeCreateCookie(name,value,days) +{ + var cookie = name + "=" + value + ";"; + + if (days) + { + var date = new Date(); + date.setTime(date.getTime()+(days*24*60*60*1000)); + cookie += " expires=" + date.toGMTString() + ";"; + } + cookie += " path=/"; + + document.cookie = cookie; + +} + +function ndeReadCookie(name) +{ + var nameEQ = name + "="; + var ca = document.cookie.split(';'); + + + for(var i = 0; i < ca.length; i++) + { + var c = ca[i]; + while (c.charAt(0) == ' ') + { + c = c.substring(1, c.length); + } + + ctest = c.substring(0,name.length); + + if(ctest == name){ + return c.substring(nameEQ.length,c.length); + } + } + return null; +} Added: avro/site/publish/docs/1.8.2/skin/getBlank.js URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/getBlank.js?rev=1797063&view=auto ============================================================================== --- avro/site/publish/docs/1.8.2/skin/getBlank.js (added) +++ avro/site/publish/docs/1.8.2/skin/getBlank.js Wed May 31 15:48:43 2017 @@ -0,0 +1,40 @@ +/* +* Licensed to the Apache Software Foundation (ASF) under one or more +* contributor license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright ownership. +* The ASF licenses this file to You under the Apache License, Version 2.0 +* (the "License"); you may not use this file except in compliance with +* the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +/** + * getBlank script - when included in a html file and called from a form text field, will set the value of this field to "" + * if the text value is still the standard value. + * getPrompt script - when included in a html file and called from a form text field, will set the value of this field to the prompt + * if the text value is empty. + * + * Typical usage: + * <script type="text/javascript" language="JavaScript" src="getBlank.js"></script> + * <input type="text" id="query" value="Search the site:" onFocus="getBlank (this, 'Search the site:');" onBlur="getBlank (this, 'Search the site:');"/> + */ +<!-- +function getBlank (form, stdValue){ +if (form.value == stdValue){ + form.value = ''; + } +return true; +} +function getPrompt (form, stdValue){ +if (form.value == ''){ + form.value = stdValue; + } +return true; +} +//--> Added: avro/site/publish/docs/1.8.2/skin/getMenu.js URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/getMenu.js?rev=1797063&view=auto ============================================================================== --- avro/site/publish/docs/1.8.2/skin/getMenu.js (added) +++ avro/site/publish/docs/1.8.2/skin/getMenu.js Wed May 31 15:48:43 2017 @@ -0,0 +1,45 @@ +/* +* Licensed to the Apache Software Foundation (ASF) under one or more +* contributor license agreements. See the NOTICE file distributed with +* this work for additional information regarding copyright ownership. +* The ASF licenses this file to You under the Apache License, Version 2.0 +* (the "License"); you may not use this file except in compliance with +* the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +/** + * This script, when included in a html file, can be used to make collapsible menus + * + * Typical usage: + * <script type="text/javascript" language="JavaScript" src="menu.js"></script> + */ + +if (document.getElementById){ + document.write('<style type="text/css">.menuitemgroup{display: none;}</style>') +} + + +function SwitchMenu(obj, thePath) +{ +var open = 'url("'+thePath + 'images/chapter_open.gif")'; +var close = 'url("'+thePath + 'images/chapter.gif")'; + if(document.getElementById) { + var el = document.getElementById(obj); + var title = document.getElementById(obj+'Title'); + + if(el.style.display != "block"){ + title.style.backgroundImage = open; + el.style.display = "block"; + }else{ + title.style.backgroundImage = close; + el.style.display = "none"; + } + }// end - if(document.getElementById) +}//end - function SwitchMenu(obj) Added: avro/site/publish/docs/1.8.2/skin/images/README.txt URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/README.txt?rev=1797063&view=auto ============================================================================== --- avro/site/publish/docs/1.8.2/skin/images/README.txt (added) +++ avro/site/publish/docs/1.8.2/skin/images/README.txt Wed May 31 15:48:43 2017 @@ -0,0 +1 @@ +The images in this directory are used if the current skin lacks them. Added: avro/site/publish/docs/1.8.2/skin/images/add.jpg URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/add.jpg?rev=1797063&view=auto ============================================================================== Binary file - no diff available. Propchange: avro/site/publish/docs/1.8.2/skin/images/add.jpg ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: avro/site/publish/docs/1.8.2/skin/images/apache-thanks.png URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/apache-thanks.png?rev=1797063&view=auto ============================================================================== Binary file - no diff available. Propchange: avro/site/publish/docs/1.8.2/skin/images/apache-thanks.png ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: avro/site/publish/docs/1.8.2/skin/images/built-with-cocoon.gif URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/built-with-cocoon.gif?rev=1797063&view=auto ============================================================================== Binary file - no diff available. Propchange: avro/site/publish/docs/1.8.2/skin/images/built-with-cocoon.gif ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: avro/site/publish/docs/1.8.2/skin/images/built-with-forrest-button.png URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/built-with-forrest-button.png?rev=1797063&view=auto ============================================================================== Binary file - no diff available. Propchange: avro/site/publish/docs/1.8.2/skin/images/built-with-forrest-button.png ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: avro/site/publish/docs/1.8.2/skin/images/chapter.gif URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/chapter.gif?rev=1797063&view=auto ============================================================================== Binary file - no diff available. Propchange: avro/site/publish/docs/1.8.2/skin/images/chapter.gif ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: avro/site/publish/docs/1.8.2/skin/images/chapter_open.gif URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/chapter_open.gif?rev=1797063&view=auto ============================================================================== Binary file - no diff available. Propchange: avro/site/publish/docs/1.8.2/skin/images/chapter_open.gif ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: avro/site/publish/docs/1.8.2/skin/images/current.gif URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/current.gif?rev=1797063&view=auto ============================================================================== Binary file - no diff available. Propchange: avro/site/publish/docs/1.8.2/skin/images/current.gif ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: avro/site/publish/docs/1.8.2/skin/images/error.png URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/error.png?rev=1797063&view=auto ============================================================================== Binary file - no diff available. Propchange: avro/site/publish/docs/1.8.2/skin/images/error.png ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: avro/site/publish/docs/1.8.2/skin/images/external-link.gif URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/external-link.gif?rev=1797063&view=auto ============================================================================== Binary file - no diff available. Propchange: avro/site/publish/docs/1.8.2/skin/images/external-link.gif ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: avro/site/publish/docs/1.8.2/skin/images/fix.jpg URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/fix.jpg?rev=1797063&view=auto ============================================================================== Binary file - no diff available. Propchange: avro/site/publish/docs/1.8.2/skin/images/fix.jpg ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: avro/site/publish/docs/1.8.2/skin/images/forrest-credit-logo.png URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/forrest-credit-logo.png?rev=1797063&view=auto ============================================================================== Binary file - no diff available. Propchange: avro/site/publish/docs/1.8.2/skin/images/forrest-credit-logo.png ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: avro/site/publish/docs/1.8.2/skin/images/hack.jpg URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/hack.jpg?rev=1797063&view=auto ============================================================================== Binary file - no diff available. Propchange: avro/site/publish/docs/1.8.2/skin/images/hack.jpg ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: avro/site/publish/docs/1.8.2/skin/images/header_white_line.gif URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/header_white_line.gif?rev=1797063&view=auto ============================================================================== Binary file - no diff available. Propchange: avro/site/publish/docs/1.8.2/skin/images/header_white_line.gif ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: avro/site/publish/docs/1.8.2/skin/images/info.png URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/info.png?rev=1797063&view=auto ============================================================================== Binary file - no diff available. Propchange: avro/site/publish/docs/1.8.2/skin/images/info.png ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: avro/site/publish/docs/1.8.2/skin/images/instruction_arrow.png URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/instruction_arrow.png?rev=1797063&view=auto ============================================================================== Binary file - no diff available. Propchange: avro/site/publish/docs/1.8.2/skin/images/instruction_arrow.png ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: avro/site/publish/docs/1.8.2/skin/images/label.gif URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/label.gif?rev=1797063&view=auto ============================================================================== Binary file - no diff available. Propchange: avro/site/publish/docs/1.8.2/skin/images/label.gif ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: avro/site/publish/docs/1.8.2/skin/images/page.gif URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/page.gif?rev=1797063&view=auto ============================================================================== Binary file - no diff available. Propchange: avro/site/publish/docs/1.8.2/skin/images/page.gif ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: avro/site/publish/docs/1.8.2/skin/images/pdfdoc.gif URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/pdfdoc.gif?rev=1797063&view=auto ============================================================================== Binary file - no diff available. Propchange: avro/site/publish/docs/1.8.2/skin/images/pdfdoc.gif ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: avro/site/publish/docs/1.8.2/skin/images/poddoc.png URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/poddoc.png?rev=1797063&view=auto ============================================================================== Binary file - no diff available. Propchange: avro/site/publish/docs/1.8.2/skin/images/poddoc.png ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: avro/site/publish/docs/1.8.2/skin/images/printer.gif URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/printer.gif?rev=1797063&view=auto ============================================================================== Binary file - no diff available. Propchange: avro/site/publish/docs/1.8.2/skin/images/printer.gif ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: avro/site/publish/docs/1.8.2/skin/images/rc-b-l-15-1body-2menu-3menu.png URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/rc-b-l-15-1body-2menu-3menu.png?rev=1797063&view=auto ============================================================================== Binary file - no diff available. Propchange: avro/site/publish/docs/1.8.2/skin/images/rc-b-l-15-1body-2menu-3menu.png ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: avro/site/publish/docs/1.8.2/skin/images/rc-b-r-15-1body-2menu-3menu.png URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/rc-b-r-15-1body-2menu-3menu.png?rev=1797063&view=auto ============================================================================== Binary file - no diff available. Propchange: avro/site/publish/docs/1.8.2/skin/images/rc-b-r-15-1body-2menu-3menu.png ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: avro/site/publish/docs/1.8.2/skin/images/rc-b-r-5-1header-2tab-selected-3tab-selected.png URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/rc-b-r-5-1header-2tab-selected-3tab-selected.png?rev=1797063&view=auto ============================================================================== Binary file - no diff available. Propchange: avro/site/publish/docs/1.8.2/skin/images/rc-b-r-5-1header-2tab-selected-3tab-selected.png ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: avro/site/publish/docs/1.8.2/skin/images/rc-t-l-5-1header-2searchbox-3searchbox.png URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/rc-t-l-5-1header-2searchbox-3searchbox.png?rev=1797063&view=auto ============================================================================== Binary file - no diff available. Propchange: avro/site/publish/docs/1.8.2/skin/images/rc-t-l-5-1header-2searchbox-3searchbox.png ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: avro/site/publish/docs/1.8.2/skin/images/rc-t-l-5-1header-2tab-selected-3tab-selected.png URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/rc-t-l-5-1header-2tab-selected-3tab-selected.png?rev=1797063&view=auto ============================================================================== Binary file - no diff available. Propchange: avro/site/publish/docs/1.8.2/skin/images/rc-t-l-5-1header-2tab-selected-3tab-selected.png ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: avro/site/publish/docs/1.8.2/skin/images/rc-t-l-5-1header-2tab-unselected-3tab-unselected.png URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/rc-t-l-5-1header-2tab-unselected-3tab-unselected.png?rev=1797063&view=auto ============================================================================== Binary file - no diff available. Propchange: avro/site/publish/docs/1.8.2/skin/images/rc-t-l-5-1header-2tab-unselected-3tab-unselected.png ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: avro/site/publish/docs/1.8.2/skin/images/rc-t-r-15-1body-2menu-3menu.png URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/rc-t-r-15-1body-2menu-3menu.png?rev=1797063&view=auto ============================================================================== Binary file - no diff available. Propchange: avro/site/publish/docs/1.8.2/skin/images/rc-t-r-15-1body-2menu-3menu.png ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: avro/site/publish/docs/1.8.2/skin/images/rc-t-r-5-1header-2searchbox-3searchbox.png URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/rc-t-r-5-1header-2searchbox-3searchbox.png?rev=1797063&view=auto ============================================================================== Binary file - no diff available. Propchange: avro/site/publish/docs/1.8.2/skin/images/rc-t-r-5-1header-2searchbox-3searchbox.png ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: avro/site/publish/docs/1.8.2/skin/images/rc-t-r-5-1header-2tab-selected-3tab-selected.png URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/rc-t-r-5-1header-2tab-selected-3tab-selected.png?rev=1797063&view=auto ============================================================================== Binary file - no diff available. Propchange: avro/site/publish/docs/1.8.2/skin/images/rc-t-r-5-1header-2tab-selected-3tab-selected.png ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: avro/site/publish/docs/1.8.2/skin/images/rc-t-r-5-1header-2tab-unselected-3tab-unselected.png URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/rc-t-r-5-1header-2tab-unselected-3tab-unselected.png?rev=1797063&view=auto ============================================================================== Binary file - no diff available. Propchange: avro/site/publish/docs/1.8.2/skin/images/rc-t-r-5-1header-2tab-unselected-3tab-unselected.png ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: avro/site/publish/docs/1.8.2/skin/images/remove.jpg URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/remove.jpg?rev=1797063&view=auto ============================================================================== Binary file - no diff available. Propchange: avro/site/publish/docs/1.8.2/skin/images/remove.jpg ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: avro/site/publish/docs/1.8.2/skin/images/rss.png URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/rss.png?rev=1797063&view=auto ============================================================================== Binary file - no diff available. Propchange: avro/site/publish/docs/1.8.2/skin/images/rss.png ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: avro/site/publish/docs/1.8.2/skin/images/spacer.gif URL: http://svn.apache.org/viewvc/avro/site/publish/docs/1.8.2/skin/images/spacer.gif?rev=1797063&view=auto ============================================================================== Binary file - no diff available. Propchange: avro/site/publish/docs/1.8.2/skin/images/spacer.gif ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream
