如何读取GCP数据流中CombineFn函数的日志消息?

时间:2019-10-07 11:00:29

标签: google-cloud-dataflow apache-beam

我正在创建一个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)
    }

1 个答案:

答案 0 :(得分:0)

Apache Beam CombineFn操作在数据流的多个步骤中执行。 (具体来说,在将所有结果混排为单个键之前,会进行大量的预组合,然后在后续的GBK步骤中将所有上游结果合并为最终结果。)事实上,没有单个执行“步骤”与图中原始“合并”步骤相对应的原因可能是阻止找到日志。

这是一个错误,应予以修复。如上所述,一种解决方法是查看管道中的所有日志。