Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 配置单元UDF将二进制(utf8)转换为Base64字符串_Java_Utf 8_Hive_Base64_Parquet - Fatal编程技术网

Java 配置单元UDF将二进制(utf8)转换为Base64字符串

Java 配置单元UDF将二进制(utf8)转换为Base64字符串,java,utf-8,hive,base64,parquet,Java,Utf 8,Hive,Base64,Parquet,我有一个二进制节约字段存储在拼花文件中。Parquet将其写入二进制(UTF8),我想使用配置单元UDF将其转换为Base64字符串。它应该是非常基本的,但不知道为什么我的代码不起作用,以下是我尝试过的 public class Base64Encode extends UDF { public Text evaluate(Text bin) { if (bin != null) { String encoded = new String(Base64.getEncod

我有一个二进制节约字段存储在拼花文件中。Parquet将其写入二进制(UTF8),我想使用配置单元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;
  }

}

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

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

base64(bin_field)
否则,如果它是文本格式,并且您希望将其转换为二进制UTF-8,然后转换为base 64,则组合:

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