2012-06-19 66 views
1

卡桑德拉友好关系从Datastax使用猪例如,您可以从卡桑德拉通过产生猪

cassandra_data = LOAD 'cassandra://PigDemo/Scores' USING CassandraStorage() 
    AS (name, columns: bag {T: tuple(score, value)}); 

下一页加载数据例如,你可以计算聚集通过

total_scores = FOREACH cassandra_data GENERATE name, COUNT(columns.score) as counts, 
    LongSum(columns.score) as total; 

阅读猪引用之后manual,这对我来说并不明显,我可以如何重写/扩展上面的代码来生成一个可以存储回Cassandra的关系。它的格式应为

(<row_key>,{(<column_name1>,<value1>),(<column_name2>,<value2>)}) 

在我们的例子

(name,{('counts',counts),('total',total)}) 

我一直在使用AS并指定schema不成功地试图,我试图通过使用附加GROUP语句来做到这一点:

grouped = GROUP total_scores by name; 
cass_in = FOREACH grouped GENERATE group, total_scores.(co,total); 

但是,我觉得必须有一个直接的,我错过了前进的方式。任何帮助表示赞赏。

+0

你能提供完整的线,你写的记录存储到卡桑德拉的代码? –

回答

1

使用TOBAG()和TOTUPLE()的UDF(自0.8)

FOREACH grouped GENERATE group, TOBAG(TOTUPLE('counts', total_scores.counts), TOTUPLE('total', total_scores.total));