我正在尝试使用kafka流中的编码部分,如下所示
KStreamBuilder builder = new KStreamBuilder();
KStream<String, String> textlines = builder.stream("iostatin2");
KStream<String, String> mstream = textlines
.mapValues(value -> value.replace("[","" ) )
.mapValues(value -> value.replace("]","" ) )
.mapValues(value -> value.replaceAll("\":\"", "\":"))
.mapValues(value -> value.replaceAll("\":", "\":\""))
.mapValues(value -> value.replaceAll("\",\"", ",\""))
.mapValues(value -> value.replaceAll(",\"", "\",\""))
.mapValues(value -> value.replaceAll(":\"\\{", ":\\{"))
.mapValues(value -> value.replaceAll("\\}\",", "\\},"))
.mapValues(value -> value.replaceAll("\\},\\{" ,"\\}\\},\\{\\{"));
textlines.foreach(new ForeachAction<String, String>() {
@Override
public void apply(String key, String value) {
try {
textlines.flatMapValues(value -> Arrays.asList(value.split("\\},\\{")));
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
所以在foreachaction()函数中
textlines.flatMapValues(value -> Arrays.asList(value.split("\\},\\{")));
此行值中的导致错误,如变量'value'已在范围中定义。那么我应该用...替换那条线... plzz帮助我...
答案 0 :(得分:2)
值已经在上面的apply()方法中用作参数,
所以改变行中的价值
textlines.flatMapValues(value -> Arrays.asList(value.split("\\},\\{")));
到v
之类的任何其他名称 textlines.flatMapValues(v -> Arrays.asList(v.split("\\},\\{")));