Cassandra 卡桑德拉+;宽柱清管器
我目前正在开发一个推荐程序应用程序,并将cassandra与hadoop和pig一起用于map/reduce作业。 为了利用列名属性,我们的团队决定使用无值列和聚合列名存储数据,因此,例如,特定内容的所有命中都存储在具有单行的列族中,并且每列都是使用以下结构的内容的命中:Cassandra 卡桑德拉+;宽柱清管器,cassandra,apache-pig,Cassandra,Apache Pig,我目前正在开发一个推荐程序应用程序,并将cassandra与hadoop和pig一起用于map/reduce作业。 为了利用列名属性,我们的团队决定使用无值列和聚合列名存储数据,因此,例如,特定内容的所有命中都存储在具有单行的列族中,并且每列都是使用以下结构的内容的命中: rowkey = 'single_row' { id_content:hit_date, - . . . } 使用此模式,我们可以获得宽行而不是窄行;问题是,我需要如何操作Pig中的数据才能使
rowkey = 'single_row' {
id_content:hit_date, -
.
.
.
}
使用此模式,我们可以获得宽行而不是窄行;问题是,我需要如何操作Pig中的数据才能使用此模式将数据存储在cassandra中?从您的评论中,我不确定您是否使用复合列,或者您是否只是将id\u内容和hit\u日期连接在一起 对于普通(即非复合)列,模式为:
(key, {(col_name, col_value), ...})
对于复合列,我认为模式如下所示:
(key, {((col_name_part_1, col_name_part_2), col_value), ...})
此评估(针对复合列)基于读取在上提交的修补程序。我的方法是连接值。在这种情况下,架构将是:
(键,{(col_name,col_value),…})
我在答案中添加了非复合模式以使其更加完整。pig中的复合列在存储时不会像在加载时那样开箱即用。我必须序列化复合列名的元组,以便将其正确存储到cassandra中。