Hadoop 读取作为二进制数据类型存储在配置单元中的BLOB数据

Hadoop 读取作为二进制数据类型存储在配置单元中的BLOB数据,hadoop,hive,sqoop,Hadoop,Hive,Sqoop,我们在配置单元中有Oracle BLOB和VARBINARY(SQL Server/Progress)数据,这些数据存储为字符串或二进制数据类型。我们使用sqoop从各自的RDBMS中获取了数据。现在我们有了hdfs中的数据,我们希望看到实际的附件,如pdf、图像、文档等。。如何将配置单元二进制格式数据反序列化为相应的文件 简言之,假设我们知道文件类型,我们需要将配置单元中的二进制数据转换为相应的附件(pdf、jpg、doc)。IMHO,您在源代码中拥有的东西——即将“附件”存储在RDBMS中作

我们在配置单元中有Oracle BLOB和VARBINARY(SQL Server/Progress)数据,这些数据存储为字符串或二进制数据类型。我们使用sqoop从各自的RDBMS中获取了数据。现在我们有了hdfs中的数据,我们希望看到实际的附件,如pdf、图像、文档等。。如何将配置单元二进制格式数据反序列化为相应的文件


简言之,假设我们知道文件类型,我们需要将配置单元中的二进制数据转换为相应的附件(pdf、jpg、doc)。

IMHO,您在源代码中拥有的东西——即将“附件”存储在RDBMS中作为一种临时文件系统——是非常愚蠢的。但RDBMS供应商喜欢愚蠢的想法,因为这通常会导致额外的许可成本,所以他们努力攫取额外的资金。现在,试图在一个开放源代码系统中复制那个蹩脚的设计,而这个系统不是为那个目的而设计的,这是。。。这不是个好主意。我的猜测是,你必须从头开始开发自己的“查看器”。顺便说一句,你没有提到你打算在Hive中使用的Serde。而且你没有提到你想要什么样的访问模式和性能(例如,你能接受每次超过3分钟的随机读取吗?)谢谢Samson。。。我正在研究任何可能的方式来查看这些附件,一旦它们在hdfs中。所以暂时不担心serde、性能等。尝试通过hive jdbc连接并使用java中的输出流编写文件,仍然无法打开输出文件。有这样的想法吗?如果二进制内容按原样传输到hive
binary
,那么您应该能够通过jdbc以java
byte[]的形式检索它
——在这一点上,您的问题是找到一个查看器。另一方面,如果您使用一个配置单元
STRING
(使用隐式UTF-8编码——任何不符合要求的代码都将被丢弃)并将其放入Java
字符串
(使用一些内部编码,例如UTF-16 w/从UTF-8自动转换,添加
null
字节进行填充),那么您就注定要失败。嗨,我也在寻找同样的解决方案。如果你发现了什么,请告诉我。谢谢。