【问题标题】:Size of data block in avro is larger than the maximum allowed value 16777216avro中数据块的大小大于允许的最大值16777216
【发布时间】:2018-03-07 08:02:18
【问题描述】:

我正在尝试将 Avro 数据加载到 Bigquery。所以我通过在 hive 中运行 INSERT OVERWRITE COMMAND 将 ORC 数据转换为 AVRO。当我尝试使用 bq 命令行工具在 Bigquery 中加载数据时,我收到此错误:-

"message": "读取数据时出错,错误消息:位置 397707 的 Avro 解析错误。数据块 17378680 的大小大于允许的最大值 16777216。"

有什么办法可以增加这个数据块的大小。我找不到与此相关的任何东西。

下面是我试图用来加载数据的命令。

bq load --source_format=AVRO dataset.table gs://********/gold/offers/hive/gold_hctc_ofr_txt/ingestion_time=20180305/000000_0

【问题讨论】:

标签: hive google-bigquery avro


【解决方案1】:

由于this document 中定义的 BigQuery 块大小限制,您似乎实际上遇到了问题。您可以查看行和单元格大小限制部分,其中提到 Avro 的块大小为 16MB。

【讨论】:

  • 通过压缩数据,我能做到吗?
  • 如果你可以减小块大小by compression,你应该可以做到这一点。目前,将数据加载到 BigQuery 时,gzip 是唯一受支持的文件压缩类型。但是,请记住,数据压缩也会对性能产生一些负面影响。
  • 我正在处理 AVRO 数据,因此在 AVRO 的情况下不允许压缩数据。如果我可以压缩块大小,那么只有它可能。我现在还没有任何属性。如果你有任何请与我分享。
  • @VishwanathSharma,根据this document compressed Avro files are not supported, but compressed data blocks are,这就是我要求减少数据块的原因。您可以使用 DEFLATE 或 Snappy 编解码器进行压缩,因为它们是只有 BigQuery 支持的。您可以查看this document 获取我在互联网上找到的示例源代码。
  • @Tahar,我在 hive 表中使用 Table 属性 (avro.codec='deflate') 进行了尝试,但我仍然无法实现它。与 deflate 相比,Snappy 会增加大小。
猜你喜欢
  • 1970-01-01
  • 2015-08-02
  • 1970-01-01
  • 2022-10-12
  • 2023-04-10
  • 1970-01-01
  • 2011-02-26
  • 1970-01-01
  • 2017-04-24
相关资源
最近更新 更多