2016-12-16 36 views
0

我有一些數據在下面的鍵值表單中,我需要將它加載到Pig中。將一些帶有數組值的鍵加載到豬中

{"California":["NJ","Seattle","NY"],"NJ":["California","Seattle","NY"],"NY":["NJ","Seattle","California"],"Seattle":["NJ","California","NY"]} 

該數據正在一行中獲取。我最終需要能夠訪問作爲源的鍵以及作爲Pig中可能的目的地的值的數組。

我嘗試了幾種使用JsonLoader,elephantbird JSON加載器來加載這些數據的方法,但它不斷返回空白而不是數據。

請幫忙。

回答

0

JsonLoader希望預定義的模式不像您擁有的那樣存在。你的數據集有多大?如果它不是那麼大,你最好寫一個簡單的python/Java UDF,它接受整個json字符串,轉換成你想要的一系列元組。在您的豬腳本中,只需調用此UDF並在由其返回的包上呼叫FLATTEN

+0

感謝您的回覆。我從來沒有寫過任何UDF,所以試圖檢查替代方法,如果可用。數據不會很大。你知道我可以嘗試和調整的任何現有的UDF嗎? –

+0

編寫UDF非常簡單。您應該查看文檔和簡單的教程/示例,其中詳細解釋了相同的內容:https://pig.apache.org/docs/r0.9.1/udf.html。如果您正在編寫Java UDF,則可以使用java中的許多json庫。 Python有一個json庫,您需要導入以執行相同的操作 – coder

+0

我不確定應該將這種數據類型映射到Java中,以便最終能夠獲取所有源作爲密鑰和所有相應的目標。我必須在腳本中使用這些值來進一步構建邏輯。鑑於緊迫性,我想檢查是否有人以前做過這件事。 –