Как загрузить объект JSON без согласованной схемы из S3 в PySpark DataFrame - PullRequest
0 голосов
/ 07 апреля 2019

У меня есть объект данных JSON [1], расположенный в S3, и я хочу загрузить его как PySpark DataFrame, который выглядит следующим образом [2].

Чем ближе я пытался загрузить JSON как текст с помощью PySpark, преобразовать его в строку и загрузить в Pandas [3] [4]. Задача состоит в том, как «разбить» значения, которые сами представляют собой список пар ключ / значение, в отдельные строки в кадре данных.

У кого-нибудь есть классный способ сделать это?

Спасибо за вашу помощь!

[1]

{
  "1": {
    "300": "foo",
    "301": "bar",
    "302": "foobar"
  },
  "3": {
    "r": "t",
    "f": "m"
  },
  "17": {
     "100", "200"
  }
}

[2]

----------------------
| id | some | thing  |
----------------------
| 1  | 300  | foo.   |
| 1  | 301  | bar.   |
| 1  | 302  | foobar |
| 3  | r    | t      |
| 3  | f    | m      |
| 17 | 100  | 200    |
----------------------

[3]

data_s3 = "s3://my-bucket/data.json"
json_spark_text = spark.read.text(data_s3).collect())
json_string = "".join(map(lambda x: x.value, json_spark_text))

import pandas as pd

df = pd.read_json(json_string, orient='index')

[4]

                                                     0        
-------------------------------------------------------
| 1  | {u'300':u'foo',u'301':u'bar',u'302':u'foobar'} |
| 3  | {u'r':u't',u'f':u'm'}                          |
| 17 | {u'100',u'200'}                                |
-------------------------------------------------------
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...