我正在寻找编写通用数据清理框架的方法,该框架根据为给定数据集配置的位置和类型来清理整行。
来自数据集的样本输入记录如下,
100| John | Mary | 10Sep2013 | 10,23,4
现在配置将基于位置(从索引1开始)。例如,在位置2修剪空格,在位置4转换为蜂巢标准日期,在位置5删除逗号。这是在数据集级别配置的。
现在如果这些必须插入蜂巢或猪,应该有一种方法让hive \ Pig UDF接受整个行作为输入。 UDF应根据可配置字段分隔符解析行,并根据位置应用字段\列特定操作。这样,猪或蜂房或其他任何东西是否用于这种基于行的操作都无关紧要。我知道这有点涉及抽象hive \ pig特定行类型并提供基于通用位置的getter。
为整行调用UDF而不是为每个列调用也可能有意义。
有没有办法让hive \ pig UDF接受整行文本作为输入?
答案 0 :(得分:0)
将整行作为输入的唯一方法是将整个文本保留为一列。但就单独处理列而言,您可以使用UDTF将输入作为1列,但UDTF的输出将是多个列,可供Hive或Pig使用。
另一个选项是将值保存在不同的列中但是构建一个UDF,我们足够聪明地理解数据的格式并相应地给出不同的输出。但是UDF将采用1 col并且输出也将是1 col