Похоже, что список массивов доступен, функции "массив" и "структура" могут использоваться для создания желаемой схемы:
List<Row> data = Lists.newArrayList(
RowFactory.create(new String[]{"1", "2", "3"}),
RowFactory.create(new String[]{"4", "5", "6"})
);
StructType schema = DataTypes.createStructType(
new StructField[]{
DataTypes.createStructField("name", DataTypes.StringType, true),
DataTypes.createStructField("type", DataTypes.StringType, true),
DataTypes.createStructField("url", DataTypes.StringType, true),
});
Dataset<Row> plain = spark().createDataFrame(data, schema);
Dataset<Row> result = plain.withColumn("references",
array(
struct(col("name"), col("type"), col("url")))).
select("references");
result.show(false);
result.printSchema();
Вывод:
+----------+
|references|
+----------+
|[[1,2,3]] |
|[[4,5,6]] |
+----------+
root
|-- references: array (nullable = false)
| |-- element: struct (containsNull = false)
| | |-- name: string (nullable = true)
| | |-- type: string (nullable = true)
| | |-- url: string (nullable = true)