python - 将 Json 数据写入 Azure Synapse PySpark Notebook 中的文件

标签 python json azure pyspark azure-synapse

我正在开发一个项目,使用 PySpark 从 API 中提取数据并将其保存到 Azure Data Lake Gen 2 中的文件中。是的,我知道这应该很简单,而且我在提取数据时没有遇到任何问题,但是我花了很长时间才弄清楚收到它后如何处理它。

我的流程如下:

workspace_query = {'format': 'json'}
response = requests.get("https://api.mavenlink.com/api/v1/workspaces", headers={'Authorization': <some things InfoSec would appreciate that I didn't put in a public forum>}, params=workspace_query)

json_response = response.json()
kantata_json_data = json.dumps(json_response, indent=4, sort_keys=True)

好吧,如果我愿意的话,我可以从这里打印 kantata_json_dumps 的内容(如果我没有在公共(public)论坛上发布,InfoSec 也会感激其详细信息),并且所有内容看起来都像 JSON。耶。

我从这里无法弄清楚如何将该变量的内容成功写入文件。具体来说,如果我尝试写作,我会得到以下内容:

with open("https://p4syndev.dfs.core.windows.net/<Auzre subscription stuff>/<my foldername>/", "w") as file:
outfile.write(kantata_json_data)

然后出现错误:

FileNotFoundError                         Traceback (most recent call last)
Cell In [23], line 1
----> 1 with open("https://p4syndev.dfs.core.windows.net/<Auzre subscription stuff>/<my foldername>/", "w") as file:
      2     outfile.write(kantata_json_data)

File ~/cluster-env/env/lib/python3.10/site-packages/IPython/core/interactiveshell.py:282, in _modified_open(file, *args, **kwargs)
    275 if file in {0, 1, 2}:
    276     raise ValueError(
    277         f"IPython won't let you open fd={file} by default "
    278         "as it is likely to crash IPython. If you know what you are doing, "
    279         "you can use builtins' open."
    280     )
--> 282 return io_open(file, *args, **kwargs)

这很令人困惑,因为我假设我能够使用 URL 或 ABFSS 路径写入文件夹,但两者都出现相同的错误。我是 Azure 的新手,这里绝对可能缺少一些 secret 武器。

因此,我尝试写入数据帧,然后将其转换为 JSON(坦率地说,这似乎不符合 Python 标准,但无论如何)并收到了 IllegalArgumentException。

任何关于我应该如何处理这个问题的想法都值得赞赏。

最佳答案

这是我的 json 数据。

enter image description here

您可以使用下面的代码来编写。

import pandas as pd
df = pd.DataFrame(json.loads(json_data))
df.to_json('abfs://dats/output/json_files/user.json', storage_options = {'linked_service' : 'AzureDataLakeStorage1'})

enter image description here

输出:

enter image description here

在这里,我正在创建 pandas 数据帧,使用 abfs 协议(protocol)将其写入存储帐户。

您可以使用以下任意一种路径。

abfs://<container_name>/<path_to_file>

或者

abfs://container_name@Storage_account.dfs.core.windows.net/path_to_file

并且您的突触工作区中将默认链接服务。在存储选项中指定该名称,或者如果您创建了链接服务,则使用该名称。

enter image description here

您不能使用此类协议(protocol)通过open函数访问文件,因为它会在本地文件系统(即您附加的池)中搜索文件。

关于python - 将 Json 数据写入 Azure Synapse PySpark Notebook 中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76510602/

相关文章:

python - 调整seaborn散点图中不同类别的不同透明度

python - 在 Linux 中拖放等效的批处理文件

javascript - 如何获取添加/删除文本字段和表单 JSON 中所有文本字段的值

Azure通知中心UWP、UWP Toast通知不启动应用程序

python - 通过 Tkinter 中的按钮关闭一个窗口并打开一个新窗口

Java json对象通过名称调用函数

php - 每当mysql更新时动态更新json文件

azure - 无法使用变量中的 az network vnet 子网列表进行循环

azure - 如果我在 Azure 中发布应用程序,它会运行多长时间?

c++ - 通过 tcp 传输的文件末尾的额外换行符