У меня есть искровое задание, которое требует записи во внешний источник данных с использованием API REST. API принимает json полезную нагрузку. Каким был бы эффективный способ преобразования набора строк в json?
Формат jsons должен выглядеть примерно так -
'{A: val1, B:val2, C: val3 }
{A: val4, B:val5, C: val6 }
{A: val7, B:val8, C: val9 }'
В настоящее время я думаю об отправке полезной нагрузки foreachpartition
JavaRDD<Row> rowRDD = sqlRDD.map((Function<Row, Row>) record -> {
...
return RowFactory.create (col1, col2, col3);
}).foreachPartition( new MakeRestCall());
class MakeRestCall implements VoidFunction<Iterator<Row>> {
@Override
public void call(Iterator<Row> rowIterator) throws Exception {
StringBuilder sbPayload = new StringBuilder();
while(rowIterator.hasNext()) {
Row row = rowIterator.next();
Gson gson = new Gson();
sbPayload.append( gson.toJson(row));
}
// use http request to send the payload
}
Хотелось бы что-то вроде этой работы или есть ли лучшие способы сделать это?