EMR上的Flink-无输出,无法输出到控制台或文件

时间:2018-07-19 07:22:05

标签: amazon-emr flink-streaming sink

我正在尝试在AWS EMR(带有Flink 1.4.2的5.15版)上部署flink作业。但是,我无法从流中获取任何输出。 我试图创建一个简单的工作:

object StreamingJob1 {
    def main(args: Array[String]) {
        val path = args(0)
        val file_input_format = new TextInputFormat(
            new org.apache.flink.core.fs.Path(path))
        file_input_format.setFilesFilter(FilePathFilter.createDefaultFilter())
        file_input_format.setNestedFileEnumeration(true)

        val env = StreamExecutionEnvironment.getExecutionEnvironment
        val myStream: DataStream[String] =
            env.readFile(file_input_format,
                path,
                FileProcessingMode.PROCESS_CONTINUOUSLY,
                1000L)
                .map(s => s.split(",").toString)

        myStream.print()
        // execute program
        env.execute("Flink Streaming Scala")
    }
}

我使用以下命令执行了它:

  

HADOOP_CONF_DIR = / etc / hadoop / conf; flink运行-m yarn-cluster -yn 4 -c my.pkg.StreamingJob1 /home/hadoop/flink-test-0.1.jar hdfs:/// user / hadoop / data /

没有错误,但除flink的INFO日志外,屏幕上没有输出。

我试图输出到Kinesis流或S3文件。什么都没记录。

    myStream.addSink(new BucketingSink[String](output_path))

我还尝试写入HDFS文件。在这种情况下,创建了一个文件,但大小为0。 我确定输入文件已通过简单的检查得到处理:

myStream.map(s => {"abc".toInt})

产生了异常。

我在这里想念什么?

1 个答案:

答案 0 :(得分:0)

似乎stream.print()在EMR上不起作用。

输出到文件:使用HDFS,有时(或大部分时间)我需要等待文件更新。

输出到Kinesis:我的流名称中有一个错字。我不知道为什么我不为那条不存在的流获得任何例外。但是,在更正名称之后,我得到了预期的消息。