Apache flink 弗林克·唐';t在标准输出中打印对象

Apache flink 弗林克·唐';t在标准输出中打印对象,apache-flink,Apache Flink,我正在用flink编写一个简单的程序,但它不会在std输出中打印任何字符串。我试过在流上使用print()方法,在结果上使用reduce函数和after print()方法。这是一个代码: 公共类精简作业{ public static void main(String[] args) throws Exception { final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnviro

我正在用flink编写一个简单的程序,但它不会在std输出中打印任何字符串。我试过在流上使用print()方法,在结果上使用reduce函数和after print()方法。这是一个代码:

公共类精简作业{

public static void main(String[] args) throws Exception {
    final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
    env.enableCheckpointing(10000);
    env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime);
    env.getConfig().setAutoWatermarkInterval(200L);
    List<Oggetto> objects = produciValori();
    DataStream<Oggetto> stream = env.fromCollection(objects);
    stream./*
    timeWindowAll(Time.seconds(5)).reduce(new Reduce()).*/
    print();
    env.execute("Flink Streaming Java Quickstart Mio");
}

private static List<Oggetto> produciValori() {
    List<Oggetto> objects = new ArrayList<>();
    int prop1 = 0;
    int prop2 = 1000;
    String stringa1 = "stringa1: " + prop1;
    String stringa2 = "stringa2: " + prop2;
    for (int i = 0; i < 1000; i++) {
        prop1 = prop1 + 1;
        prop2 = prop2 + 1;
        stringa1 = "stringa1: " + prop1;
        stringa2 = "stringa2: " + prop2;
        Oggetto o = new Oggetto(prop1, prop2, stringa1, stringa2);
        objects.add(o);
    }
    return objects;
}

private static class Reduce implements org.apache.flink.api.common.functions.ReduceFunction<Oggetto> {
    @Override
    public Oggetto reduce(Oggetto oggetto, Oggetto t1) throws Exception {
        if (oggetto.getPropInt1() <= t1.getPropInt1()){
            return oggetto;
        }else {
            return t1;
        }
    }
}
publicstaticvoidmain(字符串[]args)引发异常{
最终StreamExecutionEnvironment env=StreamExecutionEnvironment.getExecutionEnvironment();
环境启用检查点(10000);
环境setStreamTimeCharacteristic(TimeCharacteristic.EventTime);
env.getConfig().setAutoWatermarkInterval(200L);
列出对象=produciValori();
DataStream stream=env.fromCollection(对象);
小溪/*
timeWindowAll(Time.seconds(5)).reduce(新reduce())*/
打印();
env.execute(“Flink Streaming Java Quickstart Mio”);
}
私有静态列表produciValori(){
列表对象=新的ArrayList();
int prop1=0;
int prop2=1000;
字符串stringa1=“stringa1:”+prop1;
字符串stringa2=“stringa2:”+prop2;
对于(int i=0;i<1000;i++){
prop1=prop1+1;
prop2=prop2+1;
stringa1=“stringa1:”+prop1;
stringa2=“stringa2:”+prop2;
Oggetto=新的Oggetto(prop1、prop2、stringa1、stringa2);
添加(o);
}
归还物品;
}
私有静态类Reduce实现org.apache.flink.api.common.functions.ReduceFunction{
@凌驾
公共Oggetto-reduce(Oggetto-Oggetto,Oggetto-t1)抛出异常{

如果(oggetto.getProctint1()如果要将此作业提交到集群,则应在flink日志目录中的文件名为-taskexecutor-.out的文件中找到输出。如果在IDE中运行,则输出应显示在IDE的控制台中


由于Oggetto类不可用,我只是用一些简单的东西替换了它,并且能够很好地运行您的应用程序。

因此,每当您使用
println()
print()
打印流数据/对象时,它实际上会在控制台上打印

  • 当您在本地
    IDE
    中执行代码时,它会在
    IDE控制台中打印流数据/对象
  • 将代码部署为
    Flink作业时
    可以在Flink目录中的
    .out
    文件中看到打印输出。在下图中,可以看到
    Flink-keshavlodhi-taskexecutor-0-Keshavs-MacBook-Pro.local.out
    文件
您可以在系统中找到提取了Flink tar文件的Flink日志目录。 e、 g


注意:每当您使用任何
记录器
API打印时,您都可以在
.log
文件中找到您的流数据/对象。

我提交的文件是:./bin/flink run.jar。在该文件中存在此警告,为什么?警告:发生了非法反射访问操作警告:组织非法反射访问。apache.flink.core.memory.HybridMemorySegment(文件:/home/giuseppe/Tesi/flink-1.7.2-bin-scala_2.11/flink-1.7.2/lib/flink-dist_2.11-1.7.2.jar)要将Java.Noo.Buffel.Advices警告:请考虑将此报告给Or.ApACH.FLink .Cord.Meth.HyBrimeMySeaTebug的维护者:使用--ValueAccess=警告,以启用进一步非法反射访问操作的警告
/Users/keshavlodhi/softwares/flink-1.10.0/log/