2012-06-19 65 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));