python streaming 实现某个字段排序

Python按字段名分组、排名、排序,根据条件筛选数据 将Excel数据导入Python中进行批量处理 本文主要包含对数据的分组、排序、以及根据特定条件进行数据的筛选 阅读详情

一,hadoop streaming默认情况

1,在hadoop streaming的默认情况下,是以\t作为分隔符的,标准输入时,每行的第一个\t之前的内容作为key,第一个\t之后的内容作为value。注意,如果一个\t字符都没有,那么整行作为key。

2,streaming的一些参数如下:

      -D stream.map.output.field.separator :设置map输出中key和value的分隔符 
      -D stream.num.map.output.key.fields :  设置map程序分隔符的位置,该位置之前的部分作为key,之后的部分作为value 
      -D map.output.key.field.separator : 设置map输出中key内部的分割符
   -D num.key.fields.for.partition : 指定分桶时,key按照分隔符切割后,其中用于分桶key所占的列数(配合-partitioner org.apache.hadoop.mapred.lib.KeyFieldBasedPartitioner 使用)
      -D stream.reduce.output.field.separator:设置reduce输出中key和value的分隔符 

      -D stream.num.reduce.output.key.fields:设置reduce程序分隔符的位置

二,python streaming 实现某个字段的排序

1, 输入数据: cat data.txt  (中间是tab键)

11         2
11 3
11 4 1
11 1

11 12 22


2,streaming程序如下:

vim sorted.sh

#!/bin/bash

export CURRENT=/home/chunhe.liao/hadoop_streaming/sort

/usr/local/hadoop-2.6.3/bin/hadoop jar /usr/local/hadoop-2.6.3/share/hadoop/tools/lib/hadoop-streaming-2.6.3.jar \
-D stream.map.output.field.separator='\t' \
-D stream.num.map.output.key.fields=3 \
-D mapreduce.job.output.key.comparator.class=org.apache.hadoop.mapreduce.lib.partition.KeyFieldBasedComparator \
-D mapreduce.partition.keycomparator.options=-k3,3nr \     # 按照第三列逆序排列,可以根据想要的第几段来选择。
-input "/user/test/inputdata/datas3/data.txt" \
-output "/user/test/streaming/sorted_20180711" \
-mapper "python mapper.py" \
-reducer "python reducer.py" \
-file "$CURRENT/mapper.py" \
-file "$CURRENT/reducer.py"

(2) mapper.py

# -*- coding: utf-8 -*-
import sys

for line in sys.stdin:
	line = line.strip()
	print('{0}'.format(line))

(3) reducer.py

# -*- coding: utf-8 -*-
import sys

for line in sys.stdin:
	line = line.strip()
	print("{0}".format(line))

运行命令:

bash sorted.sh

运行结果:hdfs dfs -cat /user/test/streaming/sorted_20180711/part-00000

11 12 22
11 3
11 2
11 4 1
11 1


Python Hadoop Mapreduce 实现Hadoop Streaming分组和二次排序 需求:公司给到一份全国各门店销售数据,要求:1.按门店市场分类,将同一市场的门店放到一起;2.将各家门店按销售额从大到小,再按利润从大到小排列 一 需求一:按市场对门店进行分组 分组(partition) Hadoop streaming框架默认情况下会以’/t’作为分隔符,将每行第一个’/t’之前的部分作为key,其余内容作为value, 如果没有’/t’分隔符,则整行作为key;这个key/v... 阅读详情

相关推荐

hadoop streaming参数配置

Streaming简介Streamining框架允许任何程序语言实现的程序在Hadoop MapReduce中使用,方便已有程序向Hadoop平台移植。因此可以说对于hadoop的扩展性意义重大。Streamining的原理是用Java实现一个包装用户程序的MapReduce程序,该程序负责调用MapReduce Java 接口获取key/value对输入,创建一个新的进程启动包装的用户程序,将数据

loveblair1990的博客 9603

python 对象根据某个字段排序

python相关学习资料:美国禁用中国大学MATLAB快四年,国产替代完成了吗?一张图生成指定动作的动态视频,Magic Animate本地部署GitLabCI/CD-pending的原因Python 对象根据某个字段排序 作为一名经验丰富的开发者,我很高兴能帮助你学习如何使用Python对对象进行排序。在Pytho...

weixin_30475939的博客 216

10.第十节-使用stream流sorted实现排序.mp4

Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用Stream API 对集合数据进行操作,就类似于使用 SQL 执行的数据库查询。也可以使用 Stream API 来并行执行操作。简而言之,Stream API 提供了一种高效且易于使用的处理数据的方式。

学不会的python之通过某几个关键字排序、分组一个字典列表(列表中嵌套字典)

groupby() 函数扫描整个序列并且查找连续相同值 (或者根据指定 key 函数返回值。,然后在使用itertools.groupby() 函数进行分。相同) 的元素序列。在每次迭代的时候,它会返回。将上述的字典列表进行分组,

但行好事,莫问前程 1825

为什么RingMo能成为遥感领域的首个生成式自监督基础模型?

RingMo作为遥感领域首个生成式自监督基础模型,通过创新的图像掩码建模技术解决了传统方法在遥感图像处理中的挑战。该模型利用两百万张多元数据集进行预训练,在小目标检测、场景分类等任务上表现卓越,显著提升了性能指标。RingMo的技术突破为遥感图像解译提供了高效解决方案,降低了标注成本并增强了模型泛化能力。

ll5678的博客 691

AMD锐龙笔记本隐藏玩法:分核降压+ PBO2超频全攻略(以5900HX/6900HX为例)

本文详细解析了AMD锐龙笔记本(以5900HX/6900HX为例)的分核降压与PBO2超频技术,帮助用户释放处理器隐藏性能。通过BIOS设置、Curve Optimizer参数调整及稳定性测试,实现性能提升与温度控制的完美平衡,适合硬件爱好者进阶调校。

weixin_30617737的博客 341

python字典按指定字段排序

可以使用内置函数 sorted() 对字典进行排序。 要对字典按照某个特定的字段进行排序,可以在调用 sorted() 函数时传递一个 key 参数,其中指定了用于排序的字段。例如,要按照字典的值(value)进行排序,可以这样写: sorted(dictionary.items(), key=lambda x: x[1]) ...

weixin_35751194的博客 439

gtsam 学习十(ISAM2 理论)

翻译自:iSAM2: Incremental Smoothing and Mapping Using the Bayes Tree 摘要 提出了一种新型的贝斯树处理稀疏矩阵,在转化为因子图,可以更好的求解平方根信息和映射问题。 文中提出了三个概念 使用概率密度项进行矩阵分解 介绍如何将矩阵分解转换为贝叶斯数和条件概率密度 基于贝叶斯树提供了一种新的系数非线性优化:ISAM2(进行重新排序和重新线性化,避免了批量更新) 问题描述 文章聚焦与如何用增量实时解决非线性问题, 利用增量即新的测量值实时更新估

weixin_37781153的博客 8407

Python中按列表中的字典某字段对列表进行排序

列表中有多个字典,按字典中某个字段进行排序。

墨痕诉清风的博客 798

ENSP实验一:防火墙基础配置

配置client(内网)、FTP Server(外网)的IP地址。进入防火墙,输入密码:默认为admin@123。

Carohuan的博客 1万+

STM32 Nucleo-144开发板开箱bring-up

最近做项目,用到STM32F446ZET6这款MCU,为了赶进度,前期软件需要提前开发,于是在某宝买了对应主控的官方开发板,为了避免遗忘,后面能翻出来回忆一些细节,就形成了本篇的主要内容,同时也希望能够帮助刚上手的小伙伴少走弯路,如果对你有帮助请点赞、收藏、转发,谢谢!

汽车电子软件领域知识分享 2676

Hadoop-Python实现Hadoop Streaming分组和二次排序

分组(partition) Hadoop streaming框架默认情况下会以’/t’作为分隔符,将每行第一个’/t’之前的部分作为key,其余内容作为value, 如果没有’/t’分隔符,则整行作为key;这个key/tvalue对又作为该map对应的reduce的输入。 -D stream.map.output.field.separator 指定分割key分隔符,默认是/t -D

忧郁王子的专栏 4493

Synthesia技术浅析(四):自然语言处理

Synthesia 的自然语言处理(NLP)模块是其核心技术之一,涵盖了文本转语音(TTS)、情感分析以及多语言支持等多个方面。

m0_75253143的博客 1166

hadoop streaming,排序,分区

一个简单示例: hadoop jar ${hdstreaming} \-D mapreduce.job.queuename=mapreduce.normal \ #Hadoop 2.0一定要指定队列名-D mapreduce.job.name='UserFeature::Predict' \-D stream.num.map.output.key.fields=2 \-D num.key.fi...

weixin_30482181的博客 294

C#串口通信从入门到精通(27)——高速通信下解决数据处理慢的问题(20ms以内)

本文介绍如何在高速通信情况下解决串口接收的数据来不及处理的问题,由高级工程师多年经验总结而成,绝对是串口领域的实战经验!

qq_34059233的博客 6807

基于深度学习的推荐系统设计与实现

基于深度学习的推荐系统设计与实现 作者:禅与计算机程序设计艺术 / Zen and the Art of Computer Programming / TextGenWebUILLM 基于深度学习的推荐系统设计与实现 关键词:深度学习, 推荐系统, 用

AI天才研究院 1078

python hadoop streaming_Hadoop-Streaming实战经验及问题解决方法总结

目录1. Join操作分清join的类型很重要…2. 启动程序中key字段和partition字段的设定…3. 控制hadoop程序内存的方法…4. 对于数字key的排序问题…5. 在mapper中获取map_input_file环境变量的方法…6. 运行过程中记录数据的方法…7. 多次运行Hadoop之是否成功的判断…8. 对stdin读取的 line的预处理…9. P...

weixin_42137723的博客 388

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

使用 Hadoop Streaming 实现批处理分组

本文展示了如何利用 Hadoop Streaming 构建一个基于 JSON 字段的批处理分组系统。相比简单的去重或聚合,这种模式更贴近真实业务场景——它不仅利用了 Hadoop 的分布式分组能力,还通过批处理机制提升了下游系统的交互效率。语言灵活:使用 Python 快速开发,无需 Java;扩展性强:只需修改即可对接不同后端;容错可控:可集成重试、日志、监控等机制。在日志分析、用户行为聚合、ETL 流水线等场景中,这种“分组 + 批处理”模式是一种高效且实用的解决方案。

bill的博客 391

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

使用 Hadoop Streaming 实现数据去重

通过 Hadoop Streaming 与 Python 脚本,我们可以快速构建一个分布式去重系统,无需编写 Java 代码。该方法简单、灵活,适用于各类基于行或字段的去重需求。在实际应用中,可根据数据格式和业务逻辑调整 Mapper 和 Reducer 的逻辑,以满足更复杂的去重策略(如保留最新记录、按时间窗口去重等)。

bill的博客 360

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

python 实现Hadoop的partitioner和二次排序

我们知道,一个典型的Map-Reduce过程包 括:Input->Map->Patition->Reduce->Output。Pation负责把Map任务输出的中间结果 按key分发给不同的Reduce任务进行处理。Hadoop 提供了一个非常实用的partitioner类KeyFieldBasedPartitioner,通过配置相应的参数就可以使用。通过 KeyFieldBasedPartitio

tianbwin2995的专栏 1113

hadoop streaming 使用总结

hadoop client: 客户端可以让用户访问集群,hadoop client 使用手册,通过配置hadoop-site.xml文件,实现访问不同集群,同时该客户端目录的 xx/xx/hadoop/bin/hadoop 是你配置的hadoop命令路径,在streaming命令参数配置时,需要指明该hadoop位置,对于该命令,可以通过alias hadoopdr='xx/xx/hadoop/...

coder_oyang的博客 961

streaming mr

在以前的一篇关于python版MR实例的文章中,只是简单走了一下流程,这次主要是解决上次遗留的key,partition,sort的问题。以进一步理解hadoop streaming,也尝试mapper使用python而reducer使用bash的结合方式 1. 省略本地测试这个环节,可参考以前的那篇文章,HDFS上的测试数据位: [root@hadoop Desktop]# hadoop

韩王-信 1131

使用自定义Partition实现hadoop部分排序

排序在很多业务场景都要用到,今天本文介绍如何借助于自定义Partition类实现hadoop部分排序。本文还是使用java和python实现排序代码。 1、部分排序。 部分排序就是在每个文件中都是有序的,和其他文件没有关系,其实很多业务场景就需要到部分排序,而不需要全局排序。例如,有个水果电商网站,要对每个月的水果的销量进行排序,我们可以把reduce进程之后的文件分成12份,对应1到12月份...

maenlai0086的博客 199

大数据mapreduce全局排序top-N之python实现

a.txt、b.txt文件如下: a.txt 1 hadoop 3 hadoop 5 hadoop 7 hadoop 9 hadoop 11 hadoop 13 hadoop 15 hadoop 17 hadoop 19 hadoop 21 hadoo...

weixin_30270889的博客 435

hadoop streaming两个数据文件实现join合并操作

hadoop做数据处理,大都是对集合进行操作,因此将数据文件与另一个数据文件进行join的操作需求非常常见。 下面将使用一个例子让新入门的朋友掌握编写方法: [hdfs@server1]$ more clean_item_new 100002303,3368 100002865,11991 100003592,7995 100004955,7033 100006838,12630

TURING.DT 5526
上一篇: 在MAC IDEA中出现如下File size exceeds configured limit (2560000). Code insight features not available问题的解决
下一篇: mac 安装tesseract、pytesseract, 实现图片里文字的识别
数据挖掘者
博客等级 码龄15年 73粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值