在配置单元查询中获取字符串中的值

lyr7nygr  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(443)

我在配置单元中有一个表,其中一列是string。该列中的值类似于“x=1,y=2,z=3”。我需要编写一个查询,在该列中为所有行添加x的值。如何提取x的值并将其相加?

bkhjykvo

bkhjykvo1#

你需要一个 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:我还没有测试过这个。但这应该给你一个前进的方向。

相关问题