azure - 以 parquet 文件格式从本地复制到 Blob 时,ADF 中出现内存不足错误

标签 azure jvm azure-blob-storage parquet azure-data-factory

我在本地 SQL 中有大约 10M 条记录,我正在尝试使用集成运行时以 parquet 文件格式将其传输到 Azure Blob 存储。对于 2M 记录,传输没有问题,但是当我尝试传输超过 2M 记录时,出现以下错误。我做了一些研究,我在一篇文章中读到它可能有助于更改 java 的环境变量值

**_JAVA_OPTIONS with value -Xms256m -Xmx16g.** 

**_JAVA_OPTIONS with value -Xms256m -Xmx32g.** 

我都尝试了,但仍然遇到相同的错误

"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": "Copy Data1"

}

最佳答案

首先以压缩的 csv 形式进行“暂存”上传,然后获取该压缩的 csv 并将其移动到命运,但以 blob 存储作为源。这样您就可以放弃自托管 IR 的问题。此解决方法已为我解决了高达 5M 行的问题,因此您不妨尝试一下。

希望这有帮助!

关于azure - 以 parquet 文件格式从本地复制到 Blob 时,ADF 中出现内存不足错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57717575/

相关文章:

c# - 将 Entity Framework 7 添加到 MVC 5 项目

azure - Chef 节点在首次启动期间未始终在服务器上保存运行列表 - Azure Scale set VM

java - 64 位 Windows 上的 32 位 JVM 在使用 -Xmx1300m 和大量可用内存启动时崩溃

针对变量的 Scala 匹配函数

c# - 在 azure 上存储和使用现有数据保护 key

powershell - Azure SFTP 连接器,创建后无法编辑应用程序设置值

azure - 无法从 U-SQL 表读取

Java引入临时对象

azure - Windows Azure 本地 Blob 存储访问?

azure - 将 Azure 服务总线替换为 Blob 存储