我有一个转换脚本(用 R 编写),我想在表的子集上运行它。即我想运行许多减少步骤,一个用于某个列的每个值。
假设原始表有列 {C1, C2, C3},则转换应在 C1 的不同值上运行,并将 C2 和 C3 作为输入数据传递,将输出与 C1 的值一起作为结果。
我正在查看 Hive DISTRIBUTE 操作来解决这个问题,但无法弄清楚它的正确语法/机制。
例如,如果这是我的表:
C1,C2
a,1
a,2
b,1
b,2
b,3
我的脚本返回表的每个子集 C1 的 C2 的平均值,那么结果应该是:
C1,D1
a,1.5
b,2
这是我想做的语法错误的伪代码。假设 my_table 有 C1、C2 列:
from my_table
select
C1,
transform(
C2
)
using 'my_script.R'
distribute by C1
;