使用Datastax中的 Pig 示例,您可以通过以下方式从 Cassandra 加载数据
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;
阅读 Pig 参考手册后,我不清楚如何重写/扩展上述代码以生成可以存储回 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);
但是,我觉得必须有一种我想念的直截了当的方式。任何帮助表示赞赏。