通过Apache Spark读取json数据

时间:2016-11-14 11:08:54

标签: java json apache-spark

我试图通过Apache Spark读取示例Json文件,在此过程中我发现有一件事是你需要将整个json对象保持为单行。如果我将整个json对象保持为单行,则代码运行良好,否则会出现异常。

这是我的json数据:

    [
    {
        "id": 2,
        "name": "An ice sculpture",
        "price": 12.50,
        "tags": ["cold", "ice"],
        "dimensions": {
            "length": 7.0,
            "width": 12.0,
            "height": 9.5
        },
        "warehouseLocation": {
            "latitude": -78.75,
            "longitude": 20.4
        }
    },
    {
        "id": 3,
        "name": "A blue mouse",
        "price": 25.50,
        "dimensions": {
            "length": 3.1,
            "width": 1.0,
            "height": 1.0
        },
        "warehouseLocation": {
            "latitude": 54.4,
            "longitude": -32.7
        }
    }
]

这是我的代码:

SparkSession session = new SparkSession.Builder().appName("JsonRead").master("local").getOrCreate();
        Dataset<Row> json = session.read().json("/Users/mac/Desktop/a.json");
        json.select("tags").show();

如果小数据集没问题,可以采用其他方式处理大型json数据集吗?

1 个答案:

答案 0 :(得分:2)

见文件: http://spark.apache.org/docs/2.0.1/sql-programming-guide.html#json-datasets

JSON数据集

请注意,作为json文件提供的文件不是典型的JSON文件。每行必须包含一个单独的,自包含的有效JSON对象。因此,常规的多行JSON文件通常会失败。