2
在spark中是否支持UDT for java?在Spark中支持java的用户定义类型
将JavaRDD转换为JavaSchemaRDD时,JavaSQLContext是否支持用户定义类型(UDT)?
如果是,是否有任何示例来演示此功能。
在spark中是否支持UDT for java?在Spark中支持java的用户定义类型
将JavaRDD转换为JavaSchemaRDD时,JavaSQLContext是否支持用户定义类型(UDT)?
如果是,是否有任何示例来演示此功能。
是的,最简单的方法是通过反射来推断它。 See the SparkSQL documentation然后单击Java选项卡。然后,阅读标记
Inferring the Schema Using Reflection
编辑从评论
我不知道的是,Java API的作为很容易充实的一个阶,如此看来,以巢类型,你的节可能需要自己构建模式:
//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);
该部分使用具有简单数据类型的Java Bean。如果Person类(在示例中)具有名为Address的自定义类型的属性,该怎么办? – malli 2015-02-23 18:16:36
你试过了吗?它推断整个过程。 – 2015-02-23 18:25:04
是的,我试过了。我得到“scala.MatchError:类[地址;(类java.lang.Class)” – malli 2015-02-24 02:17:57