Как разобрать многострочный json в наборе данных apache spark java

Есть ли способ проанализировать многострочный файл json с помощью набора данных, вот пример кода

public static void main(String[] args) {

    // creating spark session
    SparkSession spark = SparkSession.builder().appName("Java Spark SQL basic example")
                .config("spark.some.config.option", "some-value").getOrCreate();

    Dataset<Row> df = spark.read().json("D:/sparktestio/input.json");
    df.show();
}

он отлично работает, если json находится в одной строке, но мне это нужно для нескольких строк

Мой JSON-файл

{
  "name": "superman",
  "age": "unknown",
  "height": "6.2",
  "weight": "flexible"
}

person rahul    schedule 10.11.2016    source источник
comment
Возможный дубликат Apache Spark Read One Complex Файл JSON на запись RDD или DF   -  person    schedule 10.11.2016
comment
@rahul: с какой проблемой вы столкнулись при доступе к этому json-файлу?   -  person Shankar    schedule 10.11.2016
comment
мой json имеет пробелы, и набор данных читает однострочные файлы json, содержащие целый объект, поэтому не может проанализировать его ответ: + --------------------- + | _corrupt_record| +--------------------+ | {| | имя: суперм...| | возраст: неизвестно | | высота: 6,2,| | вес: гибкий...| | }| +--------------------+   -  person rahul    schedule 10.11.2016


Ответы (2)


В прошлый раз, когда я проверял документы Spark SQL, это выделялось:

Обратите внимание, что файл, предлагаемый в виде файла JSON, не является типичным файлом JSON. Каждая строка должна содержать отдельный автономный действительный объект JSON. Как следствие, обычный многострочный файл JSON чаще всего не будет работать.

В прошлом мне удавалось решить эту проблему, загрузив JSON с помощью метода Spark Context wholeTextFiles, который создает PairRDD.

См. полный пример в разделе «Учебник по примерам Spark SQL JSON, часть 2» на этой странице https://www.supergloo.com/fieldnotes/spark-sql-json-examples/

person Todd M    schedule 10.11.2016

Документация искры apache ясно упоминает об этом -

Для обычного многострочного файла JSON установите для параметра multiLine значение true.

Следовательно, решение

Dataset<Row> df = spark.read().option("multiLine", true).json("file:/a/b/c.json");
df.show();          

Я пробовал json с тем же форматом (один объект json в нескольких строках). После добавления опции я больше не вижу результат с заголовком corrupted_record в результате.

person user9298096    schedule 01.02.2018