収集したログをSimple Log Serviceコンソールでリアルタイムで照会し、ビジネスインテリジェンス (BI) 分析とデータマイニングのためにMaxComputeに送信できます。 このトピックでは、Simple Log ServiceコンソールでログをMaxComputeに送信する方法について説明します。
前提条件
MaxComputeが有効化され、MaxComputeテーブルが作成されます。 詳細については、「テーブルの作成」をご参照ください。
制限事項
データシッピングジョブは、Alibaba Cloudアカウントを使用してのみ作成できます。 RAMユーザーを使用してデータ配布ジョブを作成することはできません。
複数のLogstoreからMaxComputeテーブルにログを送信しないでください。 複数のLogstoreからMaxComputeテーブルにログを送信すると、MaxComputeテーブルの既存のデータが上書きされる可能性があります。
当日の14日前に生成されたログは、データ配布ジョブで自動的に破棄されます。 _time_ フィールドは、ログが生成される時点を指定します。
データ型がDECIMAL、DATETIME、DATE、またはTIMESTAMPのログをMaxComputeに送信することはできません。 詳細については、「MaxCompute V2.0データ型エディション」をご参照ください。
次の表に、MaxComputeへのデータ転送をサポートするリージョンを示します。 Simple Log Serviceが他のリージョンにデプロイされている場合は、DataWorksを使用してデータを同期します。 詳細については、「Data Integrationを使用してLogHubデータソースのデータを宛先に同期する」をご参照ください。
Simple Log Serviceプロジェクトが存在するリージョン | MaxComputeプロジェクトが存在するリージョン |
Simple Log Serviceプロジェクトが存在するリージョン | MaxComputeプロジェクトが存在するリージョン |
中国 (青島) | 中国 (上海) |
中国 (北京) | 中国 (北京) と中国 (上海) |
中国 (張家口) | 中国 (上海) |
中国 (フフホト) | 中国 (上海) |
中国 (杭州) | 中国 (上海) |
中国 (上海) | 中国 (上海) |
中国 (深セン) | 中国 (深セン) と中国 (上海) |
中国 (香港) | 中国 (上海) |
ステップ1: データ配布ジョブの作成
Simple Log Serviceコンソール.
[プロジェクト] セクションで、管理するプロジェクトをクリックします。

を選択します。 [Logstores] タブで、管理するLogstoreを見つけ、> をクリックし、 を選択します。
MaxCompute (旧ODPS) LogShipperページで、[有効化] をクリックします。
[配送メモ] ダイアログボックスで、[配送] をクリックします。
[MaxComputeにデータを発送] パネルで、発送ルールを設定し、[OK] をクリックします。
下表に、各パラメーターを説明します。
パラメーター | 説明 |
[リージョンの選択] | MaxComputeがサポートされているリージョンは、Simple Log Serviceプロジェクトが存在するリージョンによって異なります。 詳細については、「制限事項」をご参照ください。 |
配送ジョブ名 | データ配布ジョブの名前。 |
MaxComputeプロジェクト名 | MaxCompute プロジェクトの名前を設定します。 |
テーブル名 | MaxComputeテーブルの名前。 |
MaxCompute共通列 | MaxComputeテーブルのログフィールドとデータ列の間のマッピング。 左側のフィールドに、MaxComputeテーブルのデータ列にマップするログフィールドの名前を入力します。 右側のフィールドに、列の名前を入力します。 詳細については、「データモデルマッピング」をご参照ください。 重要 Simple Log Serviceは、指定されたログフィールドとMaxComputeテーブル列の順序に基づいて、ログをMaxComputeに送信します。 これらの列の名前を変更しても、データ配布プロセスには影響しません。 MaxComputeテーブルのスキーマを変更する場合は、ログフィールドとMaxComputeテーブル列の間のマッピングを再設定する必要があります。 左側のフィールドで指定するログフィールドの名前には、二重引用符 ("") または一重引用符 (") を含めることはできません。 名前はスペースを含む文字列にすることはできません。 ログにrequest_timeなどの同じ名前の2つのフィールドが含まれている場合、log Serviceはいずれかのフィールドをrequest_time_0として表示します。 2つのフィールドは引き続きrequest_timeとしてLog Serviceに保存されます。 配送ルールを設定する場合、元のフィールド名request_timeのみを使用できます。 ログに同じ名前のフィールドが含まれている場合、log Serviceはいずれかのフィールドの値をランダムに送信します。 同じ名前のフィールドをログに含めないことをお勧めします。
|
MaxComputeパーティション列 | MaxComputeテーブルのログフィールドとパーティションキー列の間のマッピング。 左側のフィールドに、MaxComputeテーブルのパーティションキー列にマップするログフィールドの名前を入力します。 右側のフィールドに、列の名前を入力します。 詳細については、「データモデルマッピング」をご参照ください。 説明 最大3つのパーティションキー列を指定できます。 カスタムフィールドをパーティションキー列として指定する場合は、データ配布ジョブで生成できるパーティションの数が512未満であることを確認してください。 パーティションの数が512以上の場合、データ配布ジョブは指定されたMaxComputeテーブルにデータを書き込むことができず、データを配布することはできません。 |
パーティション形式 | パーティション形式の設定例とパラメーターについては、「examples」および「Java SimpleDateFormat」をご参照ください。 説明 パーティション形式は、MaxCompute partition Columnパラメーターのpartitionフィールドが __partition_time__ に設定されている場合にのみ有効になります。 秒単位の時間パーティション形式を指定しないことをお勧めします。 秒単位のタイムパーティション形式を指定すると、MaxComputeテーブルのパーティション数が60,000を超える可能性があります。 各データ配布ジョブで処理されるパーティションの数が512未満であることを確認します。
|
配送間隔 | データ配布ジョブの期間。 デフォルト値: 1800 単位は秒です。 指定された期間が経過すると、別のデータ配布ジョブが作成されます。 |
データ転送が有効になると、ログデータはLogstoreに書き込まれてから1時間後にMaxComputeに転送されます。 ログデータの出荷後、MaxComputeでログデータを表示できます。 詳細については、「」をご参照ください。Simple Log ServiceからMaxComputeに出荷されるデータの完全性を確認するにはどうすればよいですか?
ステップ2: MaxComputeでデータを表示する
データがMaxComputeに出荷された後、MaxComputeでデータを表示できます。 サンプルデータを次のコードに示します。 MaxComputeと統合されたビッグデータ開発ツールdata IDEを使用して、データを消費し、BI分析とデータマイニングを視覚化して実行できます。
| log_source | log_time | log_topic | time | ip | thread | log_extract_others | log_partition_time | status |
+------------+------------+-----------+-----------+-----------+-----------+------------------+--------------------+-----------+
| 10.10.*.* | 1453899013 | | 27/Jan/2016:20:50:13 +0800 | 10.10.*.* | 414579208 | {"url":"POST /PutData?Category=YunOsAccountOpLog&AccessKeyId=****************&Date=Fri%2C%2028%20Jun%202013%2006%3A53%3A30%20GMT&Topic=raw&Signature=******************************** HTTP/1.1","user-agent":"aliyun-sdk-java"} | 2016_01_27_20_50 | 200 |
+------------+------------+-----------+-----------+-----------+-----------+------------------+--------------------+-----------+
Simple Log Serviceのアカウントにデータを送信する権限を付与する
DataWorksコンソールでMaxComputeテーブルを削除して新しいMaxComputeテーブルを作成すると、前のテーブルに対して実行されたデフォルトの権限付与は無効になります。 Simple Log Serviceにデータを送信する権限を付与する必要があります。
DataWorks コンソールにログインします。
上部のナビゲーションバーで、必要なリージョンを選択します。
左側のナビゲーションペインで、[ワークスペース] をクリックします。
[ワークスペース] ページで、管理するワークスペースを見つけ、ポインターを [ショートカット] に移動し、[データ開発] をクリックします。
ワークフローの作成
[スケジュールされたワークフロー] ページで、 を選択します。
[ワークフローの作成] ダイアログボックスで、[ワークフロー名] パラメーターを設定し、[作成] をクリックします。
ノードを作成します。
[スケジュールされたワークフロー] ページで、 を選択します。
[ノードの作成] ダイアログボックスで、[名前] と [パス] パラメーターを設定し、[コミット] をクリックします。
手順5で作成したワークフローにパスを設定する必要があります。
ノードのエディタで、必要なコマンドを実行して承認を完了します。 次の表にコマンドを示します。

コマンド | 説明 |
ADD USER aliyun$shennong_open@aliyun.com;
| MaxComputeプロジェクトにユーザーを追加します。 shennong_open@aliyun.comは、Simple Log Serviceのアカウントを示します。 この値は変更できません。 |
GRANT Read、List ON PROJECT {ODPS_PROJECT_NAME} TO USER aliyun$shennong_open@aliyun.com;
| MaxComputeプロジェクトを読み取り、照会する権限をユーザーに付与します。 {ODPS_PROJECT_NAME} は、MaxComputeプロジェクトの名前を指定します。 変数を実際のプロジェクト名に置き換えます。 |
GRANT Describe、Alter、Update ON TABLE {ODPS_TABLE_NAME} TO USER aliyun$shennong_open@aliyun.com;
| ユーザーにDescribe権限、Alter権限、およびUpdate権限を付与します。 {ODPS_TABLE_NAME} は、MaxComputeテーブルの名前を指定します。 変数を実際のテーブル名に置き換えます。 |
aliyun$shennong_open@aliyun.com;
| 承認が成功したかどうかを確認します。 次の例に似た出力が表示された場合、承認は成功します。
A projects/{ODPS_PROJECT_NAME}: List | Read
A projects/{{ODPS_PROJECT_NAME}/tables/{ODPS_TABLE_NAME}: Describe | Alter | Update
|
関連する API 操作
データシッピングジョブを作成した後、MaxCompute (旧ODPS) LogShipperページでジョブを変更できます。 データ配布機能を無効にしたり、ジョブのステータスとエラーメッセージを表示したり、失敗したジョブを再試行したりすることもできます。
データ配布ジョブを変更します。
[設定] をクリックして、データ配布ジョブを変更します。 パラメーターの詳細については、「手順1: データ配布ジョブの作成」をご参照ください。 列を追加する場合は、MaxComputeの対応するテーブルのスキーマを変更できます。
データ配布機能を無効にします。
[無効化] をクリックします。 LogstoreのデータはMaxComputeに送信されなくなりました。
データシッピングジョブのステータスとエラーメッセージを表示します。
過去2日間に実行されたデータ配布ジョブとジョブのステータスを表示できます。
ジョブステータス
ステータス | 説明 |
Success | データ配布ジョブが成功しました。 |
Running | データ配布ジョブが実行中です。 ジョブが後で成功するかどうかを確認します。 |
失敗した | データ配布ジョブに失敗しました。 外部からの理由でジョブを再起動できない場合は、エラーメッセージに基づいて障害のトラブルシューティングを行い、ジョブを再試行してください。 たとえば、MaxComputeスキーマがSimple Log Serviceの仕様に準拠していないか、またはSimple Log ServiceがMaxComputeへのアクセスを許可されていません。 Simple Log Serviceを使用すると、過去2日間に失敗したすべてのジョブを再試行できます。 |
エラーメッセージ
データ配布ジョブが失敗した場合、ジョブのエラーメッセージが返されます。
エラーメッセージ | 解決策 |
MaxComputeプロジェクトは存在しません。 | 指定されたMaxComputeプロジェクトがMaxComputeコンソールに存在するかどうかを確認します。 MaxComputeプロジェクトが存在しない場合は、MaxComputeプロジェクトを作成する必要があります。 Simple Log Serviceは、このエラーにより失敗したジョブを自動的に再試行しません。 問題を修正した後、ジョブを手動で再試行する必要があります。 |
MaxComputeテーブルは存在しません。 | 指定されたMaxComputeテーブルがMaxComputeコンソールに存在するかどうかを確認します。 MaxComputeテーブルが存在しない場合は、MaxComputeテーブルを作成する必要があります。 Simple Log Serviceは、このエラーにより失敗したジョブを自動的に再試行しません。 問題を修正した後、ジョブを手動で再試行する必要があります。 |
Simple Log Serviceは、MaxComputeプロジェクトまたはテーブルへのアクセスを許可されていません。 | MaxComputeコンソールで、Simple log Serviceへのログインに使用されるアカウントに必要な権限が付与されているかどうかを確認します。 そうでない場合は、アカウントに権限を付与します。 詳細については、「Simple Log Serviceのアカウントにデータを送信する権限を付与する」をご参照ください。 Simple Log Serviceは、このエラーにより失敗したジョブを自動的に再試行しません。 問題を修正した後、ジョブを手動で再試行する必要があります。 |
MaxComputeエラーが発生しました。 | データ配布ジョブに対してMaxComputeエラーが返されます。 詳細については、MaxComputeのドキュメントを参照するか、MaxComputeテクニカルサポートにお問い合わせください。 Simple Log Serviceは、過去2日間に失敗したすべてのジョブを自動的に再試行します。 |
MaxComputeスキーマがSimple Log Serviceの仕様に準拠していません。 | MaxComputeテーブルの列とSimple log Serviceのログフィールドの間のマッピングを再構成します。 Simple Log Serviceは、このエラーにより失敗したジョブを自動的に再試行しません。 問題を修正した後、ジョブを手動で再試行する必要があります。 |
データ配布ジョブの再試行
SIMPLE Log Serviceは、内部エラーのために失敗したジョブを自動的に再試行します。 それ以外の場合は、失敗したジョブを手動で再試行する必要があります。 2つの連続した自動再試行の最小間隔は30分です。 ジョブが失敗した場合は、30分待ってからジョブを再試行してください。 Simple Log Serviceを使用すると、過去2日間に失敗したすべてのジョブを再試行できます。
失敗したジョブをすぐに再試行するには、[すべての失敗したタスクを再試行] をクリックします。 API操作を呼び出すか、SDKを使用してジョブを再試行することもできます。