Hadoop Hive中的自定义计算
我的配置单元表中有以下数据Hadoop Hive中的自定义计算,hadoop,hive,bigdata,Hadoop,Hive,Bigdata,我的配置单元表中有以下数据 A B C D E 1 prashant 11980 1000 -50 25 2 siva 11980 1500 -25 20 3 prateek 11980 1200 -20 70 4 rahul 12001 2000 -80 20 5 rajesh 12202 2100 -25 10 6
A B C D E
1 prashant 11980 1000 -50 25
2 siva 11980 1500 -25 20
3 prateek 11980 1200 -20 70
4 rahul 12001 2000 -80 20
5 rajesh 12202 2100 -25 10
6 ankit 12201 1700 -70 20
7 alok 12203 4000 -30 100
我需要通过一些计算(如下所示)将数据从这个表传输到另一个配置单元表。如您所见,它有一个额外的列,该列应根据所述计算获取数据。基本上,这个概念是——将一行中的计算输出作为下一行的输入,依此类推
A B C D E F
1 prashant 11980 1000 -50 25 E1-D1
2 siva 11980 1500 -25 20 F1-D2
3 prateek 11980 1200 -20 70 F2-D3
4 rahul 12001 2000 -80 20 F3-D4
5 rajesh 12202 2100 -25 10 F4-D5
6 ankit 12201 1700 -70 20 F5-D6
7 alok 12203 4000 -30 100 F6-D7
我尝试为此编写一个UDAF,但似乎不起作用,因为我看不到任何方法在迭代到下一行时获取最后一行值,并且不确定terminatePartial()和merge()函数在多个映射任务的情况下如何工作
卡在这一点上
我还想过将数据放到一个文本文件中,然后在上面运行mapreduce作业,但这有点复杂,因为在执行多个map任务的情况下,计算会混淆
不确定在hadoop中如何实现。任何建议都会有很大帮助。生成F列的规则是什么,它是否只取决于采样线的值?@loolo是的,它只取决于采样线的值。规则是-减去E和D中的值,并将其放入F中作为第一行。然后从第一行获取F的这个值,并将其作为输入传递到下一行,然后将其F列值计算为->(最后一行的F值-当前行的D值),依此类推。然后将其作为输入传递到下一行,这意味着它不仅仅依赖于同一行。在这种情况下,不适合用分布式的方法求解。有没有可能让它只依赖于同一行的值呢?@罗洛是的,这就是问题所在。它不依赖于同一行,而是从上一行获取值。你们有什么想法可以在hive或mapreduce中实现吗?对我来说,MR的优势在于并行地完成这项工作。在您的情况下,每个作业都依赖于上一个作业,这意味着这只能在一个映射器内完成。使用
hadoop
绝对不合适。Hive只是hadoop的包装器,这意味着Hive也不适合这个糟糕的规则。如果可能的话,改变你的规则。