Как прочитать файл JSON в Azure Databricks из хранилища озера данных Azure - PullRequest
0 голосов
/ 26 августа 2018

Я использую хранилище озера данных Azure для хранения простых файлов JSON со следующим JSON:

{
  "email": "Usersemail@domain.com",
  "id": "823956724385"
}

Имя файла json myJson1.json.Хранилище озера данных Azure успешно смонтировано в блоке данных Azure.

Я могу успешно загрузить файл JSON с помощью

df = spark.read.option("multiline", "true").json(fi.path)

fi.path - это объект FileInfo, который является MyJson1.json файл сверху.

Когда я делаю

spark.read.option("multiline", "true").json(fi.path)
df.show()` 

, я правильно распечатываю объект JSON (DataFrame) как

+---------------------+------------+
|                email|          id|
+---------------------+------------+
|Usersemail@domain.com|823956724385|
+---------------------+------------+

Что я хочу сделатьзагрузить файл JSON с json.load(filename), чтобы иметь возможность работать с объектом JSON в Python.

Когда я делаю

with open('adl://.../myJson1.json', 'r') as file:
  jsonObject0 = json.load(file)

, тогда я получаю следующую ошибку

[Errno 2] Нет такого файла или каталога 'adl: //.../myJson1.json'

Когда я пытаюсь (точка монтирования верна, я могуперечислите файл и также с помощью spark.read в DataFrame)

    jsonObject = json.load("/mnt/adls/data/myJson1.json")

, затем я получаю следующую ошибку

У объекта 'str' нет атрибута 'read'

Я понятия не имею, что делать, чтобы загрузить JSON.Моя цель - прочитать объект JSON и пройтись по ключам и их значениям.

1 Ответ

0 голосов
/ 26 августа 2018

Хитрость заключалась в том, чтобы использовать следующий синтаксис для файла url

/dbfs/mnt/adls/data/myJson1.json

Мне нужно было добавить /dbfs/... соответственно заменить dbfs:/ на /dbfs/ в начале URL.

Тогда я мог бы использовать

    with open('/dbfs/mnt/adls/ingress/marketo/update/leads/leads-json1.json', 'r') as f:
      data = f.read()

    jsonObject = json.loads(data)

Может быть, это проще?Но пока это работает.

...