数据正在转换为二进制格式,同时使用 Apache pig 将数据加载到 monet db

Posted

技术标签:

【中文标题】数据正在转换为二进制格式,同时使用 Apache pig 将数据加载到 monet db【英文标题】:data is converting to binary format while loading data into monet db using Apache pig 【发布时间】:2021-08-05 15:14:33 【问题描述】:

我正在使用 MonetDb-Pig 层将 csv 数据加载到 Monet db 中。内部使用 Binarybulkload 命令加载数据,但在将数据加载到表后,csv 文件值与 Monet db 表值(int ,double)不匹配。似乎是数据转换为二进制格式。

我们如何取回 monetdb 中的实际值? .

我正在使用的表结构 创建表“测试”( “s_suppkey” INT, "s_name" CLOB, "s_address" CLOB, "s_nationkey" INT, "s_phone" CLOB, “s_acctbal”双倍, “s_comment” CLOB );

加载我正在使用的命令 将二进制文件复制到“测试”中( '$PATH/part-1/col-0.bulkload', '$PATH/part-1/col-1.bulkload', '$PATH/part-1/col-2.bulkload', '$PATH/part-1/col-3.bulkload', '$PATH/part-1/col-4.bulkload', '$PATH/part-1/col-5.bulkload', '$PATH/part-1/col-6.bulkload' );

【问题讨论】:

【参考方案1】:

请将字节缓冲区从 BigEndian 转换为 LittleEndian,并检查

【讨论】:

请注意,在最新版本的 MonetDB(2021 年 7 月)中,您可以显式设置加载数据的字节序:COPY BIG ENDIAN BINARY FROM ...【参考方案2】:

提供的信息不足以隔离问题。最可能的问题是每个二进制列中值的数量未对齐。

检查's_acctbal'输入文件中元素的大小,看是否 生成 Floats 而不是 Double 二进制值。

顺便说一句。 MonetDB-Pig 项目没有积极维护,但我们欢迎 补丁。

【讨论】:

我可以通过将字节数组转换为 LittleEndian 来加载。能否请您帮助如何使用复制二进制将时间戳存储到 monet db 中! @raj 在最新版本的 MonetDB(2021 年 7 月)中,您可以使用头文件 copybinary.h 中列出的结构定义加载时间数据 @JoerivanRuth,你能分享头文件'copybinary.h'中的结构定义吗 @JoerivanRuth 你能详细解释一下我们如何使用结构定义加载日期。

以上是关于数据正在转换为二进制格式,同时使用 Apache pig 将数据加载到 monet db的主要内容,如果未能解决你的问题,请参考以下文章

将动态数据转换为数组中的十六进制

在十六进制格式和二进制格式之间转换字符串

将坐标从非常规格式的度数转换为十进制度数

gwas分析时数据格式转换

BASE64 编码和解码

从 IEEE 754-2008 十进制浮点数据转换为二进制浮点格式