【发布时间】:2020-07-26 17:13:27
【问题描述】:
我想分析 Flink 对 RocksDB 进行的每个 API 调用所花费的时间。但是,我找不到这些功能。
我曾尝试在 IDE 中设置 Flink 的完整源代码,将我的流式示例集成到源代码中,启动调试器并单步执行许多调用,但都是徒劳的。
示例如下:
package org.apache.flink.streaming.examples.spendreport;
import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.walkthrough.common.entity.Alert;
import org.apache.flink.walkthrough.common.entity.Transaction;
import org.apache.flink.walkthrough.common.sink.AlertSink;
import org.apache.flink.walkthrough.common.source.TransactionSource;
import org.apache.flink.contrib.streaming.state.RocksDBStateBackend;
/**
* Normal code.
*/
public class FraudDetectionAvi {
public static void main(String[] args) throws Exception {
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
DataStream<Transaction> transactions = env
.addSource(new TransactionSource())
.name("transactions");
env.enableCheckpointing(60000);
env.setStateBackend(new RocksDBStateBackend("file:///home/avsrivas/dev/flink/checkpoints", true));
DataStream<Alert> alerts = transactions
.keyBy(Transaction::getAccountId)
.process(new FraudDetectorAvi())
.name("fraud-detector");
alerts
.addSink(new AlertSink())
.name("send-alerts");
env.execute("Fraud Detection");
}
}
点击here查看完整源代码。
我尝试单步执行,但无法推断调用 RocksDB 以保存状态的函数。
【问题讨论】:
标签: java apache-flink flink-streaming rocksdb