@ProcessElement public void processElement(DoFn<TableRow, Mutation>.ProcessContext c) throws Exception { TableRow row = c.element(); //Use UUID for each HBase item's row key Put p = new Put(java.util.UUID.randomUUID().toString().getBytes()); for (Map.Entry<String, Object> field : row.entrySet()) { p.addColumn(FAMILY, field.getKey().getBytes(), ((String) field.getValue()).getBytes()); } c.output(p); } };
static TableRow convertNumbers(TableRow tableRow) { for (TableRow.Entry entry : tableRow.entrySet()) { if (entry.getValue() instanceof Integer) { entry.setValue(Long.valueOf((Integer) entry.getValue())); } } return tableRow; } }
/** * Convert TableRow to Entity * * @param row TableRow of bigquery * @return converted Entity * @throws ParseException */ public Entity convertTableRowToEntity(TableRow row) throws ParseException { String keyName = row.get(keyColumn).toString(); Key key = getKey(keyName); Entity.Builder builder = Entity.newBuilder().setKey(key); Set<Map.Entry<String, Object>> entries = row.entrySet(); for (Map.Entry<String, Object> entry : entries) { // Skip on the key column if (entry.getKey().equals(keyColumn)) { continue; } // Put a value in the builder String propertyName = entry.getKey(); Object value = entry.getValue(); Value v = convertToDatastoreValue(propertyName, value); if (v != null) { builder.putProperties(propertyName, v); } } return builder.build(); }
static String canonicalFormat(TableRow row) { List<String> entries = Lists.newArrayListWithCapacity(row.size()); for (Map.Entry<String, Object> entry : row.entrySet()) { entries.add(entry.getKey() + ":" + entry.getValue()); } Collections.sort(entries); return Joiner.on(",").join(entries); }