Код: Выделить всё
StructType objectEntities = new StructType(new StructField[]{
new StructField("id",DataTypes.StringType,true, Metadata.empty()),
new StructField("type",DataTypes.StringType,true,Metadata.empty())
});
StructType subjectEntities = new StructType(new StructField[]{
new StructField("id",DataTypes.StringType,true, Metadata.empty()),
new StructField("type",DataTypes.StringType,true,Metadata.empty())
});
StructType innerLevelStruct = new StructType();
innerLevelStruct = innerLevelStruct.add("f1",DataTypes.StringType,false);
innerLevelStruct = innerLevelStruct.add("f2",DataTypes.StringType,false);
innerLevelStruct = innerLevelStruct.add("f3",DataTypes.StringType,false);
innerLevelStruct = innerLevelStruct.add("f4",DataTypes.StringType,false);
innerLevelStruct = innerLevelStruct.add("f5",objectEntities,true);
innerLevelStruct = innerLevelStruct.add("f6",subjectEntities,true);
StructType outerLayerStruct = new StructType();
outerLayerStruct = outerLayerStruct.add("id",DataTypes.StringType,false);
outerLayerStruct = outerLayerStruct.add("type",DataTypes.StringType,false);
outerLayerStruct = outerLayerStruct.add("state",DataTypes.StringType,false);
outerLayerStruct = outerLayerStruct.add("items",innerLevelStruct,false);
StructType entityDetailsSchema = new StructType();
entityDetailsSchema = entityDetailsSchema.add("id",DataTypes.StringType,false);
entityDetailsSchema = entityDetailsSchema.add("cols",outerLayerStruct,false);
Код: Выделить всё
List entries = new ArrayList();
entries.add(RowFactory.create("id",List.of(
"testId","testType","testState",
List.of(
"f1Val","f2Val","f3Val","f4Val",List.of("a","b"),List.of("c","v")
)
)));
Dataset output = sparkSession.createDataFrame(entries,entityDetailsSchema);
Код: Выделить всё
sparkSession = SparkSession.builder()
.master("local[1]")
.appName("TestSpark")
.getOrCreate();
Код: Выделить всё
java.lang.IllegalArgumentException: The value ([testId, testType, testState, [f1Val, f2Val, f3Val, f4Val, [a, b], [c, v]]]) of the type (java.util.ImmutableCollections.ListN) cannot be converted to struct
Код: Выделить всё
output.as(Encoders.bean(MyPojoClass.class))
.foreachPartition(partition -> {
// do work
});
Код: Выделить всё
org.apache.spark.sql.AnalysisException: [UNSUPPORTED_DESERIALIZER.DATA_TYPE_MISMATCH] The deserializer is not supported: need a(n) "ARRAY" field but got "STRUCT
Подробнее здесь: https://stackoverflow.com/questions/787 ... lex-schema
Мобильная версия