【发布时间】:2020-01-17 16:25:29
【问题描述】:
我有一个管道,它从 MS SQL Server 读取数据并将它们存储到 Azure 存储中 BLOB 容器中的文件中。该文件具有 Parquet(或 Apache Parquet,也称为)格式。
因此,当“接收器”(输出)文件以压缩方式(snappy 或 gzip - 无关紧要)存储并且文件足够大(超过 50 Mb)时,管道失败。消息如下:
"errorCode": "2200",
"message": "Failure happened on 'Sink' side.
ErrorCode=UserErrorJavaInvocationException,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=An error occurred when invoking java, message: java.lang.OutOfMemoryError:Java heap space\ntotal entry:11\r\njava.util.ArrayDeque.doubleCapacity(Unknown Source)\r\njava.util.ArrayDeque.addFirst(Unknown Source)\r\njava.util.ArrayDeque.push(Unknown Source)\r\norg.apache.parquet.io.ValidatingRecordConsumer.endField(ValidatingRecordConsumer.java:108)\r\norg.apache.parquet.example.data.GroupWriter.writeGroup(GroupWriter.java:58)\r\norg.apache.parquet.example.data.GroupWriter.write(GroupWriter.java:37)\r\norg.apache.parquet.hadoop.example.GroupWriteSupport.write(GroupWriteSupport.java:87)\r\norg.apache.parquet.hadoop.example.GroupWriteSupport.write(GroupWriteSupport.java:37)\r\norg.apache.parquet.hadoop.InternalParquetRecordWriter.write(InternalParquetRecordWriter.java:123)\r\norg.apache.parquet.hadoop.ParquetWriter.write(ParquetWriter.java:292)\r\ncom.microsoft.datatransfer.bridge.parquet.ParquetBatchWriter.addRows(ParquetBatchWriter.java:60)\r\n,Source=Microsoft.DataTransfer.Common,''Type=Microsoft.DataTransfer.Richfile.JniExt.JavaBridgeException,Message=,Source=Microsoft.DataTransfer.Richfile.HiveOrcBridge,'",
"failureType": "UserError",
"target": "Work_Work"
}
"Work_Work" 是管道中复制数据活动的名称。
如果我关闭压缩(生成的 BLOB 文件未压缩),则不会发生错误。
这是link中描述的错误吗
“……如果您使用自托管将数据复制到 Parquet 格式或从 Parquet 格式复制数据 集成运行时并点击错误说“发生错误时 调用 java,消息:java.lang.OutOfMemoryError:Java heap space", 您可以在机器中添加一个环境变量 _JAVA_OPTIONS 托管自托管 IR 以将 JVM 的最小/最大堆大小调整为 授权这样的副本,然后重新运行管道……”?
如果是,我是否正确理解我必须执行以下操作: 转到“自托管集成运行时”(仍然不知道它是什么)的服务器并增加 JVM 的最大堆大小。这是正确的吗?
如果是,我的下一个问题是:最大堆大小应该有多大?我的管道可以生成一个大小为 30 GB 的文件。
什么“最大堆大小”可以保证这样的文件不会导致失败?
【问题讨论】:
标签: azure azure-blob-storage azure-pipelines parquet azure-data-factory-2