0

我用 Java 编写了 Hive UDF 来解码信息,为此我们使用了下面的代码。

public Text evaluate(Text str) throws Exception {
        byte[] keyBytes = (SALT + KEY).getBytes("UTF8");
        MessageDigest messageDigest = MessageDigest.getInstance("SHA-1");
        keyBytes = messageDigest.digest(keyBytes);
        keyBytes = java.util.Arrays.copyOf(keyBytes, 16);
        SecretKeySpec key = new SecretKeySpec(keyBytes, "AES");
        Cipher cipher = Cipher.getInstance("AES");
        cipher.init(Cipher.ENCRYPT_MODE, key);
        String decryptedString = Base64.encodeBase64String(cipher.doFinal(str.getBytes()));
        return new Text(decryptedString);
    }

下面的查询使用 UDF 成功执行。

用于检查 UDF 的 Hive 查询是否正常工作

下面是我正在执行 UDF 的性别表

整个性别表

当我使用 UDF 对性别表执行查询时,我得到了空行和新行。请找到以下带有突出显示区域的屏幕截图。 使用 UDF 查询

我只期待一行的结果。请帮助并让我知道我错在哪里。

4

0 回答 0