apachebeam:Java:使用TextIO.write()中的变量将结果写入多个文件
需要将结果写入多个输出文件,并在运行时生成输出文件的名称 示例-阅读输入csv,该csv在每门课程中都有学生姓名和分数。输出文件中所有课程的分数总和与学生姓名相对应 场景1:输出结果为单个csv-这很简单 输入csv- ''' 身份证、姓名、物理、化学、数学、英语、生物、历史 1001,詹姆斯,56,60,78,67,50,70 1002,罗伯特,64,72,62,58,78,80 1003,尼娜,72,70,83,72,75,85 输出csv-apachebeam:Java:使用TextIO.write()中的变量将结果写入多个文件,java,google-cloud-platform,google-cloud-dataflow,apache-beam,Java,Google Cloud Platform,Google Cloud Dataflow,Apache Beam,需要将结果写入多个输出文件,并在运行时生成输出文件的名称 示例-阅读输入csv,该csv在每门课程中都有学生姓名和分数。输出文件中所有课程的分数总和与学生姓名相对应 场景1:输出结果为单个csv-这很简单 输入csv- ''' 身份证、姓名、物理、化学、数学、英语、生物、历史 1001,詹姆斯,56,60,78,67,50,70 1002,罗伯特,64,72,62,58,78,80 1003,尼娜,72,70,83,72,75,85 输出csv- Name,Total Robe
Name,Total
Robert,414
Nina,457
James,381
代码片段-
pipeline.apply(TextIO.read().from(options.getInputFilePath()))
.apply(ParDo.of(new FilterHeaderFn(CSV_HEADER)))
.apply(ParDo.of(new ComputeTotalScoresFn()))
.apply(ParDo.of(new ConvertToStringFn()))
.apply(TextIO.write().to(options.getOutputFilePath())
.withHeader("Name,Total").withNumShards(1));
场景2:输出结果是多个文件,这样每个学生都有一个用他们的名字创建的文件,其中包含总分。注意-文件名是在运行时生成的。
范例-
Robert.csv => contains 414
Nina.csv => 457
James.csv => 381
我尝试在内部设置输出文件路径
代码片段-
`ProcessContext.getPipelineOptions().as(MyOptionClass.class).setOuputPath(output_path)`
但这不起作用。非常感谢您的帮助。您可以使用来实现这一点,或者更通用的谢谢,我们将试用它。