擅长:python、mysql、java
<p>无论是否有气流,最简单、最有效的方法是:</p>
<ul>
<li>从数据源提取数据</li>
<li>将数据加载到文件中</li>
<li>将文件放入云存储</li>
<li>对这些文件运行BigQuery加载作业(加载作业是免费的)</li>
</ul>
<p>如果您不想创建一个文件并将其放入云存储中,还有另一种方法是可能的,更加复杂:将数据流式传输到BigQuery中。在</p>
<ul>
<li>运行查询(MySQL或Mongo)</li>
<li>获取结果。</li>
<li>在每一行上,流将结果写入BigQuery(<a href="https://cloud.google.com/bigquery/pricing#streaming_pricing" rel="nofollow noreferrer">Streaming is not free on BigQuery</a>)</li>
</ul>
<p>这样描述,它的接缝不太复杂,但是:</p>
<ul>
<li>在整个过程中,您必须保持与源和目标的连接</li>
<li>您必须处理错误(读写),并能够在最后一个失败点重新启动</li>
<li>为了优化性能,您必须执行大容量流写入BigQuery。块的大小必须明智地选择。</li>
<li>气流奖励:您必须定义并编写自己的自定义操作符来执行此操作。</li>
</ul>
<p>顺便说一句,我强烈建议遵循第一个解决方案。在</p>
<p><strong>其他提示</strong>:现在,<a href="https://cloud.google.com/bigquery/docs/cloud-sql-federated-queries" rel="nofollow noreferrer">BigQuery can directly request into Cloud SQL database</a>。如果您仍然需要MySQL数据库(用于在其中保留一些引用),可以将其迁移到CloudSQL中,并在Bigquery数据仓库和CloudSQL引用之间执行连接。在</p>