Это похоже на проблему с тем, как вы создаете schema
, который вы предоставляете.
Пожалуйста, обратитесь к фрагменту кода ниже, чтобы увидеть, работает ли он для вас.
String inputFile = "/tmp/person01.csv";
StructField[] structFieldsFirst = new StructField[4];
structFieldsFirst[0] = new StructField("field1", DataTypes.IntegerType, true, Metadata.empty());
structFieldsFirst[1] = new StructField("field2", DataTypes.StringType, true, Metadata.empty());
structFieldsFirst[2] = new StructField("field3", DataTypes.DoubleType, true, Metadata.empty());
structFieldsFirst[3] = new StructField("field4", DataTypes.IntegerType, true, Metadata.empty());
StructType schema = new StructType(structFieldsFirst);
Dataset<Person> person = spark.read().schema(schema).csv(inputFile)
.as(Encoders.bean(Person.class));
person.show(10, false);
Класс Person такой же, как вы упомянули:
public class Person {
int field1;
String field2;
double field3;
int field4;
}
Ввод:
1,field2,4
2,field2,5
3,field2,6
Этот фрагмент кода возвращает следующий вывод:
+------+------+------+------+
|field1|field2|field3|field4|
+------+------+------+------+
|1 |field2|4.0 |null |
|2 |field2|5.0 |null |
|3 |field2|6.0 |null |
+------+------+------+------+