我正在研究如何编写一个通用的数据清理框架,该框架基于为给定数据集配置的位置和类型清理整行。
数据集中的样本输入记录如下,
100| John | Mary | 10Sep2013 | 10,23,4
现在配置将基于位置(从索引1开始)。例如,在位置2修剪空格,在位置4转换为配置单元标准日期,在位置5删除逗号。这是在数据集级别配置的。
现在,如果这些必须插入到hive或pig中,那么hive\pig udf应该有一种方法来接受整行作为输入。udf应该基于可配置的字段分隔符分析行,并基于位置应用特定于字段\列的操作。通过这种方式,对于这种基于行的操作,使用pig、hive或其他任何东西都无关紧要。我知道抽象特定于hive\pig的行类型和提供通用的基于位置的getter要复杂一些。
为整行而不是每列调用udf也有意义,这样可以加快速度。
hive\pig udf是否有方法接受整行文本作为输入?
1条答案
按热度按时间nbnkbykc1#
将整行作为输入的唯一方法就是将整个文本保持为一列。但就单独处理列而言,您可以使用作为udtf的udtf,它将输入作为1列,但该udtf的输出将是多个列,可以由hive或pig使用。
另一种选择是将值保存在不同的列中,但是构建一个udf,让我们足够聪明地理解数据的格式,并相应地给出不同的输出。但自定义项将取1列,输出也将为1列