チュートリアル:Azure Stream Analytics 用のカスタム .NET 逆シリアライザーTutorial: Custom .NET deserializers for Azure Stream Analytics

Azure Stream Analytics では、3 つのデータ形式が組み込みでサポートされています。JSON、CSV、Avro です。Azure Stream Analytics has built-in support for three data formats: JSON, CSV, and Avro. カスタム .NET 逆シリアライザーを使用すると、クラウド ジョブとエッジ ジョブの両方について、その他の形式 (プロトコル バッファーBond、およびその他のユーザー定義形式など) からデータを読み取ることができます。With custom .NET deserializers, you can read data from other formats such as Protocol Buffer, Bond and other user defined formats for both cloud and edge jobs.

このチュートリアルでは、Visual Studio を使用して Azure Stream Analytics クラウド ジョブ用のカスタム .NET 逆シリアライザーを作成する方法について説明します。This tutorial demonstrates how to create a custom .NET deserializer for an Azure Stream Analytics cloud job using Visual Studio. Visual Studio Code で .NET 逆シリアライザーを作成する方法については、Visual Studio Code での Azure Stream Analytics ジョブに対応した .NET 逆シリアライザーの作成に関する記事をご覧ください。To learn how to create .NET deserializers in Visual Studio Code, see Create .NET deserializers for Azure Stream Analytics jobs in Visual Studio Code.

このチュートリアルでは、以下の内容を学習します。In this tutorial, you learn how to:

  • プロトコル バッファー用のカスタム逆シリアライザーを作成する。Create a custom deserializer for protocol buffer.
  • Visual Studio で Azure Stream Analytics ジョブを作成する。Create an Azure Stream Analytics job in Visual Studio.
  • カスタム逆シリアライザーを使用するように Stream Analytics ジョブを構成する。Configure your Stream Analytics job to use the custom deserializer.
  • Stream Analytics ジョブをローカルで実行して、カスタム逆シリアライザーをテストおよびデバッグする。Run your Stream Analytics job locally to test and debug the custom deserializer.

前提条件Prerequisites

  • Azure サブスクリプションをお持ちでない場合は、無料アカウントを作成してください。If you don't have an Azure subscription, create a free account.

  • Visual Studio 2019 (推奨) または Visual Studio 2017 をインストールします。Install Visual Studio 2019 (recommended) or Visual Studio 2017. Enterprise (Ultimate/Premium)、Professional、Community の各エディションがサポートされています。Enterprise (Ultimate/Premium), Professional, and Community editions are supported. Express エディションはサポートされていません。Express edition isn't supported.

  • Visual Studio 用の Stream Analytics ツールをインストールするか、最新バージョンに更新します。Install the Stream Analytics tools for Visual Studio or update to the latest version.

  • Visual Studio で Cloud Explorer を開き、Azure サブスクリプションにサインインします。Open Cloud Explorer in Visual Studio, and sign in to your Azure subscription.

  • Azure Storage アカウントでコンテナーを作成します。Create a container in your Azure Storage Account. 作成したコンテナーは、Stream Analytics ジョブに関連する資産を格納するために使用されます。The container you create will be used to store assets related to your Stream Analytics job. 既存のコンテナーを含むストレージ アカウントが既にある場合は、それを使用できます。If you already have a storage account with existing containers, you may use them. ない場合は、新しいコンテナーを作成する必要があります。If not, you'll need to create a new container.

カスタム逆シリアライザーを作成するCreate a custom deserializer

  1. Visual Studio を開き、 [ファイル] > [新規作成] > [プロジェクト] の順に選択します。Open Visual Studio and select File > New > Project. Stream Analytics を検索し、[Azure Stream Analytics Custom Deserializer Project (.NET)](Azure Stream Analytics カスタム逆シリアライザー プロジェクト (.NET)) を選択します。Search for Stream Analytics and select Azure Stream Analytics Custom Deserializer Project (.NET). プロジェクトに、Protobuf Deserializer のような名前を付けます。Give the project a name, like Protobuf Deserializer.

    Visual Studio .NET Standard クラス ライブラリ プロジェクトを作成する

  2. ソリューション エクスプローラーで Protobuf Deserializer プロジェクトを右クリックし、メニューから [NuGet パッケージの管理] を選択します。In Solution Explorer, right-click your Protobuf Deserializer project and select Manage NuGet Packages from the menu. 次に、Microsoft.Azure.StreamAnalyticsGoogle.Protobuf NuGet パッケージをインストールします。Then install the Microsoft.Azure.StreamAnalytics and Google.Protobuf NuGet packages.

  3. MessageBodyProto クラスMessageBodyDeserializer クラスをプロジェクトに追加します。Add the MessageBodyProto class and the MessageBodyDeserializer class to your project.

  4. Protobuf Deserializer プロジェクトをビルドします。Build the Protobuf Deserializer project.

Azure Stream Analytics プロジェクトを追加するAdd an Azure Stream Analytics project

  1. ソリューション エクスプローラーで Protobuf Deserializer ソリューションを右クリックし、[追加] > [新しいプロジェクト] の順に選択します。In Solution Explorer, right-click the Protobuf Deserializer solution and select Add > New Project. [Azure Stream Analytics] > [Stream Analytics] で、[Azure Stream Analytics アプリケーション] を選択します。Under Azure Stream Analytics > Stream Analytics, choose Azure Stream Analytics Application. ProtobufCloudDeserializer という名前を付け、[OK] を選択します。Name it ProtobufCloudDeserializer and select OK.

  2. ProtobufCloudDeserializer Azure Stream Analytics プロジェクトで、[参照] を右クリックします。Right-click References under the ProtobufCloudDeserializer Azure Stream Analytics project. [プロジェクト] の下に、Protobuf Deserializer を追加します。Under Projects, add Protobuf Deserializer. 自動的に設定されます。It should be automatically populated for you.

Stream Analytics ジョブを構成するConfigure a Stream Analytics job

  1. JobConfig.json をダブルクリックします。Double-click JobConfig.json. 次の設定を除き、既定の構成を使用します。Use the default configurations, except for the following settings:

    設定Setting 推奨値Suggested Value
    グローバル ストレージ設定のリソースGlobal Storage Settings Resource 現在のアカウントからデータ ソースを選択しますChoose data source from current account
    グローバル ストレージ設定のサブスクリプションGlobal Storage Settings Subscription <お客様のサブスクリプション>< your subscription >
    グローバル ストレージ設定のストレージ アカウントGlobal Storage Settings Storage Account <お客様のストレージ アカウント>< your storage account >
    カスタム コード ストレージ設定のリソースCustom Code Storage Settings Resource 現在のアカウントからデータ ソースを選択しますChoose data source from current account
    カスタム コード ストレージ設定のストレージ アカウントCustom Code Storage Settings Storage Account <お客様のストレージ アカウント>< your storage account >
    カスタム コード ストレージ設定のコンテナーCustom Code Storage Settings Container <お客様のストレージ コンテナー>< your storage container >
  2. [入力] の下で、[Input.json] をダブルクリックします。Under Inputs, double-click Input.json. 次の設定を除き、既定の構成を使用します。Use the default configurations, except for the following settings:

    設定Setting 推奨値Suggested Value
    sourceSource Blob StorageBlob Storage
    リソースResource 現在のアカウントからデータ ソースを選択しますChoose data source from current account
    サブスクリプションSubscription <お客様のサブスクリプション>< your subscription >
    ストレージ アカウントStorage Account <お客様のストレージ アカウント>< your storage account >
    コンテナーContainer <お客様のストレージ コンテナー>< your storage container >
    イベントのシリアル化の形式Event Serialization Format その他 (Protobuf、XML、専用...)Other (Protobuf, XML, proprietary...)
    リソースResource ASA プロジェクト参照または分離コードから読み込みますLoad from ASA Project Reference or CodeBehind
    CSharp アセンブリ名CSharp Assembly Name ProtobufDeserializer.dllProtobufDeserializer.dll
    Class Name (クラス名)Class Name MessageBodyProto.MessageBodyDeserializerMessageBodyProto.MessageBodyDeserializer
    イベントの圧縮タイプEvent Compression Type なしNone
  3. 次のクエリを Script.asaql ファイルに追加します。Add the following query to the Script.asaql file.

    SELECT * FROM Input
    
  4. サンプルの protobuf 入力ファイルをダウンロードします。Download the sample protobuf input file. [入力] フォルダーで [Input.json] を右クリックし、[ローカル入力の追加] を選択します。In the Inputs folder, right-click Input.json and select Add Local Input. 次に、[local_Input.json] をダブルクリックし、次の設定を構成します。Then, double-click local_Input.json and configure the following settings:

    設定Setting 推奨値Suggested Value
    入力のエイリアスInput Alias 入力Input
    ソースの種類Source Type データ ストリームData Stream
    イベントのシリアル化の形式Event Serialization Format その他 (Protobuf、XML、専用...)Other (Protobuf, XML, proprietary...)
    CSharp アセンブリ名CSharp Assembly Name ProtobufDeserializer.dllProtobufDeserializer.dll
    Class Name (クラス名)Class Name MessageBodyProto.MessageBodyDeserializerMessageBodyProto.MessageBodyDeserializer
    ローカル入力ファイルのパスLocal Input File Path <ダウンロードしたサンプル protobuf 入力ファイルのファイル パス>< the file path for the downloaded sample protobuf input file>

Stream Analytics ジョブを実行するExecute the Stream Analytics job

  1. Script.asaql を開き、[ローカルで実行] を選択します。Open Script.asaql and select Run Locally.

  2. [Stream Analytics ローカル実行の結果] で結果を確認します。Observe the results in Stream Analytics Local Run Results.

Stream Analytics ジョブのカスタム逆シリアライザーが正常に実装されました。You have successfully implemented a custom deserializer for your Stream Analytics job! このチュートリアルでは、カスタム逆シリアライザーをローカルでテストしました。In this tutorial, you tested the custom deserializer locally. 実際のデータの場合は、入力と出力を適切に構成してください。For your actual data, you would properly configure the input and output. その後、Visual Studio から Azure にジョブを送信し、実装したカスタム逆シリアライザーを使用してクラウドでジョブを実行します。Then submit the job to Azure from Visual Studio to run your job in the cloud using the custom deserializer you just implemented.

逆シリアライザーをデバッグするDebug your deserializer

標準の.NET コードをデバッグするのと同じ方法で、.NET 逆シリアライザーをローカルでデバッグできます。You can debug your .NET deserializer locally the same way you debug standard .NET code.

  1. ProtobufCloudDeserializer プロジェクト名を右クリックし、[スタートアップ プロジェクト] として設定します。Right click ProtobufCloudDeserializer project name and set it as startup project.

  2. 関数にブレークポイントを追加します。Add breakpoints in your function.

  3. F5 キーを押してデバッグを開始します。Press F5 to start debugging. 期待どおりに、プログラムはブレークポイントで停止します。The program will stop at your breakpoints as expected.

リソースをクリーンアップするClean up resources

リソース グループ、ストリーミング ジョブ、および関連するすべてのリソースは、不要になったら削除します。When no longer needed, delete the resource group, the streaming job, and all related resources. ジョブを削除すると、ジョブによって消費されるストリーミング ユニットに対する課金を回避することができます。Deleting the job avoids billing the streaming units consumed by the job. ジョブを後で使用する計画がある場合は、ジョブを停止し、必要なときに再起動することができます。If you're planning to use the job in future, you can stop it and restart it later when you need. このジョブの使用を続けない場合は、以下の手順に従って、このチュートリアルで作成したすべてのリソースを削除してください。If you are not going to continue to use this job, delete all resources created by this tutorial by using the following steps:

  1. Azure Portal の左側のメニューで [リソース グループ] を選択し、作成したリソースの名前を選択します。From the left-hand menu in the Azure portal, select Resource groups and then select the name of the resource you created.

  2. リソース グループのページで [削除] を選択し、削除するリソースの名前をテキスト ボックスに入力してから [削除] を選択します。On your resource group page, select Delete, type the name of the resource to delete in the text box, and then select Delete.

次のステップNext steps

このチュートリアルでは、プロトコル バッファー入力のシリアル化に対して、カスタム .NET 逆シリアライザーを実装する方法について学習しました。In this tutorial, you learned how to implement a custom .NET deserializer for the protocol buffer input serialization. カスタム逆シリアライザーの作成の詳細については、次の記事を参照してください。To learn more about creating custom deserializers, continue to the following article: