use of cascading.tuple.Tuple in project SpyGlass by ParallelAI.
the class JDBCScheme method sink.
@Override
public void sink(FlowProcess<JobConf> flowProcess, SinkCall<Object[], OutputCollector> sinkCall) throws IOException {
// it's ok to use NULL here so the collector does not write anything
TupleEntry tupleEntry = sinkCall.getOutgoingEntry();
OutputCollector outputCollector = sinkCall.getOutput();
if (updateBy != null) {
Tuple allValues = tupleEntry.selectTuple(updateValueFields);
Tuple updateValues = tupleEntry.selectTuple(updateByFields);
allValues = cleanTuple(allValues);
TupleRecord key = new TupleRecord(allValues);
if (updateValues.equals(updateIfTuple))
outputCollector.collect(key, null);
else
outputCollector.collect(key, key);
return;
}
Tuple result = tupleEntry.selectTuple(getSinkFields());
result = cleanTuple(result);
outputCollector.collect(new TupleRecord(result), null);
}
use of cascading.tuple.Tuple in project SpyGlass by ParallelAI.
the class HBaseScheme method source.
@Override
public boolean source(FlowProcess<JobConf> flowProcess, SourceCall<Object[], RecordReader> sourceCall) throws IOException {
Tuple result = new Tuple();
Object key = sourceCall.getContext()[0];
Object value = sourceCall.getContext()[1];
boolean hasNext = sourceCall.getInput().next(key, value);
if (!hasNext) {
return false;
}
// Skip nulls
if (key == null || value == null) {
return true;
}
ImmutableBytesWritable keyWritable = (ImmutableBytesWritable) key;
Result row = (Result) value;
result.add(keyWritable);
for (int i = 0; i < this.familyNames.length; i++) {
String familyName = this.familyNames[i];
byte[] familyNameBytes = Bytes.toBytes(familyName);
Fields fields = this.valueFields[i];
for (int k = 0; k < fields.size(); k++) {
String fieldName = (String) fields.get(k);
byte[] fieldNameBytes = Bytes.toBytes(fieldName);
byte[] cellValue = row.getValue(familyNameBytes, fieldNameBytes);
result.add(cellValue != null ? new ImmutableBytesWritable(cellValue) : null);
}
}
sourceCall.getIncomingEntry().setTuple(result);
return true;
}
use of cascading.tuple.Tuple in project SpyGlass by ParallelAI.
the class HBaseRawScheme method source.
@SuppressWarnings("unchecked")
@Override
public boolean source(FlowProcess<JobConf> flowProcess, SourceCall<Object[], RecordReader> sourceCall) throws IOException {
Tuple result = new Tuple();
Object key = sourceCall.getContext()[0];
Object value = sourceCall.getContext()[1];
boolean hasNext = sourceCall.getInput().next(key, value);
if (!hasNext) {
return false;
}
// Skip nulls
if (key == null || value == null) {
return true;
}
ImmutableBytesWritable keyWritable = (ImmutableBytesWritable) key;
Result row = (Result) value;
result.add(keyWritable);
result.add(row);
sourceCall.getIncomingEntry().setTuple(result);
return true;
}
use of cascading.tuple.Tuple in project SpyGlass by ParallelAI.
the class HBaseRawScheme method sink.
@SuppressWarnings("unchecked")
@Override
public void sink(FlowProcess<JobConf> flowProcess, SinkCall<Object[], OutputCollector> sinkCall) throws IOException {
TupleEntry tupleEntry = sinkCall.getOutgoingEntry();
OutputCollector outputCollector = sinkCall.getOutput();
Tuple key = tupleEntry.selectTuple(RowKeyField);
Object okey = key.getObject(0);
ImmutableBytesWritable keyBytes = getBytes(okey);
Put put = new Put(keyBytes.get());
Fields outFields = tupleEntry.getFields().subtract(RowKeyField);
if (null != outFields) {
TupleEntry values = tupleEntry.selectEntry(outFields);
for (int n = 0; n < values.getFields().size(); n++) {
Object o = values.get(n);
ImmutableBytesWritable valueBytes = getBytes(o);
Comparable field = outFields.get(n);
ColumnName cn = parseColumn((String) field);
if (null == cn.family) {
if (n >= familyNames.length)
cn.family = familyNames[familyNames.length - 1];
else
cn.family = familyNames[n];
}
if (null != o || writeNulls)
put.add(Bytes.toBytes(cn.family), Bytes.toBytes(cn.name), valueBytes.get());
}
}
outputCollector.collect(null, put);
}
Aggregations