2014-06-20 8 views
0

안녕 나는 JSON 문서의 큰 숫자를로드 할 수있는 방법을 찾고 있어요 줄에 하나씩대량로드 JSON은

각 라인의 형식이다 :

'{id :"id123", "c1":"v1", "c2":"v2", "c3" :"v3"...}' 

각 JSON 문서가있을 수 있습니다 알 수없는 필드 수. 돼지에서 이것을 할 수있는 방법이 있습니까? 필드를 hbase의 별도 열에로드하려고합니다.

답변

0

아마도 udf를 사용하고 싶을 것입니다.

UDF :

from com.xhaus.jyson import JysonCodec as json 
from com.xhaus.jyson import JSONDecodeError 


@outputSchema(
    "rels:{t:('{id:chararray,c1:chararray, c2:chararray, c3:chararray...}')}" 
) 
def parse_json(line): 
    try: 
     parsed_json = json.loads(line) 
    except: 
     return None 
    return tuple(parsed_json.values()) 

돼지 : 파이썬과 인스턴스와 당신이 제공을 위해

REGISTER 'path-to-udf.py' USING jython AS py_udf ; 

raw_data = LOAD 'path-to-your-data' 
      USING PigStorage('\n') 
      AS (line:chararray) ; 

-- Parse lines using UDF 
parsed_data = FOREACH cleanRawLogs GENERATE FLATTEN(py_f.parse_json(line)) ;