使用Pig UDF将HBase插入数据导入另一个表

时间:2016-05-11 14:58:12

标签: python-2.7 hbase apache-pig

我在python中使用Pig UDF从HBase表读取数据然后处理并解析它,最后将其插入到另一个HBase表中。但我面临一些问题。

  • Pig的地图相当于Python的字典;
  • 我的Python脚本作为输入(rowkey,some_mapped_values)和 返回两个字符串“key”和“content”,以及 @outputSchema('tuple:(rowkey:chararray,some_values:chararray)');
  • 我的Python的核心是一个rowkey,解析它,并将其转换为 另一个rowkey,并将映射的数据转换为另一个字符串 返回变量(键,内容);

但是当我尝试将这些新值插入另一个HBase表时,我遇到了两个问题:

  1. 处理工作做得很好,但是脚本将“new_rowkey + content”作为rowkey插入并将单元格留空;
  2. 第二个问题,是如何指定要插入的新列族 在?
  3. 这是我的猪脚本的片段:

    register 'parser.py' using org.apache.pig.scripting.jython.JythonScriptEngine as myParser;
    
    data = LOAD 'hbase://source' USING org.apache.pig.backend.hadoop.hbase.HBaseStorage('values:*', '-loadKey true') AS
    (rowkey:chararray, curves:map[]);
    
    
    data_1 = FOREACH data GENERATE myParser.table_to_xml(rowkey,curves);
    
    
    STORE data_1 INTO 'hbase://destination' USING org.apache.pig.backend.hadoop.hbase.HBaseStorage('a_column_family:curves:*');
    

    我的Python脚本作为输入(rowkey,curves)

    @outputSchema('tuple:(rowkey:chararray, curves:chararray)')
    def table_to_xml(rowkey,curves):
        key = some_processing_which_is_correct
    
        for k in curves: 
            content = some_processing_which_is_also_correct
        return (key,content)
    

0 个答案:

没有答案