广告
返回顶部
首页 > 资讯 > 后端开发 > Python >在Hadoop上运行Python脚本
  • 170
分享到

在Hadoop上运行Python脚本

脚本HadoopPython 2023-01-31 08:01:33 170人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

之前已经配置好了hadoop以及Yarn,可那只是第一步。下面还要在上面运行各种程序,这才是最重要的。 ubuntu安装时默认已经安装了python, 可以通过Python –version 查询其版本。 因此我们可以直接运

之前已经配置好了hadoop以及Yarn,可那只是第一步。下面还要在上面运行各种程序,这才是最重要的。

ubuntu安装时默认已经安装了python, 可以通过Python –version 查询其版本。
这里写图片描述
因此我们可以直接运行python的脚本了。

Python mapReduce Code

这里我们要用到 Hadoop Streaming api, 通过STIDN(Standard input)和 STDOUT(Standard output)来向Map代码、Reduce代码传递数据。
Python有sys.stdin可以直接读取数据,sys.stdout来输出数据。

1 . 首先建立mapper.py.

用VIM建立mapper.py, 将文件存在/home/hadoop路径下, 代码如下:

#!/usr/bin/env python

import sys

# input comes from STDIN (standard input)
for line in sys.stdin:
    # remove leading and trailing whitespace
    line = line.strip()
    # split the line into Words
    words = line.split()
    # increase counters
    for word in words:
        # write the results to STDOUT (standard output);
        # what we output here will be the input for the
        # Reduce step, i.e. the input for reducer.py
        #
        # tab-delimited; the trivial word count is 1
        print '%s\t%s' % (word, 1)

注意,保存时存为unix编码的,可以参考另一篇文章:
编码问题

文件保存后,请注意将其权限作出相应修改:

chmod a+x /home/hadoop/mapper.py

2 . 建立reduce.py
用VIM建立reduce.py, 将文件存在/home/hadoop路径下, 代码如下:

#!/usr/bin/env python

from operator import itemgetter
import sys

current_word = None
current_count = 0
word = None

# input comes from STDIN
for line in sys.stdin:
    # remove leading and trailing whitespace
    line = line.strip()

    # parse the input we Got from mapper.py
    word, count = line.split('\t', 1)

    # convert count (currently a string) to int
    try:
        count = int(count)
    except ValueError:
        # count was not a number, so silently
        # ignore/discard this line
        continue

    # this IF-switch only works because Hadoop sorts map output
    # by key (here: word) before it is passed to the reducer
    if current_word == word:
        current_count += count
    else:
        if current_word:
            # write result to STDOUT
            print '%s\t%s' % (current_word, current_count)
        current_count = count
        current_word = word

# do not forget to output the last word if needed!
if current_word == word:
    print '%s\t%s' % (current_word, current_count)

文件保存后,请注意将其权限作出相应修改:

chmod a+x /home/hadoop/reduce.py

首先可以在本机上测试以上代码,这样如果有问题可以及时发现:

~$ echo "foo foo quux labs foo bar quux" | /home/hduser/mapper.py

运行结果如下:
这里写图片描述

再运行以下包含reducer.py的代码:

~$ echo "foo foo quux labs foo bar quux" | /home/hduser/mapper.py | sort -k1,1 | /home/hduser/reducer.py

结果如下:
这里写图片描述

在Hadoop上运行Python代码

准备工作:
下载文本文件:

~$ mkdir tmp/guteberg
cd tmp/guteberg
 wget Http://www.gutenberg.org/files/5000/5000-8.txt
 wget http://www.gutenberg.org/cache/epub/20417/pg20417.txt

然后把这二本书上传到hdfs文件系统上:

$ hdfs dfs -mkdir /user/input # 在hdfs上的该用户目录下创建一个输入文件的文件夹
$ hdfs dfs -put /home/hadoop/tmp/gutenberg/*.txt /user/input # 上传文档到hdfs上的输入文件夹中

寻找你的streaming的jar文件存放地址,注意2.6的版本放到share目录下了,可以进入hadoop安装目录寻找该文件:

$ cd $HADOOP_HOME
$ find ./ -name "*streaming*.jar"

然后就会找到我们的share文件夹中的hadoop-straming*.jar文件:
这里写图片描述

由于这个文件的路径比较长,因此我们可以将它写入到环境变量:

vi ~/.bashrc  # 打开环境变量配置文件
# 在里面写入streaming路径
export STREAM=$HADOOP_HOME/share/hadoop/tools/lib/hadoop-streaming-*.jar

由于通过streaming接口运行的脚本太长了,因此直接建立一个shell名称为run.sh来运行:

hadoop jar $STREAM  \
-files /home/hadoop/mapper.py, /home/hadoop/reducer.py \
-mapper  /home/hadoop/mapper.py \
-reducer  /home/hadoop/reducer.py \
-input /user/input/*.txt \
 -output /user/output

然后”source run.sh”来执行mapreduce。结果就响当当的出来啦。
这里写图片描述

这里写图片描述

用cat来看一下输出结果如下:
这里写图片描述


参考 :
http://www.cnblogs.com/wing1995/p/hadoop.html?https://hadoop.apache.org/docs/r1.2.1/streaming.html
http://hustlijian.GitHub.io/tutorial/2015/06/19/Hadoop%E5%85%A5%E9%97%A8%E4%BD%BF%E7%94%A8.html
http://www.michael-noll.com/tutorials/writing-an-hadoop-mapreduce-program-in-python/

--结束END--

本文标题: 在Hadoop上运行Python脚本

本文链接: https://www.lsjlt.com/news/192536.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 在Hadoop上运行Python脚本
    之前已经配置好了Hadoop以及Yarn,可那只是第一步。下面还要在上面运行各种程序,这才是最重要的。 Ubuntu安装时默认已经安装了Python, 可以通过Python –version 查询其版本。 因此我们可以直接运...
    99+
    2023-01-31
    脚本 Hadoop Python
  • 如何使python脚本运行在daemon
    有一个很好的库可以完成这一功能,可惜因为文档少所以网上例子不太多库名:python-daemon可以通过Pip来安装最简单的使用方式import daemon with daemon.DaemonContext(): print...
    99+
    2023-01-31
    脚本 python daemon
  • 如何在 Linux 命令行中运行 Python 脚本?
    Python 是一种高级编程语言,被广泛应用于数据科学、机器学习、Web 开发等领域。在 Linux 操作系统中,Python 是一个默认安装的解释器,用户可以通过命令行界面(CLI)来运行 Pyth...
    99+
    2023-09-02
    python linux 开发语言
  • PHP如何运行Python脚本
    这篇文章主要介绍PHP如何运行Python脚本,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!注:本次问题产生的环境是建议在windows环境下,利用IIS+PHP去调用Python脚本失败的前提下。如果你的环境与本次...
    99+
    2023-06-14
  • 在cmd下运行Python脚本+如何使用
    希望对于,如何在Windows下,写Python代码,进行Python开发,运行Python脚本的人,看了此文后,懂得了:什么是cmd下面去运行Python脚本;什么是Python的交互式的shell;什么是Python的IDE。看此文之前...
    99+
    2023-01-31
    如何使用 脚本 cmd
  • 如何让 Python 脚本在工作日运行?
    你好,我是征哥,最近用 Python 写了个每日签到答题的脚本,想让它在工作日每天运行,于是我找到了这个三方库-chinesecalendar。chinesecalendar 可以用来判断某年某月某一天是不是工作日/节假日。支持 2004 ...
    99+
    2023-05-14
    Python 语言 脚本
  • pm2执行python脚本 后台运行
    与执行nodejs一样简单、优雅 pm2 start main.py -x --interpreter python ...
    99+
    2023-01-31
    脚本 后台 python
  • 开机自动运行python脚本
    1、新建rc.localtouch /etc/rc.d/rc.localvim /etc/rc.d/rc.local#!/bin/bash#下面是需要执行的脚本2、赋予可执行权限chmod +x /etc/rc.d/rc.local3、编辑...
    99+
    2023-01-31
    脚本 自动运行 python
  • Python中怎么运行my.py脚本
    今天小编给大家分享一下Python中怎么运行my.py脚本的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。在 python 中...
    99+
    2023-06-27
  • 怎么让运行中的python脚本在后台执行
    这篇文章主要介绍“怎么让运行中的python脚本在后台执行”,在日常操作中,相信很多人在怎么让运行中的python脚本在后台执行问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么让运行中的python脚本在后...
    99+
    2023-06-05
  • 运行python脚本更改Windows背景
    在我们开始之前,一定要注意这篇文章只针对Windows用户!对于那些使用Windows的人来说,这是一个有趣的想法。 如果您想使用python更改桌面背景,您会做什么?您可能要去一...
    99+
    2022-11-12
  • 怎么运行Linux中的python脚本
    今天小编给大家分享一下怎么运行Linux中的python脚本的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Linux运行py...
    99+
    2023-06-28
  • Shell脚本如何在Apache服务器上存储和运行?
    Apache服务器是一款被广泛使用的Web服务器软件,而Shell脚本则是一种可以在Unix/Linux操作系统上运行的脚本语言。在Apache服务器上存储和运行Shell脚本可以帮助我们实现自动化运维,提高工作效率。本文将介绍如何在Ap...
    99+
    2023-10-17
    存储 shell apache
  • 如何在Linux中运行JavaScript脚本?
    在Linux系统中,JavaScript脚本可以通过多种方式运行,包括使用Node.js、Rhino、SpiderMonkey等JavaScript解释器。本文将介绍几种在Linux中运行JavaScript脚本的方法。 1. 使用Node...
    99+
    2023-09-10
    javascript shell linux
  • 优化Python脚本在Linux上的执行效率
    标题:优化Python脚本在Linux上的执行效率引言:Python是一种高级动态编程语言,以其简单易学、灵活性和强大的库支持而广泛受到开发者的欢迎。然而,Python在执行效率方面相对较慢,尤其是涉及大量数据处理或计算密集型任务时。本文将...
    99+
    2023-10-22
    优化 执行效率 Python脚本
  • 如何用shell脚本执行hadoop命令
    要使用shell脚本执行Hadoop命令,可以按照以下步骤操作:1. 创建一个新的文本文件,并使用任何文本编辑器打开它(如vi、na...
    99+
    2023-10-11
    hadoop
  • 如何在shell中运行Python脚本并记录日志?
    在现代软件开发中,Python 已经成为了不可或缺的工具。而 shell 脚本也是我们日常工作中经常使用的工具。在一些场景下,我们需要在 shell 脚本中调用 Python 脚本,并且需要记录 Python 脚本的日志。本文将介绍如何在...
    99+
    2023-10-27
    path 日志 shell
  • 如何在shell中运行Python脚本并记录路径?
    在日常的开发工作中,我们常常需要通过Shell脚本来调用Python脚本完成一些任务,但是如果不记录Python脚本的路径,我们就需要手动输入脚本路径,这样就会造成一些不必要的麻烦。那么,如何在Shell中运行Python脚本并记录路径呢...
    99+
    2023-10-27
    path 日志 shell
  • 如何运行javascript脚本
    这期内容当中小编将会给大家带来有关如何运行javascript脚本,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。javascript脚本的运行方法:首先在文本输入js脚本,点击文件的另存为;然后选择文件保...
    99+
    2023-06-14
  • 几个python运维脚本
    这是我以前写过的一个清除备份文件的小程序,本来想用批处理来做,但批处理的语法又复杂有怪异,最终还是拿python写了一个 因为我们的游戏每隔一小时就会自动产生一个备份,这个程序的作用是跳过最新的7*24个备份,删除其他的时间更长的。 ...
    99+
    2023-01-31
    几个 脚本 python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作