Параметр Apache Spark to_json - PullRequest
       2

Параметр Apache Spark to_json

0 голосов
/ 20 ноября 2018

Я либо не знаю, что я ищу, либо отсутствует документация. Последнее, кажется, имеет место, учитывая это:

http://spark.apache.org/docs/2.2.2/api/java/org/apache/spark/sql/functions.html#to_json-org.apache.spark.sql.Column-java.util.Map-

"параметры - параметры, управляющие преобразованием столбца структуры в строку json. Принимает те же параметры и источник данных json."

Отлично! Итак, какие у меня варианты?

Я делаю что-то вроде этого:

Dataset<Row> formattedReader = reader
    .withColumn("id", lit(id))
    .withColumn("timestamp", lit(timestamp))
    .withColumn("data", to_json(struct("record_count")));

... и я получаю такой результат:

{
  "id": "ABC123",
  "timestamp": "2018-11-16 20:40:26.108",
  "data": "{\"record_count\": 989}"
}

Мне бы хотелось (убрать обратную косую черту и кавычки из «данных»):

{
  "id": "ABC123",
  "timestamp": "2018-11-16 20:40:26.108",
  "data": {"record_count": 989}
}

Это один из вариантов случайно? Есть ли лучшее руководство для Spark? Самое расстраивающее в Spark - это не то, что я делаю, а то, что он может делать.

1 Ответ

0 голосов
/ 20 ноября 2018

Вы дважды кодируете json для поля record_count.Удалить to_json.одна только структура должна быть достаточной.

Как изменить код на что-то вроде этого.

Dataset<Row> formattedReader = reader
    .withColumn("id", lit(id))
    .withColumn("timestamp", lit(timestamp))
    .withColumn("data", struct("record_count"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...