标签: mapreduce

Spark内部是否使用Map-Reduce?

Spark内部使用MapReduce吗?(自己的地图缩小)

当我第一次听到有人告诉我“Spark 使用 Map-Reduce”时,我很困惑,我总是知道 Spark 是 Hadoop Map-Reduce 的替代品。

在我检查谷歌后,我发现一个网站对此做了一些太简短的解释: https: //dzone.com/articles/how-does-spark-use-mapreduce

但互联网的其余部分仅比较 Spark 和 Map-Reduce。

然后有人向我解释说,当 Spark 创建 RDD 时,数据会分割到不同的数据集中,如果您使用例如 SPAR.SQL 的查询,则不应是映射缩减,例如:

select student 
from Table_students 
where name = "Enrique"
Run Code Online (Sandbox Code Playgroud)

Spark 内部正在执行映射缩减来检索数据(来自不同的数据集)。

这是真的 ?

如果我使用 Spark Mlib 来使用机器学习,我总是听说机器学习与 MapReduce 不兼容,因为它需要很多交互,而 MapReduce 使用批处理。

在Spark Mlib中,Spark内部也使用Map reduce吗?

mapreduce apache-spark rdd apache-spark-sql

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

Mappers,Reducers,FIlters

我知道map/reduce alghoritm及其用途.它使用的是名为Mappers和Reducers的函数,但我也发现人们使用的是Filters.

过滤器与Mappers相同还是有一些显着差异?

mapreduce filter mappers reducers

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

使用map()获取Python中字符串中存在列表元素的次数

我试图获取列表中每个项目在Python中的字符串中的次数:

paragraph = "I eat bananas and a banana"

def tester(x): return len(re.findall(x,paragraph))

map(tester, ['banana', 'loganberry', 'passion fruit'])
Run Code Online (Sandbox Code Playgroud)

返回[2,0,0]

然而,我想要做的是扩展它,以便我可以将段落值提供给map()函数.现在,tester()函数有段硬编码.有没有人有办法做到这一点(也许是一个n长度的段落值列表)?还有其他想法吗?

请记住,每个数组值在将来的某个时刻都会有权重 - 因此需要将值保留在列表中而不是将它们全部加在一起.

更新:段落通常为20K,列表通常有200多个成员.我的想法是地图并行运行 - 因此它比任何串行方法都更有效率.

python regex mapreduce

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

map()和reduce()应该返回相同类型的键/值对吗?

在编写MapReduce作业(特别是相关的Hadoop)时,必须定义一个map()和一个reduce()函数,两者都产生一系列键/值对.应用程序可以自由定义键和值的数据类型.

在单词计数的规范示例中,两个函数都产生类型对,(string, int)其中键是单词,值是出现次数.这里 - 以及我见过的所有其他例子 - 输出的键和值类型在两个函数之间是一致的.

必须/应的键/值对的类型通过产生map()reduce()是MapReduce的任何应用程序中相同的?如果是的话:为什么?

hadoop mapreduce

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

MapReduce(二级)排序/过滤 - 如何?

我有一个聊天室webapp的不同"区域"的时间戳值(并发用户)的日志文件,格式为"Timestamp; Zone; Value".对于每个区域,每天每分钟存在一个值.

对于每个区域,我想列出每天的最大值,按此最大值排序desc

所以,一个输入文件

#timestamp; zone; value
2011-01-01 00:00:00; 1; 10
2011-01-01 00:00:00; 2; 22
2011-01-01 00:01:00; 1; 11
2011-01-01 00:01:00; 2; 21

2011-01-02 00:00:00; 1; 12
2011-01-02 00:00:00; 2; 20
Run Code Online (Sandbox Code Playgroud)

应为区域1生产:

2011-01-02    12
2011-01-01    11
Run Code Online (Sandbox Code Playgroud)

对于第2区:

2011-01-01    22
2011-01-02    20
Run Code Online (Sandbox Code Playgroud)

我该如何处理?恕我直言,我需要一个以上的M/R步骤.

到目前为止我实施的是:

  • 收集文本键"YYYY-MM-DD/Zone"和IntWritable值"value"的映射器,以及
  • 减速器,用于标识每个键的最大值(即每个区域每天).

这会产生一个类似的文件

2011-01-01/1    11
2011-01-01/2    22
2011-01-02/1    12
2011-01-02/2    20
Run Code Online (Sandbox Code Playgroud)

这是第二次M/R步骤的输入吗?如果是这样,我会把什么作为关键和价值?

我已经研究过"Hadoop - The Definitive Guide"中的"Secondary Sort"示例,但我不确定是否以及如何在此处应用它.

是否可以将M/R分成几个输出文件(每个区域一个)?

更新 在考虑之后,我会尝试这样做:

  • 使密钥成为zone-id和value的组合(使用IntPair?)
  • 编写自定义KeyComparator和GroupComparator

java sorting hadoop mapreduce

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

在我的情况下,Hadoop会给我更多的好处吗?

我正在使用Clojure每小时提取10个XML文件,每个文件大约10 MB.此脚本在服务器计算机上运行.
XML文件现在被解析并存储到RDBMS中(所有这些都是使用本机Clojure代码完成的).

考虑到我的情况,如果我使用Hadoop Map/Reduce解析XML文件,我会获得更多好处吗?还是会有点矫枉过正?

xml hadoop jvm mapreduce clojure

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

使用Map和Reduce进行分组

我有一些文件的"状态"字段为"绿色","红色","琥珀色".

我确信可以使用MapReduce来生成包含三个键(每个状态一个)的分组响应,每个键的值包含具有该键的所有文档的数组.但是,我正在努力研究如何使用re(reduce)函数.

地图功能:

function(doc) {
  emit(doc.status, doc);
}
Run Code Online (Sandbox Code Playgroud)

减少功能:???

couchdb mapreduce

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

如何在Hadoop中共享全局序列号生成器?

现在我使用Hadoop处理最终将加载到同一个表中的数据.我需要一个共享的序列号生成器来为每一行生成id.现在我使用以下方法生成唯一编号:

1)在HDFS中创建一个文本文件,例如test.seq,用于保存当前的序列号.

2)我使用锁定文件".lock"来控制并发.假设我们有两个并行处理数据的任务.如果task1想要获取该号码,它将检查锁定文件是否存在.如果是,则表示task2正在从test.seq访问该号码,然后task1必须等待.当task2获取了该号码时,它会在返回时通过增加1来覆盖旧号码,并删除锁定文件".lock".当task1看到.lock消失时,task1将首先创建一个".lock"文件,然后以相同的方式获取序列号.

但是,我不确定这种方法是否切实可行.因为我将.lock和test.seq文件保存在HDFS中,即使任务1更改了test.seq的内容,它也可能无法立即被task2识别.当其他任务通过namenode获取有关HDFS中数据的信息时.因此,datanode将首先通知对namenode的更改,然后通知其他任务更改.这是对的吗?

另一个想法是创建在Master上运行的torjan程序.所以,任务获取顺序号是通过RPC Torjan程序.但是如何在主程序上运行Torjan程序?

有人可以给我一些建议吗?谢谢!

java rpc hadoop mapreduce

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

如何在EC2上运行mapreduce作业时获取文件名?

我正在学习弹性mapreduce,并开始使用Amazon Tutorial Section中提供的Word Splitter示例(代码如下所示).该示例为所提供的所有输入文档中的所有单词生成字数.

但是我希望通过文件名获得Word Counts的输出,即仅在一个特定文档中的单词计数.由于字数的python代码从stdin获取输入,我如何判断哪个输入行来自哪个文档?

谢谢.

#!/usr/bin/python

import sys
import re

def main(argv):
  line = sys.stdin.readline()
  pattern = re.compile("[a-zA-Z][a-zA-Z0-9]*")
  try:
    while line:
      for word in  pattern.findall(line):
        print  "LongValueSum:" + word.lower() + "\t" + "1"
      line =  sys.stdin.readline()
  except "end of file":
    return None
if __name__ == "__main__":
  main(sys.argv)
Run Code Online (Sandbox Code Playgroud)

python mapreduce amazon-ec2 amazon-emr

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

应该使用hadoop将spilled记录总是等于mapinuce中的mapinput记录或mapoutput记录?

我正在使用hadoop中的mapreduce处理矩阵乘法示例.我想问一下溢出的记录是否总是等于mapinput和mapoutput记录.我有与mapinput和mapoutput记录不同的溢出记录

这是我得到的其中一个测试的输出:

Three by three test
   IB = 1
   KB = 2
   JB = 1
11/12/14 13:16:22 INFO input.FileInputFormat: Total input paths to process : 2
11/12/14 13:16:22 INFO mapred.JobClient: Running job: job_201112141153_0003
11/12/14 13:16:23 INFO mapred.JobClient:  map 0% reduce 0%
11/12/14 13:16:32 INFO mapred.JobClient:  map 100% reduce 0%
11/12/14 13:16:44 INFO mapred.JobClient:  map 100% reduce 100%
11/12/14 13:16:46 INFO mapred.JobClient: Job complete: job_201112141153_0003
11/12/14 13:16:46 INFO mapred.JobClient: Counters: 17
11/12/14 13:16:46 INFO mapred.JobClient:   Job Counters
11/12/14 13:16:46 INFO mapred.JobClient: …
Run Code Online (Sandbox Code Playgroud)

hadoop mapreduce

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