使用pig将json批量加载到hbase

643ylb08  于 2021-06-09  发布在  Hbase
关注(0)|答案(1)|浏览(379)

嗨,我正在寻找一种方法来加载大量的json文件,每行一个
每行的格式如下:

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

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

eqfvzcg8

eqfvzcg81#

你可能想使用自定义项。例如python和您提供的:
自定义项:

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

相关问题