Hive 如何md5配置单元中的整行?

Hive 如何md5配置单元中的整行?,hive,hiveql,Hive,Hiveql,使用配置单元,我想散列查询中的整行 我尝试了以下方法${xxx},查询是从bash脚本构建的: SELECT md5(*) FROM ${DATABASE_NAME_SUFFIXE}.${DATABASE_PREFIXE}_${TABLE_NAME} WHERE ${TABLE_DATE_FIELD} <= '${LIMIT_DATE}' ORDER BY ${CREATION_DATE_FIELD} DESC LIMIT 1 这将返回以下错误: 第1行:7错误的参数“md5”

使用配置单元,我想散列查询中的整行

我尝试了以下方法${xxx},查询是从bash脚本构建的:

    SELECT md5(*) FROM ${DATABASE_NAME_SUFFIXE}.${DATABASE_PREFIXE}_${TABLE_NAME} WHERE 
${TABLE_DATE_FIELD} <= '${LIMIT_DATE}' ORDER BY ${CREATION_DATE_FIELD} DESC LIMIT 1
这将返回以下错误:

第1行:7错误的参数“md5”:类没有匹配的方法 org.apache.hadoop.hive.ql.udf.UDFMd5,带bigint、int、varchar128, 时间戳,时间戳,varchar64,varchar64,varchar64,int, bigint,int,varchar50,varchar255,bigint,时间戳,时间戳, varchar64,bigint,timestamp,timestamp,varchar64,int,int, 查38,查40,查1。可能的选择:FUNCbinary 函数字符串

如果我从错误和md5函数的文档中理解正确,我需要传递二进制或字符串。我怎样才能做到这一点

编辑:也尝试了:

SELECT md5(SELECT * FROM ${DATABASE_NAME_SUFFIXE}.${DATABASE_PREFIXE}_${TABLE_NAME} WHERE ${TABLE_DATE_FIELD} <= '${LIMIT_DATE}' ORDER BY ${CREATION_DATE_FIELD} DESC LIMIT 1) 
返回

无法识别函数中“SELECT”*“FROM”附近的输入 规格

连接所有列,然后在连接的列上使用md5

select md5(concat(a,b)) as md5 from (select string("abc")a,int("2")b)e;
+--------------------------------+
|md5                             |
+--------------------------------+
|63872b5565b2179bd72ea9c339192543|
+--------------------------------+
我们还可以定义所有列名,然后在concat函数中使用

尝试使用concat*:


如果不指定所有列名,绝对没有办法做到这一点。@FlorianCastelain请尝试concat*!现在就开始工作。但是在子查询中,似乎必须指示列名。这增加了我的查询构建逻辑的复杂性。例如,这将不起作用:从SELECT*中选择md5concat*作为哈希,从上次修改的批处理中选择*from,我可以运行类似的查询:SELECT md5concat*from SELECT*from I,其中1=1e;您需要别名子查询。。从上次修改的批次中选择*作为哈希,选择md5concat*
select md5(concat(*)) as md5 from (select string("abc")a,int("2")b)e;
+--------------------------------+
|md5                             |
+--------------------------------+
|63872b5565b2179bd72ea9c339192543|
+--------------------------------+