2016-03-03 57 views
1

我有一個json文件,其中原始文本如下所示: {a:1,b:2,c:3} {a:3,b:3,c:5} {a:3,b:3, c:9}如何使用Pig讀取非分隔的JSON?

做raw = LOAD'jsonfile.text'使用JsonLoader('a:chararry,b:chararray,c:chararry');

dump raw;

只返回1條記錄。

從日誌實際摘錄:

輸入(S): 成功讀取1條記錄(630644858個字節)從「S3N://logstash/ls.s3.ip-10-45-56-56.2016- 03-02T23.10.part42.txt」

產出: 在已成功存儲1個記錄(1900個字節): 「HDFS:// nameservice1/TMP/TEMP-1489272670/TMP-1959659634」

看起來只有JSON的第一個記錄正在被讀取。 Json文件不分隔。

任何人有任何提示嗎?

+0

爲格式不正確的json添加信封? –

回答

1

我會建議做一個第一遍,該字符串替換}{}\n{。然後你將有一個有效的json對象每行,並json解析應該工作。

+0

a = LOAD's3n://logstash/ls.s3.ip-10-45-56-56.2016-03-02T23.13.part55.txt'as(raw:chararray); b = foreach a REPLACE(raw,'}','} \ n'); 有無論如何我可以使用Jsonloader加載別名,而不必先保存下來? –

0

檢查twitter大象鳥罐,可以用來處理字面上任何類型的JSON數據。

請檢查以供參考 - 使用JSON的示例豬腳本與您的數據類似!

https://gist.github.com/neilkod/2898455

希望這有助於! <> <

+0

感謝您的鏈接。我也使用大象鳥罐,不幸的是沒有工作。我結束了用「} \\ n」替換「}」。希望能有另一種解決方案。 –