java - 使用 BigQuery 读取 JSON 文件以制作表格

标签 java json google-bigquery google-cloud-storage google-cloud-dataflow

我是 Google Dataflow 的新手,无法让这个东西与 JSON 一起使用。我一直在阅读整个文档,但无法解决我的问题。

因此,按照 WordCount 示例,我想出了如何使用下一行从 .csv 文件加载数据

PCollection<String> input = p.apply(TextIO.Read.from(options.getInputFile()));

我的 gcloud 存储桶中的 .csv 文件中的 inputFile。我可以将 .csv 中的读取行转换为:

PCollection<TableRow> table = input.apply(ParDo.of(new ExtractParametersFn()));

(提取我定义的ParametersFn)。到目前为止,一切都很好!


但后来我意识到我的 .csv 文件太大,不得不将其转换为 JSON ( https://cloud.google.com/bigquery/preparing-data-for-bigquery )。 由于 BigQueryIO 据说更适合读取 JSON,因此我尝试使用以下代码:

 PCollection<TableRow> table = p.apply(BigQueryIO.Read.from(options.getInputFile()));

(inputFile 然后是 JSON 文件,使用 BigQuery 读取时的输出是带有 TableRows 的 PCollection)我也尝试使用 TextIO(它返回带有字符串的 PCollection),但两个 IO 选项都不起作用。

我错过了什么?文档真的没有那么详细,无法在那里找到答案,但也许你们中的一些人之前已经处理过这个问题?

如有任何建议,我们将不胜感激。 :)

最佳答案

我认为有两种选择需要考虑:

  1. 将 TextIO 与 TableRowJsonCoder 结合使用以提取 JSON 文件(例如,就像在 TopWikipediaSessions example 中完成的一样);
  2. 将 JSON 文件导入 bigquery 表 ( https://cloud.google.com/bigquery/loading-data-into-bigquery ),然后使用 BigQueryIO.Read从表中读取。

关于java - 使用 BigQuery 读取 JSON 文件以制作表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33614836/

相关文章:

java - 如何使用Spring MVC更新当前用户数据?

java - 如何使用 Java 从一台机器到另一台机器进行 ssh

google-analytics - Bigquery GA360 每日导出 : find earliest daily table

sql - 获取BigQuery项目中所有BigQuery表的上次修改日期

python - 将 Pandas DF 加载到 Big Query 失败

java - 并非所有 CSS 格式都由 JSP 加载

java - 如何让 netty channel.writeAndFlush() 在没有 TCP ACK 响应时抛出异常

python - 使用无效字符解码 JSON

jquery - MVC4 中使用 Knockout.js 的级联下拉菜单,JSON 根据验证器返回有效的 JSON,但 Jscript 出现无效字符错误

python - 如何优雅地解决Python KeyError(Python csv库)