【发布时间】:2014-06-24 01:18:04
【问题描述】:
您好,我正在寻找一种方法来每行加载大量 json 文档
每一行的格式为:
'{id :"id123", "c1":"v1", "c2":"v2", "c3" :"v3"...}'
每个 json 文档可以有未知数量的字段。有没有办法在猪身上做到这一点?我想将字段加载到 hbase 上的单独列中。
【问题讨论】:
标签: hbase apache-pig hbasestorage
您好,我正在寻找一种方法来每行加载大量 json 文档
每一行的格式为:
'{id :"id123", "c1":"v1", "c2":"v2", "c3" :"v3"...}'
每个 json 文档可以有未知数量的字段。有没有办法在猪身上做到这一点?我想将字段加载到 hbase 上的单独列中。
【问题讨论】:
标签: hbase apache-pig hbasestorage
您可能想使用 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)) ;
【讨论】: