Hive UDF将二进制(utf8)转换为Base64字符串

时间:2015-08-17 04:38:24

标签: java utf-8 hive base64 parquet

我有一个存储在镶木地板文件中的二进制thrift字段。 Parquet将其写为二进制(UTF8),我想使用Hive UDF将其转换为Base64字符串。它应该是非常基础但不知道为什么我的代码不起作用,这是我尝试过的,

 public class Base64Encode extends UDF {
  public Text evaluate(Text bin) {
    if (bin != null) {
      String encoded = new String(Base64.getEncoder().encode(bin.getBytes()));
      if (encoded != null) {
        return new Text(encoded);
      }
    }
    return null;
  }

}

1 个答案:

答案 0 :(得分:3)

您无需为此任务创建自己的UDF。有几个已定义。在您的问题中,您说Parquet将数据存储为二进制,但您的示例代码具有Text类型的参数。

如果您的参数已经是二进制,只需使用:

base64(bin_field)

否则,如果它是文本格式并且您想将其转换为二进制UTF-8然后转换为基数64,则合并:

base64(encode(text_field, 'UTF-8'))