Мой ввод был kafka-потоком только с одним значением, разделенным запятыми. Похоже на это.
"идентификатор, страна, метки времени"
Я уже разделил набор данных так, чтобы у меня было что-то вроде следующего структурированного потока
Dataset<Row> words = df
.selectExpr("CAST (value AS STRING)")
.as(Encoders.STRING())
.withColumn("id", split(col("value"), ",").getItem(0))
.withColumn("country", split(col("value"), ",").getItem(1))
.withColumn("timestamp", split(col("value"), ",").getItem(2));
+----+---------+----------+
|id |country |timestamp |
+----+---------+----------+
|2922|de |1231231232|
|4195|de |1231232424|
|6796|fr |1232412323|
+----+---------+----------+
Теперь у меня есть набор данных с 3 столбцами. Теперь я хочу использовать записи в каждой строке в пользовательской функции, например
Dataset<String> words.map(row -> {
//do something with every entry of each row e.g.
Person person = new Person(id, country, timestamp);
String name = person.getName();
return name;
};
В конце я хочу снова выделить строку через запятую.