Hive 将整行的配置单元UDF作为输入

Hive 将整行的配置单元UDF作为输入,hive,apache-pig,udf,Hive,Apache Pig,Udf,我正在寻找编写通用数据清理框架的方法,该框架基于为给定数据集配置的位置和类型清理整行 数据集中的样本输入记录如下: 100| John | Mary | 10Sep2013 | 10,23,4 现在,配置将基于位置(从索引1开始)。例如,在位置2修剪空格,在位置4转换为配置单元标准日期,在位置5删除逗号。这是在数据集级别配置的 现在,如果必须将它们插入到hive或pig中,那么应该有一种方法让hive\pig UDF接受整行作为输入。UDF应该基于可配置的字段分隔符分析行,并基于位置应用特定

我正在寻找编写通用数据清理框架的方法,该框架基于为给定数据集配置的位置和类型清理整行

数据集中的样本输入记录如下:

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是否有办法接受整行文本作为输入?

将整行作为输入的唯一方法就是将整行文本作为一列。但就单独处理列而言,您可以使用as UDTF,它将输入作为1列,但该UDTF的输出将是多个列,可以由Hive或Pig使用


另一种选择是将值保留在不同的列中,但构建一个UDF,使我们能够足够聪明地理解数据的格式,并相应地给出不同的输出。但是UDF将采用1列,并且输出也将采用1列。将整行作为输入的唯一方法是将整个文本保留为一列。但就单独处理列而言,您可以使用as UDTF,它将输入作为1列,但该UDTF的输出将是多个列,可以由Hive或Pig使用


另一种选择是将值保留在不同的列中,但构建一个UDF,使我们能够足够聪明地理解数据的格式,并相应地给出不同的输出。但是UDF将采用1列,输出也将采用1列,在第二个选项中,如何使用将整行(所有列)传递到配置单元中的UDF。在Pig中,您可以使用UDF_Test(*)实现这一点,在这里您可以得到一个包含所有列的元组,并输出您想要的任何内容。噢,感谢您提供的信息。我很高兴知道。@Raju,在第二个选项中,如何使用将整行(所有列)传递给配置单元中的UDF。在Pig中,您可以使用UDF_Test(*)实现这一点,在这里您可以得到一个包含所有列的元组,并输出您想要的任何内容。噢,感谢您提供的信息。我很高兴知道这一点。