要使用Flink API将数据写入HDFS,可以使用Flink的Hadoop文件系统连接器。以下是一个示例代码:
import org.apache.flink.api.common.functions.MapFunction;
import org.apache.flink.api.java.ExecutionEnvironment;
import org.apache.flink.core.fs.FileSystem;
import org.apache.flink.core.fs.Path;
import org.apache.flink.api.java.io.TextOutputFormat;
import org.apache.flink.api.java.tuple.Tuple2;
public class FlinkHDFSWriter {
public static void main(String[] args) throws Exception {
ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
// 数据源
env.fromElements(new Tuple2<>("foo", 1), new Tuple2<>("bar", 2), new Tuple2<>("baz", 3))
.map(new MapFunction<Tuple2<String, Integer>, String>() {
@Override
public String map(Tuple2<String, Integer> value) throws Exception {
return value.f0 + "," + value.f1;
}
})
// 写入HDFS
.writeAsText("hdfs://localhost:9000/path/to/output", FileSystem.WriteMode.OVERWRITE)
.setParallelism(1);
env.execute("Flink HDFS Writer");
}
}
在上面的代码中,我们使用了一个简单的Map函数将Tuple2转换为String。然后,我们使用writeAsText将String写入HDFS。注意,我们需要指定要写入的HDFS路径和写入模式。最后,我们将并行度设置为1,以确保所有数据都被写入同一个文件。