【问题标题】:Bulk loading json to HBase using pig使用 pig 将 json 批量加载到 HBase
【发布时间】:2014-06-24 01:18:04
【问题描述】:

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

每一行的格式为:

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

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

【问题讨论】:

    标签: hbase apache-pig hbasestorage


    【解决方案1】:

    您可能想使用 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)) ;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-26
      相关资源
      最近更新 更多