在Hive查询中获取字符串中的值

时间:2014-08-06 18:58:39

标签: hadoop mapreduce hive

我在Hive中有一个表,其中一列是字符串。该列中的值类似于" x = 1,y = 2,z = 3"。我需要编写一个查询,在此列中为所有行添加x的值。如何提取x的值并添加它们?

1 个答案:

答案 0 :(得分:1)

此转换需要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:我没有测试过这个。但这应该为你指明方向。