Python开发MapReduce

By admin in bet体育在线网址手机版 on 2018年10月23日

安装

$ pip install mrjob

  观点3:

网上交流

QQ群 个人微信
QQ群
添加我的微信,我邀请您加入微信群

  每当自己举行相同笔画交易时,我究竟会提心吊胆,因为我清楚干这等同执,成功来得快,去得为抢,每次被打击,总是在自骄傲的时候。任何事物毁坏的速多甚让当年修该所消费之工夫,有些东西要费十年日才会建起来,然而一上不怕足以以那个完全损毁。因此,无论什么时候,我还见面严的自约束。

用mrjob写wordcount

代码如下:

$ cat word_count.py
#!/usr/bin/env python
# encoding: utf-8
from mrjob.job import MRJob


class MRWordCount(MRJob):

    def mapper(self, _, line):
        for word in line.split():
            yield(word, 1)

    def reducer(self, word, counts):
        yield(word, sum(counts))


if __name__ == '__main__':
    MRWordCount.run()s

本机运行:

$ python word_count.py data.txt

Hadoop上运行:

$ python word_count.py -r hadoop hdfs:///user/wm/input/data.txt

mrjob runner 可选值:

  • -r inline: (Default) Run in a single Python process
  • -r local: Run locally in a few subprocesses simulating some Hadoop
    features
  • -r hadoop: Run on a Hadoop cluster
  • -r emr: Run on Amazon Elastic Map Reduce (EMR)

       
具有攻击性的操作方法。1984年9月,琼斯为150万首位美元创立了都德期货基金,到了1988年10月,该资产已成长到3亿3000万美元。他所有更的秉性,在社交场合,相当随和,是相同各平易近人,谦谦有礼的乡绅;在操盘时,下达命令仿佛是同一位凶悍残暴之主管。

MapReduce

MapReduce
是一律种编程模型,受函数式编程启发。主要是因为三有组成:map、shuffle and
sort、reduce。

Hadoop
streaming是Hadoop自带的家伙,它同意通过另外语言编写MapReduce任务。

  以自身一次性的难为了和睦70%的财力时,我就决定使学会自我约束与成本管理。在操作的时刻,我会尽量的松情绪,假如有部位对自身不利,我哪怕出台,对本身好,我不怕持长。我现在之思是何许压缩亏损,而未是什么多得利。因此,当您操盘情况不佳时,减量经营或已经营,当操盘进入梦境时,增量经营,千万不要当您无法控制的事态下,贸然进场交易。

测试

运用hadoop mapreduce example 测试,确保搭建之条件健康干活:

$ hdfs dfs -mkdir -p /user/$USER/input
$ hdfs dfs -put $HADOOP_HOME/libexec/etc/hadoop /user/$USER/input
$ hadoop jar $HADOOP_HOME/libexec/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.0.jar grep input output 'dfs[a-z.]+'

用Python写mapper、reducer来测试:

mapper.py

#!/usr/bin/env python
# encoding: utf-8
import sys


for line in sys.stdin:
  words = line.split()
  for word in words:
      print('{}\t{}'.format(word.strip(), 1))

reducer.py

#!/usr/bin/env python
# encoding: utf-8
import sys


curr_word = None
curr_count = 0

for line in sys.stdin:
  word, count = line.split('\t')
  count = int(count)

  if word == curr_word:
      curr_count += count
  else:
      if curr_word:
          print('{}\t{}'.format(curr_word, curr_count))
      curr_word = word
      curr_count = count

if curr_word == word:
  print('{}\t{}'.format(curr_word, curr_count))

执行Python写的mapper、reducer:

$ hadoop jar $HADOOP_HOME/libexec/share/hadoop/tools/lib/hadoop-streaming-2.8.0.jar -files mapper.py,reducer.py -mapper mapper.py -reducer reducer.py -input input -output output

Hadoop streaming的一声令下执行参数如下:

  • -files: A command-separated list of les to be copied to the
    MapReduce cluster
  • -mapper: The command to be run as the mapper
  • -reducer: The command to be run as the reducer
  • -input: The DFS input path for the Map step
  • -output: The DFS output directory for the Reduce step

  观点2:

简介

Hadoop 是 Apache
基金会主动开发之分布式基础架构。对开发人员主要关心HDFS、MapReduce就哼。

HDFS是一个分布式文件系统,由NameNode和DataNode配合到位工作;MapReduce是同栽编程模型,Map是把输入(Input)
分解成中的Key/Value对,Reduce把Key/Value合成最终输出(Output)。MapReduce可以打HDFS中读取数据,并以术后以数据写入HDFS。

正文主要介绍如何用Python开发MapReduce任务。

  我不过老之败笔就是是过度乐观。因此自今天操作时于没有感念过每笔交易能够啊我赚钱多少钱,而是随时想着可能遭受的亏损,时刻放在心上维护好已有的物。

mrjob

  他认为,交易极根本之饶是我约束与成本管理。

HDFS

得经hdfs命令访问HDFSbet体育在线网址手机版文件系统:

$ hdfs dfs -ls /
$ hdfs dfs -get /var/log/hadoop.log /tmp/  # 将HDFS的/var/log/hadoop.log拷贝到本机/tmp/目录
$ hdfs dfs -put /tmp/a /user/hadoop/  # 将本机/tmp/a文件拷贝到HDFS的/user/hadoop/目录下
$ hdfs dfs # 查看完整命令

Python Client:

  • hdfs3
  • snakebite
  • Apache Arrow
  • Native Hadoop file system (HDFS) connectivity in
    Python

  观点1:

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2018 mobile.365-838.com 版权所有