シナリオ

DataWorks は Alibaba Cloud のデータ中継サービスです。DataWorks は、Log Service の収集したログファイルを MaxCompute に送信します。MaxCompute に送信されたログファイルは保存され、分析できるようになります。MaxCompute では、オフライン処理を行うことができます。オンライン分析処理 (OLAP) の必要がある場合、DataWorks より MaxCompute に送信されたログファイルをエクスポート、また、その処理結果を Log Service にエクスポートします。Log Service はエクスポートされたデータをリアルタイムに検索/分析します。

実装

LogHub Writer は、Reader の生成するデータを DataWorks を介して取得し、DataWorks で使用されたデータ型を文字列型に変換します。データ量が指定の batchSize に達すると、LogHub Writer は Log Service Java SDK を使用してすべてのデータを Log Service に一括送信します。 デフォルトでは、LogHub Writer は 1,024 件を一括送信します (最大batchSize: 4096)。

前提条件

  1. Log Service を有効化し、プロジェクトおよび Logstore を作成していること。
  2. MaxCompute を有効化し、テーブルを作成していること。
  3. DataWorks を有効化していること。

手順

  1. DataWorks コンソールにログインして LogHub データソースを作成します。

    データソースの作成方法については、「Dataworks を介した MaxCompute へのデータ転送」をご参照ください。

  2. スクリプトモードで同期タスクを作成します。
    1. 左側のナビゲーションメニューより、同期タスクスクリプトモード と順にクリックし、同期タスクを設定します。
      図 1. スクリプトモード


    2. インポートテンプレートでパラメータを指定します。
      図 2. インポートテンプレート


      パラメータ 説明
      ソースタイプ データソースの種類は、ODPS にします。
      データソース データソースの名前。 データソース追加 をクリックしてデータソースを作成することもできます。
      オブジェクトタイプ 送信するオブジェクトタイプは LogHub にします。
      データソース 送信オブジェクトの名前。手順 1 で作成した LogHub データの送信先を選択するか、データソース追加 をクリックしてデータの送信先を作成します。

      確認 をクリックし、同期タスクの設定に進みます。

    3. 設定情報を入力します。
      {
        "type": "job",
        "version": "1.0",
        "configuration": {
          "setting": {
            "errorLimit": {
              "record": "0"
            },
            "speed": {
              "mbps": "1",
              "concurrent": 1,
              "dmu": 1,
              "throttle": false
            }
          },
          "reader": {
            "plugin": "odps",
            "parameter": {
                     "accessKey":"*****",
                 "accessId":"*****",
                 "column":["*"],
                 "isCompress":"false",
                 "partition":["pt=20161226"],
                 "project":"aliyun_account",
                 "table":"ak_biz_log_detail"
            }
          },
          "writer": {
            "plugin": "loghub",
            "parameter": {
              "endpoint": "",
              "accessId": "",
              "accessKey": "",
              "project": "",
              "logstore": "",
              "batchSize": "1024",
              "topic": "",
              "time" :"time_str",
              "timeFormat":"%Y_%m_%d %H:%i:%S",
              "column": [
                "col0",
                "col1",
                "col2",
                "col3",
                "col4",
                "col5"
              ],
              "datasource": "sls"
            }
          }
        }
      }
      パラメータ 必須項目 説明
      endpoint はい Log Service のエンドポイント。 詳細は、サービスエンドポイントをご参照ください。
      accessKeyId はい Alibaba Cloud アカウントまたは RAM ユーザーの AccessKeyId
      accessKeySecret はい Alibaba Cloud アカウントまたは RAM ユーザーの AccessKeySecret
      project はい Log Service 内の対象プロジェクト名
      logstore はい Log Service 内の対象 Logstore 名
      topic いいえ Log Service のトピックフィールドとして指定する MaxCompute のフィールド (デフォルトは空の文字列)
      batchSize いいえ LogHub Writer が一括送信するエントリ数 (デフォルトは 1024)
      column はい 各エントリのカラム名
      column パラメータにカラムを指定しない場合、カラムはダーティーデータ (不要データ) と見なされます。
      time いいえ time フィールドの名前
      time フィールドを指定しない場合は、システム時間になります。
      timeFormat time フィールドを指定した場合、timeFormat の指定は必須です。 timeFormat の書式:
      • bigint: unix のタイムスタンプ
      • timestamp: 文字列で取得された時間 (例:%Y_%m_%d %H:%M:%S)

      bigint 型の time フィールドの値が「1529382552」の場合、timeFormat フィールドは bigint になります。 time フィールドが文字列「2018_06_19 12:30:25」の場合、timeFormat フィールドは %Y_%m_%d %H:%M:%Sになります。

      datasource はい DataWorks で定義されているデータ型
  3. タスクを保存し、実行します。
    保存 をクリックして、この同期タスクの保存先のパスを指定します。 このタスクをそのまま実行することも、スケジュールシステムに送信することもできます。
    図 3. 同期タスクの実行


    • タスクの実行

      実行をクリックして、すべてのデータの同期を開始します。

    • タスクのスケジュール
      送信をクリックして、タスクをスケジューリングシステムに送信します。 タスクを受信したスケジューリングシステムは、設定に従って自動的に実行します。
      スケジューリングサイクルはパーティション生成サイクルと同じ設定にすることを推奨します。 たとえば、1 時間ごとにデータ収集してパーティション生成する場合、スケジューリングサイクルも 1 時間にします。

      タスクのスケジュール方法については、「DataWorks を介した MaxCompute へのデータ転送」をご参照ください。

データ型

DataWorks を使用して MaxCompute データを Log Service にインポートすると、下表のとおり、すべてのデータ型は文字列型に変換されます。

MaxCompute データ型 LogHub にインポート後のデータ型
Long String
Double String
String String
Data String
Boolean String
Bytes String