打破猪拉丁地图[chararray]

时间:2015-06-22 14:02:12

标签: apache-pig

我对猪拉丁语很新,请原谅以下问题中的任何无知。我继承了一些基本上具有以下功能的代码:

template <typename T>
class Exporter{
public:
  Exporter( SEXP x ) : t(x){}
  inline T get(){ return t ; }

private:
  T t ;
} ;

现在,如果我转储NumericVector,我会得到类似以下内容(假数据)

R> x <- array(1:27, c(3, 3, 3))
R> rcube_means(x)
     [,1] [,2] [,3]
[1,]    2   11   20
[2,]    5   14   23
[3,]    8   17   26
R> cube_means(x)
     [,1] [,2] [,3]
[1,]    2   11   20
[2,]    5   14   23
[3,]    8   17   26

基本上我想得到输出中的USERS = LOAD 'hbase://some_table' USING org.apache.pig.backend.hadoop.hbase.HBaseStorage('s:*', '-caster HBaseBinaryConverter --limit some_limit') AS (user_map:map[chararray]); 值。但我不确定如何从这个架构中分解它们。任何帮助将不胜感激。

为了更多地解释我的问题,或许我对USERS模式(以及如何操纵它)的理解缺乏

编辑我想要的预期输出是将所有([n1#{"s":{"added": 1430668638000, "lastseen": 1430668638000, "expires": 1433260638000}},n2#{"s":{"added": 1430668638000, "lastseen": 1430668638000, "expires": 1433692638000}},n22#{"segment":{"added": 1430668638000, "lastseen": 1430668638000, "expires": 1433260638000}},n3#{"s":{"added": 1430668638000, "lastseen": 1430668638000, "expires": 1433692638000}},n4#{"segment":{"added": 1430668638000, "lastseen": 1430668638000, "expires": 1433692638000}}]) ([n8#{"s":{"added": 1428792426000, "lastseen": 1428792426000, "expires": 1431816426000}},n9#{"segment":{"added": 1428792426000, "lastseen": 1428792426000, "expires": 1431816426000}},n11#{"segment":{"added": 1428792426000, "lastseen": 1428792426000, "expires": 1431816426000}}]) 信息存储到名为n*的变量中。这样,当我map:[chararray]时,我会得到以下内容

n*

1 个答案:

答案 0 :(得分:1)

能够通过编写python UDF来回答我自己的问题。在Pig中,调用看起来像这样

N_S = FOREACH USERS GENERATE my_udfs.translate_map(user_map)

我的python udf看起来像

@outputSchema("doc:chararray")
def translate_map(input):

    n_str = ""
    for k, v in input.items():

        n_str += str(key)
        n_str += " "

    return n_str