我想在 Pig 中旋转一些数据,使用我要旋转的行中的值作为我的列名。我事先不知道这些值。我希望将这些新列名存储为每个相关值的架构。
这与Pivoting in Pig的问题相同,但具有动态生成的列名。
现在我有一袋像
{(C1, V1), (C2, V2), (C3, V3), ... (Cn, Vn)}
我想将它们更改为:
dump bag;
{ (V1, V2, V3, ... Vn) }
describe bag;
bag: {C1: chararray,C2: chararray, ... , Cn: chararray}
我目前正在尝试使用覆盖的 UDF 来执行此操作outputSchema()
,但是我无法访问我的列名,因为outputSchema()
' 的输入应该是 Schema 对象,并且 Schema 对象不允许使用input.get(<field-num>)
来访问字段值。还有另一种动态创建新模式的方法吗?
我如此喜欢使用模式的原因是因为我最终要导出到 CSV。