当我们尝试使用 writeAsCsv(path,writemode)方法将处理过的JSON数据从Flink写入文件时,数据写入文件但我们需要在每个JSON后插入逗号这没有发生。我们使用Apache Kafka作为Flink的数据源。
DataStream<Tuple5<String, String, String, String, String>> messageStream = env.addSource(new FlinkKafkaConsumer08<>(FLINK_TOPIC, new SimpleStringSchema(), properties)).flatMap(new StreamToTuple5()).keyBy(0);
String path = "/home/user/Documents/docs/csvfile/";
messageStream.writeAsCsv(path, FileSystem.WriteMode.OVERWRITE);
执行此方法时获得的输出是
{"temperSensorData":"28.489084691371364","temperSensorUnit":"celsius","timestamp":"1493270680759","timestamp2":"1493270680786","timestamp3":"1493270680787"}
{"temperSensorData":"28.489084691371467","temperSensorUnit":"celsius","timestamp":"1493270680761","timestamp2":"1493270680816","timestamp3":"1493270680816"}
答案 0 :(得分:0)
您可以通过将','
指定为行分隔符来解决您的问题:
messageStream.writeAsCsv(path, FileSystem.WriteMode.OVERWRITE, ",", ",")
这里的第三个参数是行分隔符。