我们正在使用BigQuery来检索大表的完整内容。我们正在使用公开的publicdata:samples.natality。
我们的代码遵循其API doc - java。
中所述的Google说明我们能够以 1'300行/秒的速度检索此表格,这非常慢。是否有更快的方法来检索查询的完整结果,或者这总是像 fast 一样?
答案 0 :(得分:3)
从BigQuery表中检索大量数据的推荐方法是不使用tabledata.list
翻译整个表,因为该示例正在使用。该示例针对查询结果读取少量行进行了优化。
相反,您应该运行一个提取作业,将表格的整个内容导出到Google云端存储,然后您可以从中下载完整的内容。
https://cloud.google.com/bigquery/exporting-data-from-bigquery
答案 1 :(得分:0)
要快速下载表,您可以使用 Google BigQuery Storage Client for Java。
它允许您将表格下载为高效的二进制格式,例如 Avro 或 Arrow。 使用文档中的基本 Arrow 示例,我设法每秒下载约 100 万行。
我认为您可以通过将结果写入临时表来使用它来下载查询结果。
获取结果临时表的代码如下:
System::String^ StdStringToUTF16(std::string s)
{
cli::array<System::Byte>^ a = gcnew cli::array<System::Byte>(s.length());
int i = s.length();
while (i-- > 0)
{
a[i] = s[i];
}
return System::Text::Encoding::UTF8->GetString(a);
}
参考文献: