我在配置单元中有一个表,其中一列是string。该列中的值类似于“x=1,y=2,z=3”。我需要编写一个查询,在该列中为所有行添加x的值。如何提取x的值并将其相加?
bkhjykvo1#
你需要一个 UDF 对于此转换:
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:我还没有测试过这个。但这应该给你一个前进的方向。
1条答案
按热度按时间bkhjykvo1#
你需要一个
UDF
对于此转换:现在你可以试试这个:
p、 s:我还没有测试过这个。但这应该给你一个前进的方向。