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

标签 hadoop mapreduce hive

我在 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:我没有测试过这个。但这应该为您指明前进的方向。

关于hadoop - 在 Hive 查询中获取字符串中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25168106/

相关文章:

r - 如果 1 个 reducer (RHadoop)的数据变大怎么办?

java - 配置单元顶点失败 : killed/failed due to:ROOT_INPUT_INIT_FAILURE Caused by: java. lang.NullPointerException

apache-spark - Apache Spark SQLContext 与 HiveContext 有什么区别?

hadoop - 如何在配置单元插入到查询中指定列列表

Hadoop 作业要求禁用安全节点

hadoop - 如何在 PigLatin 的 SUM 中计算乘法

具有自定义 Writable 的 Hadoop MapReduce 不同模式会产生重复键

hadoop - Twitter 搜索 API 和 Hadoop

java - Hadoop 中的 Map Reduce 流程

python - python 上的 Hive Server 2 错误与 hiveserver2 连接