数据流管道从GCS读取csv并通过调用Vision和NL API写入BigBuery

时间:2016-11-22 16:17:37

标签: google-cloud-platform google-cloud-dataflow google-cloud-vision google-cloud-nl

我想编写一个Dataflow程序(Java和maven实现)。以下是我要执行的步骤:

  1. 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℉也不会使枪变形。

    。 。 。

  2. 对于csv中的每一行,我需要选择图片URL并运行vision API并获得前2个标签(例如,我们从第一个产品/行和L3和L4的vision API获得标签L1和L2第二个产品/行)

  3. 对于csv中的每一行,我需要连接产品名称,类别,description1和description2,并将其传递给NL API。根据NL API的响应,我需要选择消费品类别下的前2个实体(例如,我们从第一行获得E1和E2,第二行获得E3和E4)

  4. 我需要从检索到的响应中创建以下结构:

    产品名称,主题 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 。 。 。

  5. 我想将此网格(步骤4中的结构)写入Bigquery表

  6. 我是Dataflow的新手,因此非常感谢任何帮助,代码段或整个源代码或参考

1 个答案:

答案 0 :(得分:4)

您应首先阅读其中一个quick start guides,然后查看一些example pipelines

根据您的描述,高级大纲可能是:

  1. 使用TextIO.read从GCS中读取内容。请注意,它不支持忽略标题,因此您可能需要自己检测并删除它。
  2. 在文件的每一行的URL上编写一个使用vision API的DoFn。您甚至可以将其分成多个DoFn - 一个用于将行转换为URL,然后是DoFn以使用vision API,然后使用DoFn来提取前两个标记。
  3. 编写执行连接的另一个DoFn或一系列DoFn并使用NL API。
  4. 撰写另一个DoFn或一系列DoFn,生成所需的输出格式为TableRow的行。
  5. 使用BigQueryIO.write转换将这些转换写入BigQuery。