擅长:python、mysql、java
<p>我不认为这是一个安全的方法。我没有使用pythonsdk(我使用java),但是java端的<code>io.TextIO</code>非常清楚,它将发出一个PCollection,其中每个元素都是源文件的一行输入。分层数据格式(json、xml等)不适合以这种方式拆分。你知道吗</p>
<p>如果文件的格式和包含的json一样好,而且没有嵌套,那么您就可以不必担心:</p>
<ul>
<li>逐行阅读文件(我相信你正在这样做)</li>
<li>仅筛选包含<code>}</code>的行</li>
<li>计算结果pcollection大小</li>
</ul>
<p>不过,为了更广泛地与json集成,我们采用了不同的方法:</p>
<ul>
<li>从字符串的PCollection开始,其中每个值都是文件的路径</li>
<li>使用本机库访问文件并以流式方式解析它(我们使用scala,它有一些可用的流式json解析库)
<ul>
<li>或者,使用Beam的api从<code>MatchResult</code>获取<code>ReadableFile</code>实例并通过该实例访问文件</li>
</ul></li>
</ul>
<p>我的理解是,并不是所有的文件格式都适合分布式处理器。例如,Gzip不能很容易地被“分割”或分块。与JSON相同。CSV有一个问题,即值是无意义的,除非你手头上还有开头行。你知道吗</p>