Ошибка использования pandas.to_json () в Microsoft Databricks - PullRequest
0 голосов
/ 21 марта 2019

Кто-нибудь знает, есть ли у нас альтернативный способ сохранить панду dataFrame как файл Json в Microsoft Databricks?

Я пытаюсь это:

dataframe.to_json('wasbs://<container>@<storage_account>.blob.core.windows.net/<file_name.json>', orient='records')

Но он возвращает меня "FileNotFoundError: [Errno 2] Нет такого файла или каталога:"

Также попытался сохранить локально, но возвращает ту же ошибку.

1 Ответ

0 голосов
/ 22 марта 2019

Если вы используете python, то вы можете сделать следующее

from azure.storage.blob import (
    BlockBlobService
)
import pandas as pd
import io

output = io.StringIO()
head = ["col1" , "col2" , "col3"]
l = [[1 , 2 , 3],[4,5,6] , [8 , 7 , 9]]
df = pd.DataFrame (l , columns = head)
print df
output = df.to_json(orient='records')
print(output)

accountName = "***"
accountKey = "***"
containerName = "test1"
blobName = "test3.json"

blobService = BlockBlobService(account_name=accountName, account_key=accountKey)

blobService.create_blob_from_text('test1', 'OutFilePy.csv', output)

В качестве альтернативы вы можете смонтировать хранилище больших двоичных объектов и использовать его далее

Четыре монтирования в python

dbutils.fs.mount(
  source = "wasbs://<your-container-name>@<your-storage-account-name>.blob.core.windows.net",
  mount_point = "/mnt/<mount-name>",
  extra_configs = {"<conf-key>":dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")})

и в scala

dbutils.fs.mount(
  source = "wasbs://<your-container-name>@<your-storage-account-name>.blob.core.windows.net/<your-directory-name>",
  mountPoint = "/mnt/<mount-name>",
  extraConfigs = Map("<conf-key>" -> dbutils.secrets.get(scope = "<scope-name>", key = "<key-name>")))

и, наконец, вы можете получить доступ к смонтированной папке

data = pd.read_csv('/dbfs/mnt/mnt-name/opportunity.csv')

аналогично

df.to_json('/dbfs/mnt/mnt-name/opportunity.json',orient='records')

Надеюсь, это поможет.

...