我需要根据客户名称和地址在hive表中插入唯一的行。
无论如何我们可以使用客户名称和地址生成唯一值吗?我希望生成如下所示的unique_value列,并选择具有不同unique_value的行。
例如,如下所示我想生成unique_value列
{customer_name} {address} {unique_value}
omar street1 111
ryan stree2 222
omar street1 111
或任何其他方法也值得赞赏!
答案 0 :(得分:6)
你可以尝试两件事。您可以尝试使用UUID,但会为每行生成唯一ID。这样的事情可以做到:
选择反映(" java.util.UUID"," randomUUID"),customer_name, address,来自table_name的unique_value
但是,如果您计划根据名称和地址使用唯一键,则可以连接两个字段并获取结果字符串的哈希值(请参阅此处的哈希函数详细信息:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF)。这将确保相同的名称和地址获得相同的密钥。此查询应该足够了:
选择customer_name,address,hash(concat(customer_name,address)) 来自table_name