使用BigQueryIO时如何选择这两个write函数
找到了官方文档这里不建议提及writeTableRows()
,但我不明白为什么。
- 我可以使用
gson
序列化我的Java POJO到TableRow
,直接用writeTableRows()
写 - 我需要手动设置
TableRow
对象,如果我使用write()
问题:
- 选择
write()
和 的原因 - 这两个选项性能差异大吗?
TL;DR
这两个选项是等价的,并且具有相同的底层实现。不要过于担心推荐。
我的建议:
- 尝试使用format功能在
write
中格式化您的数据。 - 如果你不能这样做,那么不用太担心,使用
writeTableRows
详细说明不同之处在于write
运行一个格式化函数,而writeTableRows
的格式化函数只是一个标识。
我认为write
比writeTableRows
更值得推荐,因为TableRow
对象是用JSON序列化的。JSON是一种非常低效的序列化格式。
write
在将数据发送给BigQuery之前实现了到TableRow
的转换,writeTableRows
将数据转换,然后在写入BigQuery之前进行一些转换-这意味着writeTableRows
的序列化成本可能更高。
明白了吗?谢谢!
用解释太多细节
Javadoc中的"recommended"字被添加到这个pull request中。我问了为什么,我们应该得到一个回应:)