Я новичок в Spark и хочу внести изменения в существующий протобуф.После внесения изменений я хочу отобразить это сообщение protobuf на строку набора данных Spark.Поскольку сообщение protobuf является сложным и глубоко вложенным.
Я не хочу создавать схему, а затем копировать значения, что утомительно и сложно для написания кода
Примерно так:
Dataset<Row> events = spark
.readStream()
.format("kafka")
.load();
//call mapper
events.mapPartitions()
....
...
//mapper code
ProtoMessage.message
//create schema
StructType SCHEMA = new StructType()
.add("value1", DataTypes.StringType, false)
.add("value2", DataTypes.StringType, false)
//create columns
Object[] columnes = {
message.getValue1(),
message.getValue2()
....
}
//create a row
Stream.<Row>of(new GenericRowWithSchema(columns, SCHEMA));
Однако я не знаю точного количества столбцов (ну, я знаю, но практически невозможно передать весь код), в общем, я хочу получить протобуф, изменить одно поле и затем преобразовать все вРяд данных
Я изучил sparksql-protobuf , но я хочу также скопировать значения после вывода схемы.
Я ценю помощь!