Моя схема:
StructField[] fields = new StructField[] {
DataTypes.createStructField("id", DataTypes.LongType, true),
DataTypes.createStructField("name", DataTypes.StringType, true)
}
StructType schema = new StructType(fields);
Я читаю несколько файлов CSV из-за неподдерживаемого сжатия. Я не использую .read().csv()
. Во всяком случае я прочитал мой файл CSV после распаковки его. Я перебираю каждую строку и создаю новую строку из строки, разделенной разделителем:,
List<Row> rows = new ArrayList();
Row row = RowFactory.create(line.split(","));
rows.add(row);
List<Tuple2<String, List<Row>> csvRows = new ArrayList();
rows.add(new Tuple2("..", rows);
Мои строки в CSV таковы:
"1","ABCD"
"2","EFGH"
Когда я пытаюсь создатьDataset<Row>
из моего списка и вызова на нем я получаю ClassCastException String cannot be cast to Long
.
Dataset<Row> set = spartSession.createDataFrame(csvRows.get(0)._2, schema);
set.show();
Но «1» должен быть преобразуемым из String в Long.