Java中的Hive UDF - 从二进制转换为十六进制

时间:2018-03-27 06:55:34

标签: java mongodb hive

我需要将二进制转换为十六进制。问题与下面链接中提到的问题非常相似,但我需要使用java而不是node.js - Converting mongodb Binary _id to LUUID using node

列值是二进制base64,表示为Hive中的数据类型字符串。 “AAGOBh3pqkWvtaK8AO2U9w ==”。 所需的十六进制输出 - '00018e06-1de9-aa45-afb5-a2bc00ed94f7'

我正在用Java创建一个Hive UDF来进行这种转换,我正在研究Hive 1.0版本。我想表示(不转换)此字符串“AAGOBh3pqkWvtaK8AO2U9w ==”作为base64以进一步转换为十六进制。

与上述链接中的node.js示例类似 -  var hex = new Buffer(bin,'base64')。toString('hex');

但是base64似乎没有效果。

如果没有Hive UDF,有没有办法做到这一点?如果没有,我们如何将字符串列表示(不转换)为base64列。

感谢您的帮助!!

1 个答案:

答案 0 :(得分:0)

我建议您使用Apache Common Codec 你的字符串看起来像一个base64字符串。

Java 中,使用:

while (isdigit(c = peekchar())){

参考This

JavaScript 中,使用:

String data = "AAGOBh3pqkWvtaK8AO2U9w==";
byte[] bytesOfBase64 = Base64.decodeBase64(data);
String hexString = Hex.encodeHexString(bytesOfBase64);
System.out.println(hexString);

参考This