gpt4 book ai didi

hadoop - 在 Hive 中将多列中的列合并为一列

转载 作者:可可西里 更新时间:2023-11-01 14:20:44 55 4
gpt4 key购买 nike

有没有办法在 Apache Hive 中为 explode() 函数做一些相反的事情。假设我有一个这种形式的表 id int, description string, url string, ...

我想从这个表创建一个看起来像 id int, json string 的表,其中 json 列将所有其他列存储为 json。 "description":"blah blah", "url":"http:", ...

最佳答案

Hive 可以访问一些 string operations可用于将多列合并为一列

SELECT id, CONCAT(CONCAT("(", CONCAT_WS(", ", description, url)), ")") as descriptionAndUrl 
FROM originalTable

将许多列组合成有效的 JSON 显然会很快变得复杂。如果这是其中之一,并且您知道所有 JSON 字符串都将具有相同的属性,您可能会为了您的目的而使用 CONCAT。

“正确”的方法是写一个 User Defined Function它获取一个列列表并输出一个 JSON 字符串。如果您需要添加列或对其他表执行相同的操作,这将更易于维护。

很可能有人已经写了一个你可以使用的,所以你应该四处看看。不幸的是 [Hive 提供的 JSON 相关 UDF] https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-get_json_object ) 从 JSON 字符串开始工作,他们不会创建它们。

关于hadoop - 在 Hive 中将多列中的列合并为一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16009608/

55 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com