Используйте Spark для разбора столбца массива JSON и переноса столбца идентификатора. - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть таблица с двумя столбцами - один называется json, строка содержит массив JSON , а другая Int называется id. Если я выберу только столбец json и преобразую полученный DataFrame в Dataset, а затем проанализирую json, используя Reader.json(), массив JSON в полученном DataFrame будет разбит на несколько строк. Теперь я не вижу способа соотнести id с правильными разнесенными строками. В Java это выглядит примерно так:

Dataset<Row> df = reader.table("myTable"); // DataFrame containing json and id
df = df.selectExpr("json");                // DataFrame containing just json
Dataset<String> ds = df.toJavaRDD()        // Dataset<String> containing just json
    .map((Function<Row, String>) row -> (String) row.get(0)).rdd(), STRING());
df = reader.schema(jsonDdl).json(ds);      // exploded DataFrame, one row per array element

... что теперь? У меня нет способа сопоставить id обратно с строками, полученными от операции разбора JSON. Как я могу сделать это по-другому, чтобы сохранить связь между id и проанализированными столбцами JSON?

...