3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Apache Hop] ローコードでETL処理を実装してWebサービスにしてみた(非同期編)

Last updated at Posted at 2022-05-07

紹介したいこと

Apaceh Hopでは、ローコードで実装した処理をWebサービスとして外部に公開できることを、前回に紹介しました。

続いて、時間のかかる処理を呼び出すための非同期処理(async)のWebサービスの実装方法について紹介します。
image.png

  • Apaceh Hopで処理の流れ(Workflow)を定義します。Async Web Serviceとして、その処理を登録します。
  • ① Webサービスでサービス名を指定して呼び出すことで実行することができます。このときに渡したいデータをJSONなどで渡すこと(Post)ができます。
  • ② 実行している処理の状態をクエリして確認することができます。このときには、サービス名とIDを指定して呼び出します。

対象者

  • Apache Hop (データ統合プラットフォーム) を使ってみたいかた。データ収集、変換処理をしたいかた。
  • ローコードでETL処理を実装してWebサービスを作成したい方。
  • 長い時間のかかる処理を呼び出したいかた。

前提環境

  • Apache Hopの環境を構築している
  • Webサービス(同期処理)を試したことある
    現時点(2022/05/07時点)で最新であるApache Hop 1.2.0を例として説明します。

手順の流れ

  • 変換処理を定義する
  • Webサービスとして公開する
  • 動作を確認する

変換処理(Workflow)を定義する

  • Hop GUIを起動してWorkflowを新規作成します。以下のようなWorkflowを定義します。
    image.png

  • GetPostData.hplではPostしたデータを取得することを試しました。Postしたデータは、変数に格納できます。以下の例では変数ASYNC_CONTENTに格納して、Get variablesで取得してText file outputでファイルに出力してみました。
    image.png

  • テストのためWait forでは20秒待機するように定義しました。

Webサービスとして公開する

  • Hop GUIのMetadataタブを開き、Asynchronous Web Serviceを右クリックしてNewで定義を作成します。

  • AsyncWebという名前でサービスを定義して保存します。
    image.png

Name: Webサービス名前を定義します。
Enabled?: チェックを有効にします。
Filename: 上記で作成したWorkflowのファイルを指定します。
Content variable: ASYNC_CONTENT Postしたデータを格納する変数名

動作を確認する

コマンドプロンプトでcurlコマンドでWebサービス(AsyncWeb)を呼び出し非同期処理を実行します。

curl -v --user cluster:cluster --request POST 
-o async-run.json -H "Content-Type: application/json" 
--data-binary "@document.json" 
"http://localhost:8181/hop/asyncRun/?service=AsyncWeb&MAX=50000000"

サービス名は、AsyncWebを指定しています。
Postしたいjsonデータのファイル(document.json)を指定しています。

async-run.jsonに実行結果が出力されます。以下のidで処理が登録されました。

{"name":"dataload","id":"63b824b6-da7f-46ba-8219-e049ac69f1d6"}

以下のコマンドを実行して上記で実行した非同期処理の状態を確認します。

curl --user cluster:cluster --request GET "http://localhost:8181/hop/asyncStatus/?service=AsyncWeb&id=63b824b6-da7f-46ba-8219-e049ac69f1d6"

以下のレスポンスが返ってきます。

{
  "service" : "AsyncWeb",
  "id" : "63b824b6-da7f-46ba-8219-e049ac69f1d6",
  "logDate" : "2022-05-07T07:29:58.506+0000",
  "startDate" : "2022-05-07T07:26:52.204+0000",
  "endDate" : "2022-05-07T07:27:12.414+0000",
  "statusDescription" : "Finished",
  "statusVariables" : { },
  "pipelineStatuses" : [ ]
}

hop Serverにアクセスすると、登録した非同期処理の状態を確認できます。
http://localhost:8181
image.png

まとめ

  • ローコードで時間のかかるETL処理を実装して、非同期Webサービスとして公開することをためしてみました。このWebサービスの機能は、Apache Hopの特徴の機能の1つとなります。
  • もしも、興味をもっていただき詳細を知りたい場合には、公式のWebページを参照ください。

参考

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?