如何在使用BigQueryIO时选择这两个写入函数。我发现这里的官方文档提到不推荐使用writeTableRows(),但不明白为什么。1.我可以使用gson将我的Java POJO序列化为TableRow,然后直接使用writeTableRows()进行编写1.如果使用write(),则需要手动设置TableRow对象问题:1.为什么选择write()和1.这两个选项在性能上是否有很大差异?谢谢
writeTableRows()
gson
TableRow
write()
jfewjypa1#
这两个选项是等效的,并且具有相同的底层实现。不要太担心建议。我的建议是:
write
writeTableRows
不同之处在于write运行一个格式化函数,而对于writeTableRows,格式化函数只是一个标识。我认为推荐使用write而不是writeTableRows,因为TableRow对象是用JSON序列化的。JSON是一种效率非常低的序列化格式。write在将数据发送到BigQuery之前实现到TableRow的转换,writeTableRows转换数据,然后在写入BigQuery之前通过几次转换传递数据-这意味着writeTableRows的序列化成本可能更高。这样说得通吗?谢谢!
Javadoc中的“recommended”一词是在this pull request中添加的。我问过为什么-我们希望能得到它的回应:)
1条答案
按热度按时间jfewjypa1#
TL;DR的名称
这两个选项是等效的,并且具有相同的底层实现。不要太担心建议。
我的建议是:
write
内格式化数据。writeTableRows
详细说明
不同之处在于
write
运行一个格式化函数,而对于writeTableRows
,格式化函数只是一个标识。我认为推荐使用
write
而不是writeTableRows
,因为TableRow
对象是用JSON序列化的。JSON是一种效率非常低的序列化格式。write
在将数据发送到BigQuery之前实现到TableRow
的转换,writeTableRows
转换数据,然后在写入BigQuery之前通过几次转换传递数据-这意味着writeTableRows
的序列化成本可能更高。这样说得通吗?谢谢!
详细说明 * 太多 *
Javadoc中的“recommended”一词是在this pull request中添加的。我问过为什么-我们希望能得到它的回应:)