use of org.apache.crunch.test.Person in project crunch by cloudera.
the class AvroDeepCopierTest method testDeepCopyReflect.
@Test
public void testDeepCopyReflect() {
Person person = new Person();
person.setName("John Doe");
person.setAge(42);
person.setSiblingnames(Lists.<CharSequence>newArrayList());
Person deepCopyPerson = new AvroDeepCopier.AvroReflectDeepCopier<Person>(Person.class, Person.SCHEMA$).deepCopy(person);
assertEquals(person, deepCopyPerson);
assertNotSame(person, deepCopyPerson);
}
use of org.apache.crunch.test.Person in project crunch by cloudera.
the class AvroTableTypeTest method testGetDetachedValue.
@Test
public void testGetDetachedValue() {
Integer integerValue = 42;
Person person = new Person();
person.setName("John Doe");
person.setAge(42);
person.setSiblingnames(Lists.<CharSequence>newArrayList());
Pair<Integer, Person> pair = Pair.of(integerValue, person);
AvroTableType<Integer, Person> tableType = Avros.tableOf(Avros.ints(), Avros.reflects(Person.class));
Pair<Integer, Person> detachedPair = tableType.getDetachedValue(pair);
assertSame(integerValue, detachedPair.first());
assertEquals(person, detachedPair.second());
assertNotSame(person, detachedPair.second());
}
use of org.apache.crunch.test.Person in project crunch by cloudera.
the class AvroTypeSortTest method testSortAvroTypesBySelectedFields.
@Test
public void testSortAvroTypesBySelectedFields() throws Exception {
MRPipeline pipeline = new MRPipeline(AvroTypeSortTest.class);
Person ccc10 = createPerson("CCC", 10);
Person bbb20 = createPerson("BBB", 20);
Person aaa30 = createPerson("AAA", 30);
writeAvroFile(Lists.newArrayList(ccc10, bbb20, aaa30), avroFile);
PCollection<Person> unsorted = pipeline.read(At.avroFile(avroFile.getAbsolutePath(), records(Person.class)));
// Sort by Name
MapFn<Person, String> nameExtractor = new MapFn<Person, String>() {
@Override
public String map(Person input) {
return input.getName().toString();
}
};
PCollection<Person> sortedByName = unsorted.by(nameExtractor, strings()).groupByKey().ungroup().values();
List<Person> sortedByNameList = Lists.newArrayList(sortedByName.materialize());
assertEquals(3, sortedByNameList.size());
assertEquals(aaa30, sortedByNameList.get(0));
assertEquals(bbb20, sortedByNameList.get(1));
assertEquals(ccc10, sortedByNameList.get(2));
// Sort by Age
MapFn<Person, Integer> ageExtractor = new MapFn<Person, Integer>() {
@Override
public Integer map(Person input) {
return input.getAge();
}
};
PCollection<Person> sortedByAge = unsorted.by(ageExtractor, ints()).groupByKey().ungroup().values();
List<Person> sortedByAgeList = Lists.newArrayList(sortedByAge.materialize());
assertEquals(3, sortedByAgeList.size());
assertEquals(ccc10, sortedByAgeList.get(0));
assertEquals(bbb20, sortedByAgeList.get(1));
assertEquals(aaa30, sortedByAgeList.get(2));
pipeline.done();
}
use of org.apache.crunch.test.Person in project crunch by cloudera.
the class AvroTypeSortTest method writeAvroFile.
private void writeAvroFile(List<Person> people, File avroFile) throws IOException {
FileOutputStream outputStream = new FileOutputStream(avroFile);
SpecificDatumWriter<Person> writer = new SpecificDatumWriter<Person>(Person.class);
DataFileWriter<Person> dataFileWriter = new DataFileWriter<Person>(writer);
dataFileWriter.create(Person.SCHEMA$, outputStream);
for (Person person : people) {
dataFileWriter.append(person);
}
dataFileWriter.close();
outputStream.close();
}
use of org.apache.crunch.test.Person in project crunch by cloudera.
the class AvroFileSourceTargetTest method testSpecific.
@Test
public void testSpecific() throws IOException {
GenericRecord savedRecord = new GenericData.Record(Person.SCHEMA$);
savedRecord.put("name", "John Doe");
savedRecord.put("age", 42);
savedRecord.put("siblingnames", Lists.newArrayList("Jimmy", "Jane"));
populateGenericFile(Lists.newArrayList(savedRecord), Person.SCHEMA$);
Pipeline pipeline = new MRPipeline(AvroFileSourceTargetTest.class);
PCollection<Person> genericCollection = pipeline.read(At.avroFile(avroFile.getAbsolutePath(), Avros.records(Person.class)));
List<Person> personList = Lists.newArrayList(genericCollection.materialize());
Person expectedPerson = new Person();
expectedPerson.setName("John Doe");
expectedPerson.setAge(42);
List<CharSequence> siblingNames = Lists.newArrayList();
siblingNames.add("Jimmy");
siblingNames.add("Jane");
expectedPerson.setSiblingnames(siblingNames);
assertEquals(Lists.newArrayList(expectedPerson), Lists.newArrayList(personList));
}
Aggregations