`
langzhe
  • 浏览: 288158 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MapReduce riak

    博客分类:
  • riak
 
阅读更多

1、今天看了一下riak的mapred/3/4/5方法,以下几处要留意的地方。

 

 

mapred(Pid::pid(), Inputs::mapred_inputs(), Query::[mapred_queryterm()]) -> {ok, mapred_result()} | {error, {badqterm, mapred_queryterm()}} | {error, timeout} | {error, term()}

Equivalent to mapred(Inputs, Query, default_timeout(mapred)).

 

mapred_inputs()这个比较好理解

mapred_inputs() = [{bucket()key()} | {bucket()key(), term()}] | {modfun, Module::atom(), Function::atom(), [term()]} | bucket() | {index, bucket(), Index::binary(), key()} | {index,bucket(), Index::binary(), StartKey::key(), EndKey::key()}

 

mapred_queryterm()

mapred_queryterm() = {map, mapred_funterm(), Arg::term(), Accumulate::boolean()} | {reduce, mapred_funterm(), Arg::term(), Accumulate::boolean()} | {link, Bucket::riakc_obj:bucket(), Tag::term(), Accumulate::boolean()}

这个参数理解需要花些 时间

{map, mapred_funterm(), Arg::term(), Accumulate::boolean()} 

 

mapred_funterm()

mapred_funterm() = {modfun, Module::atom(), Function::atom()} | {qfun, function()} | {strfun, list() | binary()}

以这个简单说明{qfun, function()}

 

 

 Count = fun(G, undefined, none) ->
             [dict:from_list([{I, 1}
              || I <- binary_to_term(riak_object:get_value(G))])]
           end.

 

    此处的undefined 实际是输入参数{bucket()key(), term()}中的term,默认是undefined

     此处的none 实际是query参数[{map, {qfun, Count}, none, false},中的none

 

1> {ok, Client} = riakc_pb_socket:start("127.0.0.1", 8087).
2> Mine = riakc_obj:new(<<"groceries">>, <<"mine">>,
                        term_to_binary(["eggs", "bacon"])).
3> Yours = riakc_obj:new(<<"groceries">>, <<"yours">>,
                         term_to_binary(["bread", "bacon"])).
4> riakc_pb_socket:put(Client, Yours, [{w, 1}]).
5> riakc_pb_socket:put(Client, Mine, [{w, 1}]).


Now that we have a client and some data, let’s run a query and count how many occurances of groceries.

6> Count = fun(G, undefined, none) ->
             [dict:from_list([{I, 1}
              || I <- binary_to_term(riak_object:get_value(G))])]
           end.
7> Merge = fun(Gcounts, none) ->
             [lists:foldl(fun(G, Acc) ->
                            dict:merge(fun(_, X, Y) -> X+Y end
0
2
分享到:
评论

相关推荐

    riak-Erlang.rar

    5. 查询语言:虽然主要为键值存储,但Riak还支持查询语言 Riak Search 和 Riak KV MapReduce,允许用户执行更复杂的查询操作。 安装Riak和Erlang在Linux上通常涉及以下步骤: 1. 安装依赖:确保系统安装了必要的...

    Laravel开发-laravel-riak .zip

    - **性能优化**:利用 Riak 的 MapReduce 功能进行复杂查询,但要注意其性能开销。 - **备份与恢复**:定期备份 Riak 数据,并了解如何在需要时恢复数据。 - **监控与调优**:持续监控 Riak 集群的性能,根据需要...

    riak_kv:Ripple KeyValue商店

    Riak KV提供了键/值数据存储,并具有MapReduce,轻量级数据关系和几种不同的客户端API。快速开始您必须具有或更高版本,以及GNU风格的构建系统才能编译和运行riak_kv 。 利用riak_kv的最简单方法是安装可用的完整...

    nodejs-riak-rating-svc:一个简单的基于 Node.js 的 RESTful 评级服务,并使用 Riak 进行持久化

    5. **搜索和 MapReduce** - Riak 支持 Lucene-based全文搜索引擎和 MapReduce 功能,允许开发者执行复杂的数据查询和分析。 通过 `nodejs-riak-rating-svc`,开发者可以学习到如何将 Node.js 与 Riak 整合,构建一...

    elasticsearch-cloud-aws-0.18.5.zip

    Riak Hadoop Connector是连接这两个系统的桥梁,它允许用户将Riak作为Hadoop MapReduce作业的数据源和数据目的地,从而实现数据的导入导出。这使得在大数据处理和分析场景下,可以利用Riak的强一致性特性与Hadoop的...

    nosql.docx

    Riak 支持 MapReduce 查询,适用于大规模分布式环境。与 Membase 相比,Riak 在一致性模型上有所不同,提供了多版本并发控制(MVCC)来处理冲突,适合对数据一致性和最终一致性要求不同的应用场景。 NoSQL 数据库的...

    Big Data Glossary-大数据术语

    Cascading是一个Java库,用于简化MapReduce应用程序的开发,它提供了一个更高级别的抽象层,使得开发者能够更容易地构建复杂的数据管道。 **3.5 Cascalog** Cascalog是一个基于Clojure编写的Cascading应用程序,它...

    所有架构师都应该至少读上两遍的10篇论文-系统架构

    1. **论文1:ACM SIGOPS Operating Systems Review - "MapReduce: Simplified Data Processing on Large Clusters"** 这篇由Google发表的论文介绍了MapReduce编程模型,它是大数据处理的里程碑。MapReduce将复杂的...

    Big Data Glossary

    Riak是一个分布式数据库,强调简单、易于管理。ZooKeeper是用于管理分布式系统的协调服务。 MapReduce是一种编程模型,用于处理大规模数据集的并行运算,常见于大数据处理框架中。Hadoop是最著名的MapReduce框架之...

    SpringData.zip

    Commons - 提供共享的基础框架,适合各个子项目使用,支持跨数据库持久化Hadoop - 基于 Spring 的 Hadoop 作业配置和一个 POJO 编程模型的 MapReduce 作业Key-Value - 集成了 Redis 和 Riak ,提供多个常用场景下的...

    20XX 辽宁当代科学技术新知识网上考试答案;.doc

    27. NoSQL数据库指的是非关系型的数据存储系统,如Cassandra、CouchDB和Riak,而不是MySQL这类关系型数据库。 28. HBase的表由行、列族、列和时间戳等元素组成,是一种列存储的NoSQL数据库。 29. MapReduce是处理大...

    spring data API

    Hadoop - 基于 Spring 的 Hadoop 作业配置和一个 POJO 编程模型的 MapReduce 作业 Key-Value - 集成了 Redis 和 Riak ,提供多个常用场景下的简单封装 Document - 集成文档数据库:CouchDB 和 MongoDB 并提供基本...

    分布式开发经典论文集

    再者,分布式数据库如Cassandra、MongoDB和Riak,它们在分布式环境中提供高可扩展性和容错性。这些数据库通常采用无中心架构,允许数据在多个节点间复制,以提高读写性能和容灾能力。 负载均衡是确保系统性能和可用...

    大数据技术专业从业人员学习必读

    12. **MapReduce**:MapReduce是处理大规模数据的编程模型,由Google提出,现已被许多大数据工具采用,如CouchDB、MongoDB和Riak。 13. **Oozie**:Oozie是Hadoop的工作流调度系统,用于协调各种Hadoop作业和其他...

    企业中的NoSQL.doc

    例如,HBase、CouchDB和Riak使用REST接口;HBase、CouchDB、MongoDB和Hypertable支持MapReduce;Voldemort和Scalaris采用Get/Put;HBase、Hypertable、Cassandra等通过Thrift接口。数据模型则有键值对(如Voldemort...

    Seven Databases in Seven Weeks

    例如,书中会详细介绍Redis和CouchDB之间的显著差异,挖掘Riak背后的Dynamo血统,以及如何使用MapReduce解决大数据问题。读者还将学会如何利用可扩展服务如亚马逊的EC2来构建服务器集群。 此外,本书还让读者理解...

Global site tag (gtag.js) - Google Analytics