[英]Store kafka data in hdfs as parquet format using flink?
使用 flink 將 kafka 數據以鑲木地板格式存儲在 hdfs 中,我正在嘗試使用不起作用的 fink 文檔。
我沒有找到任何適當的文件來將其存儲為鑲木地板文件
final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.setParallelism(1);
env.enableCheckpointing(100);
final List<Datum> data = Arrays.asList(new Datum("a", 1), new Datum("b", 2), new Datum("c", 3));
DataStream<Datum> stream = env.addSource(new FiniteTestSource<>(data), TypeInformation.of(Datum.class));
stream.addSink(
StreamingFileSink.forBulkFormat(
Path.fromLocalFile(new File("path")),
ParquetAvroWriters.forReflectRecord(String.class))
.build());
env.execute();
我創建了一個可序列化的類
public static class Datum implements Serializable {
public String a;
public int b;
public Datum() {
}
public Datum(String a, int b) {
this.a = a;
this.b = b;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
Datum datum = (Datum) o;
return b == datum.b && (a != null ? a.equals(datum.a) : datum.a == null);
}
@Override
public int hashCode() {
int result = a != null ? a.hashCode() : 0;
result = 31 * result + b;
return result;
}
}
上面的代碼沒有將任何數據寫入文件,它只是不斷地創建許多文件。
如果有人可以幫助提供適當的文檔或代碼
正如documentation of StreamingFileSink
所寫:
重要提示:使用 StreamingFileSink 時需要啟用檢查點。 零件文件只能在成功的檢查點上完成。 如果檢查點被禁用,部分文件將永遠處於
in-progress
或pending
狀態,並且下游系統無法安全讀取。
要啟用,只需使用
env.enableCheckpointing(1000);
你有很多選擇來調整它。
這是一個完整的例子
final List<Address> data = Arrays.asList(
new Address(1, "a", "b", "c", "12345"),
new Address(2, "p", "q", "r", "12345"),
new Address(3, "x", "y", "z", "12345")
);
final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.setParallelism(1);
env.enableCheckpointing(100);
DataStream<Address> stream = env.addSource(
new FiniteTestSource<>(data), TypeInformation.of(Address.class));
stream.addSink(
StreamingFileSink.forBulkFormat(
Path.fromLocalFile(folder),
ParquetAvroWriters.forSpecificRecord(Address.class))
.build());
env.execute();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.