【问题标题】:Hive UDF to convert binary(utf8) into Base64 stringHive UDF 将二进制(utf8)转换为 Base64 字符串
【发布时间】:2015-08-17 04:38:24
【问题描述】:

我有一个存储在 parquet 文件中的二进制节俭字段。 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;
  }

}

【问题讨论】:

    标签: java utf-8 hive base64 parquet


    【解决方案1】:

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

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

    base64(bin_field)
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-10
      • 1970-01-01
      • 1970-01-01
      • 2014-05-17
      • 2015-01-02
      • 2021-02-24
      相关资源
      最近更新 更多