Hadoop 在HDFS上编写Kafka流媒体结果
我编写了一个Kafka流媒体应用程序,使用以下代码将结果写入本地文件:Hadoop 在HDFS上编写Kafka流媒体结果,hadoop,apache-kafka,apache-kafka-streams,Hadoop,Apache Kafka,Apache Kafka Streams,我编写了一个Kafka流媒体应用程序,使用以下代码将结果写入本地文件: source.mapValues(record -> finall(record)).mapValues(record -> Arrays.deepToString(record)) .writeAsText(PATH); 尝试使用以下命令在HDFS上保存数据: source.mapValues(record -> finall(record)).mapValues(record
source.mapValues(record -> finall(record)).mapValues(record -> Arrays.deepToString(record))
.writeAsText(PATH);
尝试使用以下命令在HDFS上保存数据:
source.mapValues(record -> finall(record)).mapValues(record -> Arrays.deepToString(record))
.writeAsText(hdfs://localhost:54310/output);
it错误:
Unable to write stream to file at [hdfs://localhost:54310/output] hdfs:/localhost:54310/output (No such file or directory)
有没有办法在HDFS上写入Kafka流结果?我会避免这种模式,而是从KStreams写回Kafka主题,然后使用。通过这种方式,您可以将流处理与在别处写入数据分离 您提出的策略是否更有效?如果我坚持直接从Kafka流媒体编写HDF会怎么样?有可能吗?有可能,但您需要在代码中手动创建HDFS客户机。例如,您可以使用
.foreach()
而不是writesText()
。注意,这些写入必须是同步写入——否则,若失败,您可能会丢失数据。因此,按照罗宾的建议写回卡夫卡并使用Connect是推荐的模式。