首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将单个json从蔚蓝物联网集线器存储到datalake2

将单个json从蔚蓝物联网集线器存储到datalake2
EN

Stack Overflow用户
提问于 2020-10-05 12:39:39
回答 1查看 212关注 0票数 1

我增加了物联网枢纽和设备。所有来自物联网集线器的数据都以json格式保存到数据湖2。工作正常,但是如果一次有几条来自设备的消息,它就保存在一个json中。它会引起一些麻烦..。是否有方法将每个消息事件保存在单独的json中?我查看了物联网集线器的设置,但一无所获。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-05 13:09:57

在IoT集线器路由机制中,始终没有将单个消息转发到存储区的设置。基本上,这个需求可以在流管道使用者(IoTHubTrigger)或事件网格订阅服务器(EventGridTrigger)中通过azure函数来实现。

更新:

下面是一个IoTHubTrigger函数的示例,它的输出blob绑定到Data Gen2的容器:

run.csx:

代码语言:javascript
复制
#r "Microsoft.Azure.EventHubs"
#r "Newtonsoft.Json"
#r "Microsoft.WindowsAzure.Storage"

using System;
using System.IO;
using System.Text;
using System.Linq;
using Microsoft.Azure.EventHubs;
using Microsoft.WindowsAzure.Storage.Blob;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

public static async Task Run(EventData ed, CloudBlockBlob outputBlob, ILogger log)
{   
    //log.LogInformation($"DeviceId = {ed.SystemProperties["iothub-connection-device-id"]}\r\n{JObject.Parse(Encoding.ASCII.GetString(ed.Body))}");  

    var msg = new { 
        EnqueuedTimeUtc = ed.SystemProperties["iothub-enqueuedtime"],
        Properties = ed.Properties,
        SystemProperties = new {
          connectionDeviceId = ed.SystemProperties["iothub-connection-device-id"], 
          connectionAuthMethod = ed.SystemProperties["iothub-connection-auth-method"],
          connectionDeviceGenerationId = ed.SystemProperties["iothub-connection-auth-generation-id"],
          enqueuedTime = ed.SystemProperties["iothub-enqueuedtime"]   
        },
        Body = JObject.Parse(Encoding.ASCII.GetString(ed.Body))
    };

    byte[] buffer = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(msg));
    await outputBlob.UploadFromStreamAsync(new MemoryStream(buffer));

    await Task.CompletedTask;
}

function.json:

代码语言:javascript
复制
{
  "bindings": [
    {
      "name": "ed",
      "connection": "rk2020iot_IOTHUB",
      "eventHubName": "rk2020iot_IOTHUBNAME",
      "consumerGroup": "function",
      "cardinality": "one",
      "direction": "in",
      "type": "eventHubTrigger"
    },
    {
      "name": "outputBlob",
      "path": "iot/rk2020iot/{DateTime}.json",
      "connection": "rk2020datalake2_STORAGE",
      "direction": "out",
      "type": "blob"
    }
  ]
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64208789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档