Flink error:File or directory data/output already exists. Existing files and directories are not ...

一、问题描述

flink在sink到本地目录的时候,报错:

09:12:19,166 INFO  org.apache.flink.runtime.executiongraph.ExecutionGraph        - Job DataSet Sink (5e5507e2029038a82605e0ffd0ff4a14) switched from state FAILING to FAILED.
java.io.IOException: File or directory data/output already exists. Existing files and directories are not overwritten in NO_OVERWRITE mode. Use OVERWRITE mode to overwrite existing files and directories.
    at org.apache.flink.core.fs.FileSystem.initOutPathLocalFS(FileSystem.java:773)
    at org.apache.flink.core.fs.SafetyNetWrapperFileSystem.initOutPathLocalFS(SafetyNetWrapperFileSystem.java:137)
    at org.apache.flink.api.common.io.FileOutputFormat.open(FileOutputFormat.java:227)
    at org.apache.flink.api.java.io.TextOutputFormat.open(TextOutputFormat.java:88)
    at org.apache.flink.runtime.operators.DataSinkTask.invoke(DataSinkTask.java:202)
    at org.apache.flink.runtime.taskmanager.Task.run(Task.java:704)
    at java.lang.Thread.run(Thread.java:745)

   
二、问题原因

代码中的目录已经存在,而写操作writeAsText默认不覆盖之前的文件或者文件夹,所以导致报错。

val filepath="data//output"
text.writeAsText(filepath)

三、解决办法

1.方法一:删除目录
2.方法二:添加覆盖的参数

val filepath="data//output"
text.writeAsText(filepath,FileSystem.WriteMode.OVERWRITE)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值