RowUtils { public static Row append(Row row, Object value) { Object[] appendedValues = ObjectArrays.concat(valuesFor(row), value); Row appendedRow = RowFactory.create(appendedValues); return appendedRow; }  static Object toRowValue(Object item, DataType type, Map<RowUtils.RowValueMetadata, Object> metadata); static Object toRowValue(Object item, DataType type); static Row subsetRow(Row row, StructType subsetSchema); static Row set(Row row, String fieldName, Object replacement); static Row append(Row row, Object value); static Row append(Row row, String fieldName, DataType fieldType, boolean nullable, Object value); static Row append(Row row, Row append); static Row remove(Row row, String fieldName); static Row remove(Row row, List<String> fieldNames); static Object[] valuesFor(Row row); static boolean different(Row first, Row second, List<String> valueFieldNames); static Column[] toColumnArray(List<String> columnList);  }
@Test public void testAppendWithoutSchema() { Row row = RowFactory.create("hello", 1, true); Row appendRow = RowUtils.append(row, -50.0); assertEquals(appendRow.length(), 4); assertEquals(appendRow.get(0), "hello"); assertEquals(appendRow.get(1), 1); assertEquals(appendRow.get(2), true); assertEquals(appendRow.get(3), -50.0); }
@Test public void testAppendWithSchema() { StructField field1 = DataTypes.createStructField("field1", DataTypes.StringType, true); StructField field2 = DataTypes.createStructField("field2", DataTypes.IntegerType, true); StructField field3 = DataTypes.createStructField("field3", DataTypes.FloatType, true); StructType schema = DataTypes.createStructType(Lists.newArrayList(field1, field2, field3)); Row row = new RowWithSchema(schema, "hello", 1, 2.0); Row appendRow = RowUtils.append(row, "field4", DataTypes.BooleanType, false, true); appendRow = RowUtils.append(appendRow, "field5", DataTypes.StringType, false, "world"); assertEquals(appendRow.length(), 5); assertEquals(appendRow.getAs("field1"), "hello"); assertEquals(appendRow.getAs("field2"), 1); assertEquals(appendRow.getAs("field3"), 2.0); assertEquals(appendRow.getAs("field4"), true); assertEquals(appendRow.getAs("field5"), "world"); }
@Test public void testAppendRow() { StructField field1 = DataTypes.createStructField("field1", DataTypes.StringType, true); StructField field2 = DataTypes.createStructField("field2", DataTypes.IntegerType, true); StructField field3 = DataTypes.createStructField("field3", DataTypes.FloatType, true); StructType baseSchema = DataTypes.createStructType(Lists.newArrayList(field1, field2, field3)); Row base = new RowWithSchema(baseSchema, "hello", 1, 1.0); StructField field4 = DataTypes.createStructField("field4", DataTypes.StringType, true); StructField field5 = DataTypes.createStructField("field5", DataTypes.IntegerType, true); StructField field6 = DataTypes.createStructField("field6", DataTypes.FloatType, true); StructType appendSchema = DataTypes.createStructType(Lists.newArrayList(field4, field5, field6)); Row append = new RowWithSchema(appendSchema, "world", -1, -1.0); Row appended = RowUtils.append(base, append); Row expected = new RowWithSchema( DataTypes.createStructType(Lists.newArrayList(field1, field2, field3, field4, field5, field6)), "hello", 1, 1.0, "world", -1, -1.0); assertEquals(expected, appended); }