Kurz: Odesílání dat ze serveru OPC UA do Azure Data Lake Storage Gen2
V rychlém startu jste vytvořili tok dat, který odesílá data z operací Azure IoT do event Hubs a pak do Microsoft Fabric přes EventStreams.
Je ale také možné odesílat data přímo do koncového bodu úložiště bez použití služby Event Hubs. Tento přístup vyžaduje vytvoření schématu Delta Lake, které představuje data, nahrání schématu do operací Azure IoT a následné vytvoření toku dat, který čte data ze serveru OPC UA a zapíše ho do koncového bodu úložiště.
Tento kurz vychází z nastavení rychlého startu a ukazuje, jak data převést do Azure Data Lake Storage Gen2. Tento přístup umožňuje ukládat data přímo ve škálovatelném a zabezpečeném datovém jezeře, které je možné použít k další analýze a zpracování.
Požadavky
Dokončete druhý krok rychlého startu, který vám získá data ze serveru OPC UA do zprostředkovatele MQTT Operations Azure IoT. Ujistěte se, že se data zobrazují ve službě Event Hubs.
Vytvoření účtu úložiště s využitím funkce Data Lake Storage
Nejprve podle kroků vytvořte účet úložiště s funkcí Data Lake Storage Gen2.
- Zvolte zapamatovatelný, ale jedinečný název účtu úložiště, protože ho budete potřebovat v dalších krocích.
- Nejlepších výsledků dosáhnete tak, že použijete umístění, které je blízko clusteru Kubernetes, ve kterém běží operace Azure IoT.
- Během procesu vytváření povolte nastavení hierarchického oboru názvů . Toto nastavení se vyžaduje pro operace Azure IoT pro zápis do účtu úložiště.
- Ostatní nastavení můžete ponechat jako výchozí.
V kroku Kontrola ověřte nastavení a výběrem možnosti Vytvořit vytvořte účet úložiště.
Získání názvu rozšíření operací Azure IoT
Na webu Azure Portal vyhledejte instanci operace Azure IoT, kterou jste vytvořili v rychlém startu. V okně Přehled najděte část rozšíření Arc a podívejte se na název rozšíření. Měl by vypadat jako azure-iot-operations-xxxxx
.
Tento název rozšíření se používá v dalších krocích k přiřazení oprávnění k účtu úložiště.
Přiřazení oprávnění k operacím Azure IoT pro zápis do účtu úložiště
Nejprve v účtu úložiště přejděte do okna Řízení přístupu (IAM) a vyberte + Přidat přiřazení role. V okně Přidat přiřazení role vyhledejte roli Přispěvatel dat objektů blob služby Storage a vyberte ji.
Potom vyberte Další , abyste se dostali do oddílu Členové .
Dále zvolte Vybrat členy a v poli Vybrat vyhledejte spravovanou identitu rozšíření Azure IoT Operations Arc s názvem azure-iot-operations-xxxxx
a vyberte ji.
Zadání dokončete pomocí příkazu Zkontrolovat a přiřadit.
Vytvoření kontejneru v účtu úložiště
V účtu úložiště přejděte do okna Kontejnery a vyberte + Kontejner. Pro účely tohoto kurzu pojmenujte kontejner aiotutorial
. Výběrem možnosti Vytvořit vytvořte kontejner.
Získání názvu registru schématu a oboru názvů
Pokud chcete nahrát schéma do operací Azure IoT, potřebujete znát název registru schématu a obor názvů. Tyto informace můžete získat pomocí Azure CLI.
Spuštěním následujícího příkazu získejte název registru schématu a obor názvů. Nahraďte zástupné symboly vašimi hodnotami.
az iot ops schema registry list -g <RESOURCE_GROUP> --query "[0].{name: name, namespace: properties.namespace}" -o tsv
Výstup by měl vypadat takto:
<REGISTRY_NAME> <SCHEMA_NAMESPACE>
Uložte hodnoty pro další kroky.
Nahrání schématu do operací Azure IoT
V rychlém startu vypadají data pocházející z prostředku trouby takto:
{
"Temperature": {
"SourceTimestamp": "2024-11-15T21:40:28.5062427Z",
"Value": 6416
},
"FillWeight": {
"SourceTimestamp": "2024-11-15T21:40:28.5063811Z",
"Value": 6416
},
"EnergyUse": {
"SourceTimestamp": "2024-11-15T21:40:28.506383Z",
"Value": 6416
}
}
Požadovaný formát schématu pro Delta Lake je objekt JSON, který se řídí formátem serializace schématu Delta Lake. Schéma by mělo definovat strukturu dat, včetně typů a vlastností jednotlivých polí. Další podrobnosti o formátu schématu najdete v dokumentaci k formátu serializace schématu Delta Lake.
Tip
K vygenerování schématu z ukázkového datového souboru použijte pomocníka Schema Gen.
Pro účely tohoto kurzu schéma dat vypadá takto:
{
"$schema": "Delta/1.0",
"type": "object",
"properties": {
"type": "struct",
"fields": [
{
"name": "Temperature",
"type": {
"type": "struct",
"fields": [
{
"name": "SourceTimestamp",
"type": "timestamp",
"nullable": false,
"metadata": {}
},
{
"name": "Value",
"type": "integer",
"nullable": false,
"metadata": {}
}
]
},
"nullable": false,
"metadata": {}
},
{
"name": "FillWeight",
"type": {
"type": "struct",
"fields": [
{
"name": "SourceTimestamp",
"type": "timestamp",
"nullable": false,
"metadata": {}
},
{
"name": "Value",
"type": "integer",
"nullable": false,
"metadata": {}
}
]
},
"nullable": false,
"metadata": {}
},
{
"name": "EnergyUse",
"type": {
"type": "struct",
"fields": [
{
"name": "SourceTimestamp",
"type": "timestamp",
"nullable": false,
"metadata": {}
},
{
"name": "Value",
"type": "integer",
"nullable": false,
"metadata": {}
}
]
},
"nullable": false,
"metadata": {}
}
]
}
}
Uložte ho jako soubor s názvem opcua-schema.json
.
Pak pomocí Azure CLI nahrajte schéma do operací Azure IoT. Nahraďte zástupné symboly vašimi hodnotami.
az iot ops schema create -n opcua-schema -g <RESOURCE_GROUP> --registry <REGISTRY_NAME> --format delta --type message --version-content opcua-schema.json --ver 1
Tím se vytvoří schéma pojmenované opcua-schema
v registru operací Azure IoT s verzí 1
.
Pokud chcete ověřit nahrání schématu, vypíšete verze schématu pomocí Azure CLI.
az iot ops schema version list -g <RESOURCE_GROUP> --schema opcua-schema --registry <REGISTRY_NAME>
Vytvoření koncového bodu toku dat
Koncový bod toku dat je cíl, kam se data odesílají. V tomto případě se data odesílají do Azure Data Lake Storage Gen2. Metoda ověřování je spravovaná identita přiřazená systémem, kterou jste nastavili tak, aby měla správná oprávnění k zápisu do účtu úložiště.
Vytvořte koncový bod toku dat pomocí Bicep. Nahraďte zástupné symboly vašimi hodnotami.
// Replace with your values
param aioInstanceName string = '<AIO_INSTANCE_NAME>'
param customLocationName string = '<CUSTOM_LOCATION_NAME>'
// Tutorial specific values
param endpointName string = 'adls-gen2-endpoint'
param host string = 'https://<ACCOUNT>.blob.core.windows.net'
resource aioInstance 'Microsoft.IoTOperations/instances@2024-11-01' existing = {
name: aioInstanceName
}
resource customLocation 'Microsoft.ExtendedLocation/customLocations@2021-08-31-preview' existing = {
name: customLocationName
}
resource adlsGen2Endpoint 'Microsoft.IoTOperations/instances/dataflowEndpoints@2024-11-01' = {
parent: aioInstance
name: endpointName
extendedLocation: {
name: customLocation.id
type: 'CustomLocation'
}
properties: {
endpointType: 'DataLakeStorage'
dataLakeStorageSettings: {
host: host
authentication: {
method: 'SystemAssignedManagedIdentity'
systemAssignedManagedIdentitySettings: {}
}
}
}
}
Uložte soubor jako adls-gen2-endpoint.bicep
a nasaďte ho pomocí Azure CLI.
az deployment group create -g <RESOURCE_GROUP> --template-file adls-gen2-endpoint.bicep
Vytvoření toku dat
Pokud chcete odesílat data do Azure Data Lake Storage Gen2, musíte vytvořit tok dat, který čte data ze serveru OPC UA a zapisuje je do účtu úložiště. V tomto případě není potřeba žádná transformace, takže se data zapisuje tak, jak jsou.
Vytvoření toku dat pomocí Bicep Nahraďte zástupné symboly vašimi hodnotami.
// Replace with your values
param aioInstanceName string = '<AIO_INSTANCE_NAME>'
param customLocationName string = '<CUSTOM_LOCATION_NAME>'
param schemaNamespace string = '<SCHEMA_NAMESPACE>'
// Tutorial specific values
param schema string = 'opcua-schema'
param schemaVersion string = '1'
param dataflowName string = 'tutorial-adls-gen2'
param assetName string = 'oven'
param endpointName string = 'adls-gen2-endpoint'
param containerName string = 'aiotutorial'
param serialFormat string = 'Delta'
resource aioInstance 'Microsoft.IoTOperations/instances@2024-11-01' existing = {
name: aioInstanceName
}
resource customLocation 'Microsoft.ExtendedLocation/customLocations@2021-08-31-preview' existing = {
name: customLocationName
}
// Pointer to the default dataflow profile
resource defaultDataflowProfile 'Microsoft.IoTOperations/instances/dataflowProfiles@2024-11-01' existing = {
parent: aioInstance
name: 'default'
}
resource adlsEndpoint 'Microsoft.IoTOperations/instances/dataflowEndpoints@2024-11-01' existing = {
parent: aioInstance
name: endpointName
}
resource defaultDataflowEndpoint 'Microsoft.IoTOperations/instances/dataflowEndpoints@2024-11-01' existing = {
parent: aioInstance
name: 'default'
}
resource asset 'Microsoft.DeviceRegistry/assets@2024-11-01' existing = {
name: assetName
}
resource dataflow 'Microsoft.IoTOperations/instances/dataflowProfiles/dataflows@2024-11-01' = {
// Reference to the parent dataflow profile, the default profile in this case
// Same usage as profileRef in Kubernetes YAML
parent: defaultDataflowProfile
name: dataflowName
extendedLocation: {
name: customLocation.id
type: 'CustomLocation'
}
properties: {
mode: 'Enabled'
operations: [
{
operationType: 'Source'
sourceSettings: {
endpointRef: defaultDataflowEndpoint.name
assetRef: asset.name
dataSources: ['azure-iot-operations/data/${assetName}']
}
}
// Transformation optional
{
operationType: 'BuiltInTransformation'
builtInTransformationSettings: {
serializationFormat: serialFormat
schemaRef: 'aio-sr://${schemaNamespace}/${schema}:${schemaVersion}'
map: [
{
type: 'PassThrough'
inputs: [
'*'
]
output: '*'
}
]
}
}
{
operationType: 'Destination'
destinationSettings: {
endpointRef: adlsEndpoint.name
dataDestination: containerName
}
}
]
}
}
Uložte soubor jako adls-gen2-dataflow.bicep
a nasaďte ho pomocí Azure CLI.
az deployment group create -g <RESOURCE_GROUP> --template-file adls-gen2-dataflow.bicep
Ověření dat v Azure Data Lake Storage Gen2
V účtu úložiště přejděte do okna Kontejnery a vyberte kontejner aiotutorial
, který jste vytvořili. Měla by se zobrazit složka s názvem aiotutorial
a uvnitř, měli byste vidět soubory Parquet s daty ze serveru OPC UA. Názvy souborů jsou ve formátu part-00001-44686130-347f-4c2c-81c8-eb891601ef98-c000.snappy.parquet
.
Pokud chcete zobrazit obsah souborů, vyberte každý soubor a vyberte Upravit.
Obsah se na webu Azure Portal nevykresluje správně, ale můžete si ho stáhnout a otevřít v nástroji, jako je Parquet Viewer.