使用pig将json批量加载到HBase

使用pig将json批量加载到HBase,hbase,apache-pig,hbasestorage,Hbase,Apache Pig,Hbasestorage,嗨,我正在寻找一种方法来加载大量的json文档,每行一个 每行的格式如下: '{id :"id123", "c1":"v1", "c2":"v2", "c3" :"v3"...}' 每个json文档可以有未知数量的字段。有没有办法在猪身上做到这一点?我想在hbase上将字段加载到单独的列中。您可能想使用udf。例如,使用python和您提供的: UDF: 清管器: from com.xhaus.jyson import JysonCodec as json from com.xhaus.jys

嗨,我正在寻找一种方法来加载大量的json文档,每行一个

每行的格式如下:

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

每个json文档可以有未知数量的字段。有没有办法在猪身上做到这一点?我想在hbase上将字段加载到单独的列中。

您可能想使用udf。例如,使用python和您提供的:

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)) ;