我想编写一个Dataflow程序(Java和maven实现)。以下是我要执行的步骤:
Dataflow应从谷歌云存储中读取csv文件。 csv文件采用以下格式:
产品名称,图片网址,类别,说明1,说明2 Sakura 30062 6件套Pigma Micron墨水笔套装,https://images-na.ssl-images-amazon.com/images/I/71CkvpG3FEL.SY355.jpg,艺术品,包括尺码:#005(0.20mm)
CCbetter迷你热熔胶枪,配25个胶水棒,高温熔胶枪套件,适用于DIY小型工艺项目,密封和快速维修(20瓦,蓝色),https://images-na.ssl-images-amazon.com/images/I/61iFrMg4%2B3L.SY355.jpg,安全舒适的电源开关带LED灯模式。可拆卸和灵活的支撑,使枪保持稳定和直立,高质量和绝缘喷嘴即使长期使用500℉也不会使枪变形。
。 。 。
对于csv中的每一行,我需要选择图片URL并运行vision API并获得前2个标签(例如,我们从第一个产品/行和L3和L4的vision API获得标签L1和L2第二个产品/行)
对于csv中的每一行,我需要连接产品名称,类别,description1和description2,并将其传递给NL API。根据NL API的响应,我需要选择消费品类别下的前2个实体(例如,我们从第一行获得E1和E2,第二行获得E3和E4)
我需要从检索到的响应中创建以下结构:
产品名称,主题 Sakura 30062 6件套Pigma Micron墨水笔套装,L1 Sakura 30062 6件套Pigma Micron墨水笔套装,L2 Sakura 30062 6件套Pigma Micron墨水笔套装,E1 Sakura 30062 6件套Pigma Micron墨水笔套装,E2
CCbetter迷你热熔胶枪,配25支胶水棒高温熔胶枪套件灵活触发DIY小工艺项目及密封和快速修复(20瓦,蓝色),L3 CCbetter迷你热熔胶枪配25支胶水棒高温熔胶枪套件灵活触发DIY小工艺项目及密封和快速修复(20瓦,蓝色),L4 CCbetter迷你热熔胶枪配25支胶水棒高温熔胶枪套件灵活触发DIY小工艺项目及密封和快速修复(20瓦,蓝色),E3 CCbetter迷你热熔胶枪配25支胶水棒高温熔胶枪套件灵活触发DIY小工艺项目及密封和快速修复(20瓦,蓝色),E4 。 。 。
我想将此网格(步骤4中的结构)写入Bigquery表
我是Dataflow的新手,因此非常感谢任何帮助,代码段或整个源代码或参考
答案 0 :(得分:4)
您应首先阅读其中一个quick start guides,然后查看一些example pipelines。
根据您的描述,高级大纲可能是:
TextIO.read
从GCS中读取内容。请注意,它不支持忽略标题,因此您可能需要自己检测并删除它。DoFn
。您甚至可以将其分成多个DoFn
- 一个用于将行转换为URL,然后是DoFn以使用vision API,然后使用DoFn来提取前两个标记。DoFn
或一系列DoFn
并使用NL API。DoFn
或一系列DoFn
,生成所需的输出格式为TableRow
的行。BigQueryIO.write
转换将这些转换写入BigQuery。