2013-08-29 54 views
1

我正在處理一個序列文件。序列文件中的每個記錄都是一個protobuf。豬 - 我可以將一個byteArray轉換爲一個元組

在豬我正在使用elephantbird的SequenceFileLoader和ProtoBuf轉換器加載序列文件。

所以,現在我可以看到一個代表protobuf對象的元組。假設:

objects: {object: {id: long, name: chararray, nested-object: bytearray}....}. 

嵌套對象是具有兩個屬性(prop1,prop2)的另一個protobuf。

現在,有人可以幫我弄清楚如何將嵌套對象的bytearray轉換爲另一個元組(prop1,prop2)(不知道元組是否是正確的術語)?

+0

你是什麼意思元組和這裏尤其是** **另一元組? – Andrey

+0

@Andrey我編輯了這個問題 - 希望現在更清楚。 – hba

+0

需要注意的是,當我讀到'{prop1,prop2}'時,我發現它像'{(prob1),(prop2)}'這樣的包含'B:{T:(prop:chararray)} '。一個元組看起來像'(prop1,prop2)',並且有一個像'T:(p1:chararray,p2:chararray)'的模式。 – mr2ert

回答

2

不知道它是否是最好的方法,但我通過在這些instructions之後編寫UDF來解決問題。

我的UDF將採取DataByteArray並返回一個元組。

然後在豬:

nestedObjects = FOREACH objects GENERATE MY_UDF_CONVERTER(nested_object); 
+0

它也可能是值得的,看看你是否可以[投出領域] (http://pig.apache.org/docs/r0.10.0/basic.html#cast)。 – mr2ert

0

用我們的數組創建ByteArrayInputStream,然後將其送入轉換器。

+0

我很新的豬(1日齡),請你擴大你的答案... – hba

相關問題