使用 SDK 在 azure 函数中将 Azure blob 存储转换为 JSON

2024-03-27

我正在尝试创建一个计时器触发器 azure 函数,该函数从 blob 获取数据,聚合数据,并将聚合结果放入 cosmosDB 中。我之前尝试使用 azure 函数中的绑定来使用 blob 作为输入,但我被告知这是不正确的(请参阅此线程:Azure 函数 python 命名参数没有值 https://stackoverflow.com/questions/47437077/azure-functions-python-no-value-for-named-parameter).

我现在使用SDK时遇到了以下问题:

import sys, os.path
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), 'myenv/Lib/site-packages')))
import json
import pandas as pd
from azure.storage.blob import BlockBlobService 

data = BlockBlobService(account_name='accountname', account_key='accountkey')
container_name = ('container')
generator = data.list_blobs(container_name)

for blob in generator:
print("{}".format(blob.name))
json = json.loads(data.get_blob_to_text('container', open(blob.name)))


df = pd.io.json.json_normalize(json)
print(df)

这会导致错误:

IOError: [Errno 2] No such file or directory: 'test.json'

我意识到这可能是绝对路径问题,但我不确定它如何与天蓝色存储一起使用。关于如何规避这个问题有什么想法吗?


通过执行以下操作使其“起作用”:

for blob in generator:
loader = data.get_blob_to_text('kvaedevdystreamanablob',blob.name,if_modified_since=delta)
json = json.loads(loader.content)

这适用于一个 json 文件,即我的存储中只有一个,但是当添加更多文件时,我会收到此错误:

ValueError: Expecting object: line 1 column 21907 (char 21906)

即使我添加也会发生这种情况if_modified_since只接受一团。如果我弄清楚了什么,就会更新。随时欢迎帮助。


另一个更新:我的数据通过流分析进入,然后深入到 blob。我选择数据应以数组形式输入,这就是发生错误的原因。当流终止时,blob 不会立即追加]到 json 中的 EOF 行,因此 json 文件无效。现在将尝试在流分析中使用逐行而不是数组。


弄清楚了。最后,这是一个非常简单的修复:

我必须确保 blob 中的每个 json 条目少于 1024 个字符,否则会创建一个新行,从而导致读取行出现问题。

迭代每个 blob 文件、读取并添加到列表的代码如下:

data = BlockBlobService(account_name='accname', account_key='key')
generator = data.list_blobs('collection')

dataloaded = []
for blob in generator:
loader = data.get_blob_to_text('collection',blob.name)
trackerstatusobjects = loader.content.split('\n')
for trackerstatusobject in trackerstatusobjects:
    dataloaded.append(json.loads(trackerstatusobject))

从此您可以添加到数据框并执行您想要的操作:) 如果有人偶然发现类似的问题,希望这会有所帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 SDK 在 azure 函数中将 Azure blob 存储转换为 JSON 的相关文章

随机推荐

  • 在 Tensorflow 中训练简单模型 GPU 比 CPU 慢

    我在 Tensorflow 中设置了一个简单的线性回归问题 并在 1 13 1 中使用 Tensorflow CPU 和 GPU 创建了简单的 conda 环境 在 NVIDIA Quadro P600 的后端使用 CUDA 10 0 然而
  • 以编程方式与证书颁发机构通信

    我以编程方式处理证书并与证书颁发机构进行通信 我一直在 Windows 2008R2 上使用 C 处理 CertClient 和 CertEnroll COM 对象 我可以生成请求并从 CA 获取证书 我从这个例子开始 http blogs
  • 为什么 Vim 会在文件末尾添加新行?

    我经常使用 Wordpress 有时我会临时更改 Wordpress 核心文件 以便了解正在发生的情况 尤其是在调试时 今天我有一个小小的惊喜 当我准备将更改提交到 git 存储库时 我注意到git status正在将 WordPress
  • AggregateItemReader 的位置和用例

    附录在这里 http docs spring io spring batch trunk reference html listOfReadersAndWriters html列出读者AggregateItemReader但我无法在任何 S
  • 在 Pyspark 中添加 python 外部库

    我正在使用 pyspark 1 6 我想使用 databricks spark csv 库 为此我尝试了不同的方法但没有成功 1 我尝试添加一个我下载的jarhttps spark packages org package databric
  • 没有足够的副本可用于一致性为 1 的查询(需要 1 个副本,但只有 0 个活动副本)

    我有一个包含三个节点的 Cassandra 集群 其中两个节点已启动 它们都在同一个 DC 中 当我的 Java 应用程序写入集群时 我的应用程序中出现错误 该错误似乎是由 Cassandra 的某些问题引起的 原因 com datasta
  • 初始化类成员向量的大小失败

    我是 C 新手 遇到了这个问题 这是我的代码 class A std vector
  • 在为项目构建不同的 Eclipse CDT 共享资源文件夹中

    我有一组 Eclipse c 项目 它们都引用公共共享代码库 同一文件夹中的 c 和 h 文件的混合 但会根据每个项目以不同的方式构建该代码 可以在每个项目内编辑公共代码库 但这些编辑将是在所有项目中进行的修复 除了通过定义的构建选项之外
  • Flask 结构——无法从 __init__.py 导入应用程序

    我是 python 的初学者 并且在使用设置应用程序的结构时遇到了很多麻烦 init py即使在搜索了几个教程之后 目前 我当前的目录结构如下所示 parent myapp init py views py virtualenv 以前 我有
  • Java 8 Lambda,过滤HashMap,无法解析方法

    我对 Java 8 的新功能有点陌生 我正在学习如何按条目过滤地图 我看过本教程 http www leveluplunch com java examples filter map by value and 这个帖子 https stac
  • 有界上下文共享相同的聚合

    DDD 公开了有界上下文 领域模型 聚合 但我经常错过业务规则的关键点 我想知道业务规则如何集成到这种方法中 这是一个例子 假设您在一家信贷公司中有 2 个有界上下文 一项用于追偿债务 另一项用于提前退款 这些背景嵌入了真正的业务特性 从概
  • Term::ReadKey,原始模式下的非阻塞读取:检测到 EOF?

    当我将内容通过管道传输到程序中时 它似乎没有获得任何像 0x4 这样的字符来指示 EOF echo abc map cat saw a x61 saw b x62 saw c x63 saw x0A zzzbc C 我必须按 Ctrl C
  • 如何直接从我的 Gitlab 存储库部署到 Heroku

    在我的团队中 我们使用 Gitlab 作为远程存储库 因此我们正在寻找一种解决方案来将应用程序自动部署到 Heroku 我们找到了 Codeship 用于从 Github 自动将应用程序部署到 Heroku 有小费吗 技巧 如果您不准备使用
  • 波特 油炸的去梗

    为什么波特词干算法在线 http text processing com demo stem http text processing com demo stem stem fried to fri并不是fry 我不记得任何以以下结尾的单词
  • Mjpeg 在最近的 Mobile Safari 上损坏了?

    我正在处理来自 IP 摄像机的实时 mjpeg 流 发现最近发布的 Mobile Safari 似乎对 mjpeg 的支持被破坏了 我正在使用一个带有嵌入图像的简单 HTML 测试页面 如下所示 img src http ip addres
  • 使用流复制文件

    以下示例演示如何使用流复制文件 private void copyWithStreams File aSourceFile File aTargetFile boolean aAppend log Copying files with st
  • Android底部导航视图项目图标大小[重复]

    这个问题在这里已经有答案了 I need to do a bottom navigation view in Android like this I tried and now I have something like this 如何增加
  • 在 Clojure 中实现 cron 类型调度程序

    我正在寻找任何可以在给定时间触发事件的 clojure 方法 例如 我希望一个特定的进程在上午 9 30 启动 然后我可以触发另一个进程在半小时后开始运行 等等 提前致谢 更新2 感谢 arthur ulfeoldt 和 unknown p
  • 是否可以将 Camera2 与 Google Vision API 一起使用

    是否可以仅使用 Camera2 和 Google Vision API 来检测人脸 我找不到整合它的方法 是的 可以将 Camera2 API 与 Google Vision API 一起使用 首先 Google Vision API 人脸
  • 使用 SDK 在 azure 函数中将 Azure blob 存储转换为 JSON

    我正在尝试创建一个计时器触发器 azure 函数 该函数从 blob 获取数据 聚合数据 并将聚合结果放入 cosmosDB 中 我之前尝试使用 azure 函数中的绑定来使用 blob 作为输入 但我被告知这是不正确的 请参阅此线程 Az