标签: mapreduce

OLAP可以在BigTable中完成吗?

在过去,我曾经使用在MySQL上运行的OLAP多维数据集构建WebAnalytics.现在我使用OLAP多维数据集的方式只是一个大表(好吧,它比那更智能地存储),其中每一行基本上是一个测量或聚合的测量集.每个度量都有一堆维度(即哪个页面名称,用户名,ip等)和一堆值(即多少个综合浏览量,多少访问者等).

您在这样的表上运行的查询通常采用以下形式(meta-SQL):

SELECT SUM(hits), SUM(bytes),
FROM MyCube
WHERE date='20090914' and pagename='Homepage' and browser!='googlebot'
GROUP BY hour
Run Code Online (Sandbox Code Playgroud)

因此,您可以使用上述过滤器获取所选日期中每小时的总计.一个障碍是这些立方体通常意味着全表扫描(各种原因),这意味着你可以制作这些东西的尺寸(在MiB中)的实际限制.

我正在学习Hadoop等的来龙去脉.

在BigTable上运行上述查询作为mapreduce看起来很容易:只需将'小时'作为键,在地图中过滤并通过对值进行求和来减少.

您是否可以在"实时"(即通过用户界面和用户得到他们的答案,而不是批处理模式)上运行BigTable类型的系统上面(或至少具有相同输出)的查询?

如果不; 在BigTable/Hadoop/HBase/Hive等领域做这样的事情的适当技术是什么?

olap hadoop hbase hive mapreduce

25
推荐指数
1
解决办法
7767
查看次数

使用map/reduce映射集合中的属性

更新:MongoDB的后续操作获取集合中所有键的名称.

正如Kristina所指出的,可以使用Mongodb的map/reduce来列出集合中的键:

db.things.insert( { type : ['dog', 'cat'] } );
db.things.insert( { egg : ['cat'] } );
db.things.insert( { type :  [] }); 
db.things.insert( { hello : []  } );

mr = db.runCommand({"mapreduce" : "things",
"map" : function() {
    for (var key in this) { emit(key, null); }
},  
"reduce" : function(key, stuff) { 
   return null;
}}) 

db[mr.result].distinct("_id")

//output: [ "_id", "egg", "hello", "type" ]
Run Code Online (Sandbox Code Playgroud)

只要我们想要只获得位于第一级深度的键,这就可以了.但是,它将无法检索位于更深层次的密钥.如果我们添加一条新记录:

db.things.insert({foo: {bar: {baaar: true}}})
Run Code Online (Sandbox Code Playgroud)

我们再次运行上面的map-reduce + distinct片段,我们将得到:

[ …
Run Code Online (Sandbox Code Playgroud)

mapreduce mongodb

25
推荐指数
2
解决办法
1万
查看次数

hadoop:0 reducer和identity reducer之间的区别?

我只是想确认我对减速器和减速器之间的差异的理解.

  • 0 reducer意味着将跳过reduce步骤并且mapper输出将是最终输出
  • 身份减少器意味着洗牌/分拣仍然会发生?

hadoop mapreduce

25
推荐指数
2
解决办法
2万
查看次数

如何将AWS Access Key ID和Secret Access Key指定为amazon s3n URL的一部分

我将输入和输出文件夹作为参数传递给来自网页的mapreduce字数统计程序.

得到以下错误:

HTTP状态500 - 请求处理失败; 嵌套异常是java.lang.IllegalArgumentException:必须将AWS Access Key ID和Secret Access Key指定为s3n URL的用户名或密码,或者通过设置fs.s3n.awsAccessKeyId或fs.s3n.awsSecretAccessKey属性(分别).

hadoop mapreduce amazon-s3 amazon-web-services hadoop2

25
推荐指数
3
解决办法
4万
查看次数

如何修复"任务尝试_201104251139_0295_r_000006_0无法报告状态600秒".

我写了一个mapreduce作业来从数据集中提取一些信息.数据集是用户对电影的评分.用户数约为250K,电影数约为300k.地图的输出是<user, <movie, rating>*> and <movie,<user,rating>*>.在reducer中,我将处理这些对.

但是当我运行这个工作时,映射器按预期完成,但是reducer总是抱怨

Task attempt_* failed to report status for 600 seconds.
Run Code Online (Sandbox Code Playgroud)

我知道这是由于无法更新状态,所以我context.progress()在我的代码中添加了一个调用,如下所示:

int count = 0;
while (values.hasNext()) {
  if (count++ % 100 == 0) {
    context.progress();
  }
  /*other code here*/
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,这没有帮助.仍有许多减少任务失败.

这是日志:

Task attempt_201104251139_0295_r_000014_1 failed to report status for 600 seconds. Killing!
11/05/03 10:09:09 INFO mapred.JobClient: Task Id : attempt_201104251139_0295_r_000012_1, Status : FAILED
Task attempt_201104251139_0295_r_000012_1 failed to report status for 600 seconds. Killing!
11/05/03 10:09:09 INFO mapred.JobClient: Task Id : …
Run Code Online (Sandbox Code Playgroud)

hadoop mapreduce

24
推荐指数
3
解决办法
4万
查看次数

在Hadoop中更改文件分割大小

我在HDFS目录中有一堆小文件.虽然文件的体积相对较小,但每个文件的处理时间量很大.也就是说,一个64mb文件,它是默认的分割大小TextInputFormat,甚至需要花费几个小时来处理.

我需要做的是减少分割大小,这样我就可以利用更多的节点来完成工作.

所以问题是,怎么可能通过让我们说分割文件10kb?我需要实现我自己InputFormatRecordReader这一点,或有任何参数设置?谢谢.

java hadoop mapreduce distributed-computing

24
推荐指数
2
解决办法
5万
查看次数

Hadoop:java.lang.ClassCastException:org.apache.hadoop.io.LongWritable无法强制转换为org.apache.hadoop.io.Text

我的程序看起来像

public class TopKRecord extends Configured implements Tool {

    public static class MapClass extends Mapper<Text, Text, Text, Text> {

        public void map(Text key, Text value, Context context) throws IOException, InterruptedException {
            // your map code goes here
            String[] fields = value.toString().split(",");
            String year = fields[1];
            String claims = fields[8];

            if (claims.length() > 0 && (!claims.startsWith("\""))) {
                context.write(new Text(year.toString()), new Text(claims.toString()));
            }
        }
    }
   public int run(String args[]) throws Exception {
        Job job = new Job();
        job.setJarByClass(TopKRecord.class);

        job.setMapperClass(MapClass.class);

        FileInputFormat.setInputPaths(job, new Path(args[0])); …
Run Code Online (Sandbox Code Playgroud)

java hadoop mapreduce

24
推荐指数
2
解决办法
4万
查看次数

sco上hadoop的选项有哪些?

我们正在开始一个基于大数据的分析项目,我们正在考虑采用scala(类型安全堆栈).我想知道各种scala API /项目可用于做hadoop,map reduce程序.

hadoop scala mapreduce jvm-languages bigdata

24
推荐指数
2
解决办法
1万
查看次数

写入HDFS只能复制到0个节点而不是minReplication(= 1)

我有3个数据节点正在运行,而在运行作业时,我得到以下错误,

java.io.IOException:File/user/ashsshar/olhcache/loaderMap9b663bd9只能复制到0个节点而不是minReplication(= 1).运行中有3个数据节点,此操作中排除了3个节点.在org.apache.hadoop.hdfs.server.blockmanagement.BlockManager.chooseTarget(BlockManager.java:1325)

当我们的DataNode实例空间不足或DataNode未运行时,主要出现此错误.我尝试重新启动DataNodes但仍然遇到相同的错误.

我的集群节点上的dfsadmin -reports清楚地显示了大量可用空间.

我不确定为什么会这样.

java hadoop hive mapreduce hdfs

24
推荐指数
2
解决办法
6万
查看次数

在hadoop map reduce中使用分组比较器有什么用

我想知道为什么分组比较器用于二级mapreduce.

根据二级分类的权威指南示例

我们希望键的排序顺序是年份(升序),然后是温度(降序):

1900 35°C
1900 34°C
1900 34°C
...
1901 36°C
1901 35°C
Run Code Online (Sandbox Code Playgroud)

通过将分区器设置为按键的年份部分进行分区,我们可以保证同一年的记录转到同一个reducer.然而,这仍然不足以实现我们的目标.分区程序仅确保一个reducer接收一年的所有记录; 它不会改变reducer在分区内按键分组的事实.

既然我们已经编写了自己的分区器来处理特定reducer的map输出键,那么我们为什么要对它进行分组呢.

提前致谢

hadoop mapreduce hadoop-partitioning

23
推荐指数
2
解决办法
3万
查看次数