我在Hive中有一个表,其中一列是字符串。该列中的值类似于"x=1,y=2,z=3"。我需要编写一个查询,将这一列的x值添加到所有行中。我如何提取x的值并将它们相加?
你需要一个UDF
来完成这个转换:
import org.apache.hadoop.hive.ql.exec.Description;
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;
class SplitColumn extends UDF {
public Integer evaluate(Text input) {
if(input == null) return null;
String val=input.toString().split("=")[1];
return Integer.parseInt(val);
}
}
现在你可以试试这个:
hive> ADD JAR target/hive-extensions-1.0-SNAPSHOT-jar-with-dependencies.jar;
hive> CREATE TEMPORARY FUNCTION SplitColumn as 'com.example.SplitColumn';
hive> select sum(SplitColumn(mycolumnName)) from mytable;
p。S:我还没有测试过。但这应该给你一个方向,让你继续。