Apache Flink - Tạo ứng dụng Flink

Trong chương này, chúng ta sẽ học cách tạo một ứng dụng Flink.

Mở Eclipse IDE, nhấp vào Dự án mới và Chọn Dự án Java.

Đặt Tên dự án và nhấp vào Kết thúc.

Bây giờ, nhấp vào Kết thúc như được hiển thị trong ảnh chụp màn hình sau.

Bây giờ, nhấp chuột phải vào src và chuyển đến New >> Class.

Đặt tên lớp và nhấp vào Kết thúc.

Sao chép và dán đoạn mã dưới đây vào Trình chỉnh sửa.

import org.apache.flink.api.common.functions.FlatMapFunction;
import org.apache.flink.api.java.DataSet;
import org.apache.flink.api.java.ExecutionEnvironment;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.api.java.utils.ParameterTool;
import org.apache.flink.util.Collector;
public class WordCount {

   // *************************************************************************
   // PROGRAM
   // *************************************************************************
   public static void main(String[] args) throws Exception {
      final ParameterTool params = ParameterTool.fromArgs(args);
      // set up the execution environment
      final ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
      // make parameters available in the web interface
      env.getConfig().setGlobalJobParameters(params);
      // get input data
      DataSet<String> text = env.readTextFile(params.get("input"));
      DataSet<Tuple2<String, Integer>> counts =
      // split up the lines in pairs (2-tuples) containing: (word,1)
      text.flatMap(new Tokenizer())
      // group by the tuple field "0" and sum up tuple field "1"
      .groupBy(0)
      .sum(1);
      // emit result
      if (params.has("output")) {
         counts.writeAsCsv(params.get("output"), "\n", " ");
         // execute program
         env.execute("WordCount Example");
      } else {
         System.out.println("Printing result to stdout. Use --output to specify output path.");
         counts.print();
      }
   }
   
   // *************************************************************************
   // USER FUNCTIONS
   // *************************************************************************
   public static final class Tokenizer implements FlatMapFunction<String, Tuple2<String, Integer>> {
      public void flatMap(String value, Collector<Tuple2<String, Integer>> out) {
         // normalize and split the line
         String[] tokens = value.toLowerCase().split("\\W+");
         // emit the pairs
         for (String token : tokens) {
            if (token.length() > 0) {
               out.collect(new Tuple2<>(token, 1));
            }
         }
      }
   }
}

Bạn sẽ gặp nhiều lỗi trong trình soạn thảo, vì các thư viện Flink cần được thêm vào dự án này.

Nhấp chuột phải vào dự án >> Đường dẫn xây dựng >> Định cấu hình Đường dẫn xây dựng.

Chọn tab Thư viện và nhấp vào Thêm JAR bên ngoài.

Vào thư mục lib của Flink, chọn tất cả 4 thư viện và nhấp vào OK.

Chuyển đến tab Đặt hàng và Xuất, chọn tất cả các thư viện và nhấp vào OK.

Bạn sẽ thấy rằng các lỗi không còn nữa.

Bây giờ, hãy để chúng tôi xuất ứng dụng này. Nhấp chuột phải vào dự án và nhấp vào Xuất.

Chọn tệp JAR và nhấp vào Tiếp theo

Đưa ra một đường dẫn đích và nhấp vào Tiếp theo

Nhấp vào Tiếp theo>

Bấm vào Duyệt, chọn lớp chính (WordCount) và bấm Kết thúc.

Note - Nhấn OK, trong trường hợp bạn nhận được bất kỳ cảnh báo nào.

Chạy lệnh dưới đây. Nó sẽ tiếp tục chạy ứng dụng Flink mà bạn vừa tạo.

./bin/flink run /home/ubuntu/wordcount.jar --input README.txt --output /home/ubuntu/output