在Spark中支持java的用户定义类型

时间:2015-02-23 16:41:37

标签: apache-spark apache-spark-sql

在spark中是否支持UDT for java?

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

如果是,是否有任何样本来证明这种能力。

1 个答案:

答案 0 :(得分:3)

是的,最简单的方法是通过反射来推断它。 See the SparkSQL documentation并单击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);