2

spark中是否支持UDT for java?

将 JavaRDD 转换为 JavaSchemaRDD 时,JavaSQLContext 是否支持用户定义类型 (UDT)?

如果是,是否有任何示例来证明该能力。

4

1 回答 1

3

是的,最简单的方法是通过反射来推断它。请参阅 SparkSQL 文档并单击 Java 选项卡。然后,阅读标记为的部分

使用反射推断模式

从评论编辑

我不确定 Java API 是否像 scala 一样容易充实,因此似乎为了嵌套类型,您可能需要自己构建模式:

//First create the address
List<StructField> addressFields = new ArrayList<StructField>();
fields.add(DataType.createStructField("street", DataType.StringType, true));    
StructType addressStruct = DataType.createStructType(addressFields)

//Then create the person, using the address struct
List<StructField> personFields = new ArrayList<StructField>();
fields.add(DataType.createStructField("name", DataType.StringType, true));
fields.add(DataType.createStructField("age", DataType.IntType, true));
fields.add(DataType.createStructField("address", addressStruct, true));

StructType schema = DataType.createStructType(fields);
于 2015-02-23T18:12:46.637 回答