我们需要使用JSON分发数据,因此我们编写了一个自定义输出器。我们还为其他供应商输出与csv相同的数据。 经过调查,我发现JSON输出器使用一个顶点,而csv使用5个顶点输出相同的数据,而JSON也需要很长时间。我可以请求行为背后的原因,有没有办法让我们改变这个?
答案 0 :(得分:2)
实际上你只为JSON获得一个顶点但为CSV获得5个顶点的原因非常简单。
JSON是一种分层数据格式,因此需要整个行集在一个顶点中,因此它知道结构将是什么。即使输出器输出表示行的JSON对象数组,数组的开始和结束也是一种嵌套(你需要知道第一行和最后一行是什么)。
如果您使用了Microsoft U-SQL GitHub页面中的示例输出器,那么该输出器是在启用AtomicFileProcessing的情况下实现的。
CSV是一种扁平的逐行格式。因此,您可以将行集分区为子集并单独序列化它们。没有阻碍并行化的结构。
因此,除非您决定逐行输出1个JSON文档(从而将组合输出转换为无效的JSON文档),否则无法并行化分层输出。
答案 1 :(得分:-1)
我相信你可以在输出位置添加一个通配符,将最终的COMBINE节点从一个顶点转换为与该点的流相等的顶点数。
所以,而不是输出到
filename.json
你会用
文件名{*}。JSON
代替{*}将是表示顶点的数值。