2016-02-10 79 views
0

我正在研究如何編寫一個通用數據清理框架,該框架根據爲給定數據集配置的位置和類型來清理整個行。從數據設置如下整個行的Hive UDF作爲輸入

樣品輸入記錄,

100| John | Mary | 10Sep2013 | 10,23,4 

現在的配置將基於上的位置(從索引1開始)。例如,在位置2修剪空間,在位置4轉換爲蜂巢標準日期,在位置5刪除逗號。這是在數據集級別配置的。

現在,如果這些必須插入配置單元或豬,那麼應該有一種方法讓hive \ Pig UDF接受整行作爲輸入。 UDF應根據可配置的字段分隔符分析行,並根據位置應用字段\列專用操作。這樣,豬或蜂房或其他什麼都用於這種基於行的操作並不重要。我知道這對抽象hive \ pig特定行類型並提供基於通用位置的getter有點牽扯。

爲整個行調用UDF也許有意義,而不是爲每個列調整速度。

有沒有一種方法讓hive \ pig UDF接受整行文本作爲輸入?

回答

0

將整行作爲輸入的唯一方法是將整個文本保留爲一列。但就分別處理列而言,您可以將UDTF用作輸入爲1列的UDTF,但該UDTF的輸出將爲多列,可供Hive或Pig使用。

另一種選擇是將值保存在不同的列中,但構建一個UDF,我們足夠聰明地理解數據的格式並相應地給出不同的輸出。但UDF將採取1 col和輸出也將是1 col

+0

@Raju,在第二個選項,如何使用將整個行(所有列)傳遞給Hive中的UDF。在Pig中,你可以使用UDF_Test(*)來做到這一點,在那裏你得到一個包含所有列的元組並輸出任何你想要的東西。 – learninghuman

+0

哦,謝謝你的信息。我很高興知道這一點。 –