Apache Flink - Flink Uygulaması Oluşturma
Bu bölümde, bir Flink uygulamasının nasıl oluşturulacağını öğreneceğiz.
Eclipse IDE'yi açın, Yeni Proje'ye tıklayın ve Java Projesi Seçin.
Proje Adı verin ve Bitir'e tıklayın.
Şimdi, aşağıdaki ekran görüntüsünde gösterildiği gibi Bitir'e tıklayın.
Şimdi sağ tıklayın src ve Yeni >> Sınıfa gidin.
Bir sınıf adı verin ve Bitir'e tıklayın.
Aşağıdaki kodu kopyalayıp Editör'e yapıştırın.
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));
}
}
}
}
}
Editörde birçok hata alacaksınız çünkü bu projeye Flink kitaplıklarının eklenmesi gerekiyor.
Projeye sağ tıklayın >> Yol Oluştur >> Yapı Yolunu Yapılandır.
Kitaplıklar sekmesini seçin ve Harici JAR Ekle üzerine tıklayın.
Flink'in kitaplık dizinine gidin, 4 kitaplığın hepsini seçin ve Tamam'a tıklayın.
Sırala ve Ver sekmesine gidin, tüm kitaplıkları seçin ve Tamam'a tıklayın.
Artık hataların olmadığını göreceksiniz.
Şimdi bu uygulamayı dışarı aktaralım. Projeye sağ tıklayın ve Dışa Aktar'a tıklayın.
JAR dosyasını seçin ve İleri'ye tıklayın
Bir hedef yol verin ve İleri'ye tıklayın
İleri'ye tıklayın>
Gözat'a tıklayın, ana sınıfı (WordCount) seçin ve Bitir'e tıklayın.
Note - Herhangi bir uyarı almanız durumunda Tamam'ı tıklayın.
Aşağıdaki komutu çalıştırın. Yeni oluşturduğunuz Flink uygulamasını daha da çalıştıracaktır.
./bin/flink run /home/ubuntu/wordcount.jar --input README.txt --output /home/ubuntu/output