使用pig将json批量加载到HBase
嗨,我正在寻找一种方法来加载大量的json文档,每行一个 每行的格式如下:使用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
'{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)) ;