Этот вопрос такой же, как и здесь.У этого есть принятый ответ для скалы.Но мне нужно реализовать то же самое в Java.
Как выбрать подмножество полей из столбца массива в Spark?
import org.apache.spark.sql.Row
case class Record(id: String, size: Int)
val dropUseless = udf((xs: Seq[Row]) => xs.map{
case Row(id: String, size: Int, _) => Record(id, size)
})
df.select(dropUseless($"subClasss"))
Я пытался реализовать вышеупомянутое в Java, но не смог получить егоза работой.Ценю любую помощь.Спасибо
this.spark.udf().register("dropUseless",
(UDF1<Seq<Row>, Seq<Row>>) rows -> {
Seq<Row> seq = JavaConversions
.asScalaIterator(
JavaConversions.seqAsJavaList(rows)
.stream()
.map((Row t) -> RowFactory.create(new Object[] {t.getAs("id"), t.getAs("size")})
).iterator())
.toSeq();
return seq;
}, DataTypes.createStructType(Arrays.asList(
DataTypes.createStructField("id", DataTypes.StringType, false),
DataTypes.createStructField("size", DataTypes.IntegerType, true))
)
);