我正在创建一个Apache Beam流处理管道以在GCP Dataflow中运行。我有许多扩展DoFn和CombineFn的转换。在DoFn中,使用“数据流”作业详细信息中的“日志”窗口可以很好地可视化日志。但是,没有显示来自CombineFn转换的日志。
我尝试了不同的日志级别,并且使用DirectRunner也可以正常显示。
这是一些示例代码。为了简洁起见,我将输入和输出更改为String,我的代码中有一些自定义类。
guard let file = XLSXFile(filepath: path) else { return }
let alphaArr = ["A", "B", "C"]
do {
let docPath = try file.parseDocumentPaths()
let workSheet = try file.parseWorksheet(at: docPath.first ?? "")
let sharedStrings = try file.parseSharedStrings()
for path in try file.parseWorksheetPaths() {
let ws = try file.parseWorksheet(at: path)
for alphabt in alphaArr {
let cells = ws.cells(atColumns: [ColumnReference(alphabt)!])
let columnCStrings = cells.compactMap{ $0.value }.compactMap { Int($0) }.compactMap {sharedStrings.items[$0].text }
print(columnCStrings)
}
}
} catch {
print(error.localizedDescription)
}
答案 0 :(得分:0)
Apache Beam CombineFn操作在数据流的多个步骤中执行。 (具体来说,在将所有结果混排为单个键之前,会进行大量的预组合,然后在后续的GBK步骤中将所有上游结果合并为最终结果。)事实上,没有单个执行“步骤”与图中原始“合并”步骤相对应的原因可能是阻止找到日志。
这是一个错误,应予以修复。如上所述,一种解决方法是查看管道中的所有日志。