Программно определить схему в java, возвращающую нули?

У меня есть файл данных JSON, и я хочу программно применить схему к столбцам.

pets.json

{"id":"311","species":"canine","color":"golden","weight":"75","name":"Captain"}
{"id":"928","species":"feline","color":"gray","weight":"8","name":"Oscar"}


SparkSession session = SparkSession.builder().appName("SparkSQLTests").master("local[*]").getOrCreate();
        DataFrameReader dataFrameReader = session.read();

        // Create Data Frame
        Dataset<Row> pets = dataFrameReader.schema(buildSchema()).json("input/pets.json");

        // Schema
        pets.printSchema();
        pets.show(10);

        // SELECT * 
        // FROM pets
        // WHERE species='canine'
        System.out.println("=== Display Canines ===");
        pets.filter(col("species").equalTo("canine")).show();


        session.stop();

Когда я запускаю программу, я получаю пустые значения для своих столбцов. Что я делаю не так? Спасибо


    root
     |-- id: integer (nullable = true)
     |-- species: string (nullable = true)
     |-- color: string (nullable = true)
     |-- weight: double (nullable = true)
     |-- name: string (nullable = true)

    +----+-------+-----+------+----+
    |  id|species|color|weight|name|
    +----+-------+-----+------+----+
    |null|   null| null|  null|null|
    |null|   null| null|  null|null|
    +----+-------+-----+------+----+

    === Display Canines ===
    +---+-------+-----+------+----+
    | id|species|color|weight|name|
    +---+-------+-----+------+----+
    +---+-------+-----+------+----+

1
0
60
1

Ответы 1

Оказывается, у меня были кавычки вокруг числовых значений в моих данных json, которые меня сбивали с толку. Это работает, когда я изменил данные на:

{"id": 311, "views": "canine", "color": "golden", "weight": 75, "name": "Captain"} {"id": 928, "views": "feline", "color": "grey", "weight": 8, "name": "Oscar"}

Другие вопросы по теме