@Override public boolean process(Record record) { line.set(record.toString()); try { context.write(line, null); } catch (Exception e) { LOGGER.warn("Cannot write record to context", e); } return true; }
private void evaluate2(int from, Record record, StringBuilder buf, ArrayList<Object> results) { if (from >= fields.size()) { results.add(buf.toString()); return; } Object item = fields.get(from); if (item instanceof String) { buf.append(item); evaluate2(from + 1, record, buf, results); } else { String ref = ((Field) item).getName(); if (ref.length() == 0) { buf.append(record.toString()); // @{} means dump string representation of entire record evaluate2(from + 1, record, buf, results); } else { List resolvedValues = record.get(ref); for (Object value : resolvedValues) { StringBuilder buf2 = new StringBuilder(buf); buf2.append(value.toString()); evaluate2(from + 1, record, buf2, results); } } } }
private void evaluate2(int from, Record record, StringBuilder buf, ArrayList<Object> results) { if (from >= fields.size()) { results.add(buf.toString()); return; } Object item = fields.get(from); if (item instanceof String) { buf.append(item); evaluate2(from + 1, record, buf, results); } else { String ref = ((Field) item).getName(); if (ref.length() == 0) { buf.append(record.toString()); // @{} means dump string representation of entire record evaluate2(from + 1, record, buf, results); } else { List resolvedValues = record.get(ref); for (Object value : resolvedValues) { StringBuilder buf2 = new StringBuilder(buf); buf2.append(value.toString()); evaluate2(from + 1, record, buf2, results); } } } }
private String resolveExpressionSimple(String expr, Record record) { Matcher matcher = PATTERN.matcher(expr); StringBuilder buf = new StringBuilder(); int from = 0; while (matcher.find()) { int start = matcher.start(); int end = matcher.end(); buf.append(expr.substring(from, start)); String ref = expr.substring(start + "@{".length(), end - "}".length()); if (ref.length() == 0) { buf.append(record.toString()); // @{} means dump string representation of entire record } else { List resolvedValues = record.getFields().get(ref); Joiner.on(" ").appendTo(buf, resolvedValues); } from = end; } buf.append(expr.substring(from, expr.length())); return buf.toString(); }
private String toString(GenericData.Record avroRecord) { Record record = new Record(); for (Field field : avroRecord.getSchema().getFields()) { record.put(field.name(), avroRecord.get(field.pos())); } return record.toString(); // prints sorted by key for human readability }