1. 程式人生 > 其它 >Flink基礎(69):FLINK SQL(46) 自定義函式(五)使用IntelliJ IDEA開發自定義函式

Flink基礎(69):FLINK SQL(46) 自定義函式(五)使用IntelliJ IDEA開發自定義函式

本文為您介紹如何使用IntelliJ IDEA開發實時計算Flink版自定義函式,包括搭建開發環境和實時計算Flink版作業中引用自定義函式。

背景資訊

注意
  • 僅獨享模式支援自定義函式功能。
  • 請使用IntelliJ IDEA工具開發自定義函式。

配置Maven

  1. 下載Maven。
    1. 登入Maven官網下載頁面
    2. 下載apache-maven-3.5.3-bin.tar.gz。
    3. 解壓下載的安裝包到指定目錄,例如:/Users/<userName>/Documents/maven。
  2. 配置環境變數。
    1. 在Terminal中,執行vim ~/.bash_profile命令。
    2. .bash_profile檔案中新增如下命令。
      export M2_HOME=/Users/<userName>/Documents/maven/apache-maven-3.5.3
      export PATH=$PATH:$M2_HOME/bin
    3. 儲存並關閉.bash_profile檔案。
    4. 執行source ~/.bash_profile命令使配置生效。
  3. 執行mvn -v命令檢視配置是否生效。 如果列印如下資訊,則配置生效。
Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-04T03:39:06+08:00)
Maven home: /Users/<userName>/
Documents/maven/apache-maven-3.5.0 Java version: 1.8.0_121, vendor: Oracle Corporation Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/jre Default locale: zh_CN, platform encoding: UTF-8 OS name: "mac os x", version: "10.12.6", arch: "x86_64", family: "mac"

搭建開發環境

  1. 下載UDX示例
  2. 在Linux環境下解壓下載檔案。
    tar xzvf RealtimeCompute-udxDemo.gz
  3. 開啟IntelliJ IDEA,單擊Open開啟下載的UDX示例。

實時計算Flink版作業引用JAR包

  1. 建立Package。
    1. 右鍵單擊java>New>Package。
    2. New Package中輸入Package名稱。本文以com.hjc.test.blink.sql.udx為例。
    3. 單擊OK。
  2. 建立Class。
    1. 右鍵單擊com.hjc.test.blink.sql.udx>New>Java Class。
    2. Create New Class中,輸入Class名稱。 說明Kind保持預設選擇Class。
    3. 單擊OK。
  3. 在Class中輸入以下程式碼。
package com.hjc.test.blink.sql.udx;

import org.apache.flink.table.functions.FunctionContext;
import org.apache.flink.table.functions.ScalarFunction;

public class StringLengthUdf extends ScalarFunction {
    // 可選,open方法可以不編寫。
    // 如果編寫open方法,需要宣告'import org.apache.flink.table.functions.FunctionContext;'。
    @Override
    public void open(FunctionContext context) {
        }
    public long eval(String a) {
        return a == null ? 0 : a.length();
    }
    public long eval(String b, String c) {
        return eval(b) + eval(c);
    }
    //可選,close方法可以不編寫。
    @Override
    public void close() {
        }
}
  1. 在Terminal中,執行mvn packagemvn assembly:assembly,將專案寫入JAR包。 說明
    • 如果需要將第三方依賴寫入JAR包,請使用mvn assembly:assembly
    • 編譯後的JAR包為RealtimeCompute-udxDemo/target/RTCompute-udx-1.0-SNAPSHOT.jar或RealtimeCompute-udxDemo/target/RTCompute-udx-1.0-SNAPSHOT-jar-with-dependencies.jar(將第三方依賴寫入JAR包)。
  2. 實時計算Flink版作業引用JAR包。
    1. 登入實時計算控制檯
    2. 在頂部選單中,單擊開發。
    3. 在左側的導航欄中,單擊資源引用。
    4. 資源引用頁籤的右上角,單擊新建資源。
      引數名稱說明
      上傳方式 實時計算控制檯上僅支援本地上傳。 說明本地上傳JAR包的大小上限為300 MB。如果JAR包大小超過300 MB,請在叢集繫結的OSS控制檯上,或通過OpenAPI的方式上傳JAR包。
      資源選擇 單擊選擇資源,選擇需要引用的資源。
      資源名稱 輸入資源名稱。
      資源備註 輸入資源備註資訊。
      資源型別 選擇引用資源型別,JAR、DICTIONARY或PYTHON。
    5. 資源引用頁籤中,滑鼠懸停在對應作業的右側的更多上。
    6. 在下拉列表中,選擇引用。
    7. 在作業的編輯視窗頂部,輸入自定義函式宣告,示例如下。
      CREATE FUNCTION stringLengthUdf AS 'com.hjc.test.blink.sql.udx.StringLengthUdf';