Scala开发Hadoop示例
- import org.apache.hadoop.conf.{Configuration, Configured};
- import org.apache.hadoop.util.{ToolRunner, Tool};
- import org.apache.hadoop.fs.Path;
- import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
- import org.apache.hadoop.io.{LongWritable, Text, IntWritable};
- import org.apache.hadoop.mapreduce.{Reducer, Mapper, Job};
- import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
- /**
- * Created with IntelliJ IDEA.
- * User: riley
- * Date: 8/26/13
- * Time: 1:58 PM
- */
- object WordCount extends Configured with Tool
- {
- class Map extends Mapper[LongWritable, Text, Text, IntWritable]
- {
- private val one: IntWritable = new IntWritable(1);
- private var word: Text;
- override def map(key: LongWritable, rowLine: Text, context: Mapper[LongWritable, Text, Text, IntWritable]#Context)
- {
- val line = rowLine.toString();
- if (line.isEmpty) return;
- val tokens: Array[String] = line.split(" ");
- for (item: String <- tokens) {
- word.set(item);
- context.write(word, one);
- }
- }
- }
- class Reduce extends Reducer[Text, IntWritable, Text, IntWritable]
- {
- private var count: IntWritable = new IntWritable();
- override def reduce(key: Text, values: Iterable[IntWritable], context: Reducer[Text, IntWritable, Text, IntWritable]#Context)
- {
- var sum: Int = 0;
- for (i: IntWritable <- values) sum = sum + i.get();
- count.set(sum);
- context.write(key, count);
- }
- }
- def run(args: Array[String]) =
- {
- val conf = super.getConf();
- val job = new Job(conf, "WordCount");
- job.setJarByClass(this.getClass);
- job.setOutputKeyClass(classOf[Text]);
- job.setOutputValueClass(classOf[IntWritable]);
- job.setMapperClass(classOf[Map]);
- job.setReducerClass(classOf[Reduce]);
- job.setCombinerClass(classOf[Reduce]);
- FileInputFormat.addInputPath(job, new Path(args(0)));
- FileOutputFormat.setOutputPath(job, new Path(args(1)));
- val status = job.waitForCompletion(true);
- if (status) 0 else 1;
- }
- def main(args: Array[String])
- {
- val conf: Configuration = new Configuration();
- System.exit(ToolRunner.run(conf, this, args));
- }
- }
Scala开发Hadoop示例的更多相关文章
- 使用scala开发spark入门总结
使用scala开发spark入门总结 一.spark简单介绍 关于spark的介绍网上有很多,可以自行百度和google,这里只做简单介绍.推荐简单介绍连接:http://blog.jobbole.c ...
- 通过IDEA搭建scala开发环境开发spark应用程序
一.idea社区版安装scala插件 因为idea默认不支持scala开发环境,所以当需要使用idea搭建scala开发环境时,首先需要安装scala插件,具体安装办法如下. 1.打开idea,点击c ...
- IDEA搭建scala开发环境开发spark应用程序
通过IDEA搭建scala开发环境开发spark应用程序 一.idea社区版安装scala插件 因为idea默认不支持scala开发环境,所以当需要使用idea搭建scala开发环境时,首先需要安 ...
- Scala系统学习(二):Scala开发环境安装配置
Scala可以安装在任何基于UNIX/Linux或基于Windows的系统上.在您的机器上开始安装Scala之前,必须在计算机上安装Java 1.8或更高版本. 下面请按照以下步骤安装Scala. 步 ...
- 转】[1.0.2] 详解基于maven管理-scala开发的spark项目开发环境的搭建与测试
场景 好的,假设项目数据调研与需求分析已接近尾声,马上进入Coding阶段了,辣么在Coding之前需要干马呢?是的,“统一开发工具.开发环境的搭建与本地测试.测试环境的搭建与测试” - 本文详细记录 ...
- IDEA 支持scala开发
IDEA支持scala开发,需要安装scala插件,并且pom.xml也需要添加对应依赖. 1. 安装scala插件 下载地址:https://plugins.jetbrains.com/plugin ...
- Java开发Hbase示例
Java开发Hbase示例 使用Hbase操作数据 package com.sunteng.clickidc.test; import java.io.IOException; import java ...
- Linux下使用Eclipse开发Hadoop应用程序
在前面一篇文章中介绍了如果在完全分布式的环境下搭建Hadoop0.20.2,现在就再利用这个环境完成开发. 首先用hadoop这个用户登录linux系统(hadoop用户在前面一篇文章中创建的),然后 ...
- Spark集群 + Akka + Kafka + Scala 开发(3) : 开发一个Akka + Spark的应用
前言 在Spark集群 + Akka + Kafka + Scala 开发(1) : 配置开发环境中,我们已经部署好了一个Spark的开发环境. 在Spark集群 + Akka + Kafka + S ...
随机推荐
- .net SMTP 发送邮件
using System.Net.Mail; public static bool SendMail(string messTo,string messBody) { MailMessage mess ...
- bzoj4806 炮
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4806 这种题应该想状压的. 于是发现压不下,结合每一行每一列最多放两个炮想到记一下放炮的列就 ...
- python从网络时间服务器获取并打印当前时间以及pip安装ntplib的一次体验
首先需要安装ntplib,科一通过pip安装. ubuntu下科一通过如下指令安装pip: $ sudo apt-get install python-pip 使用如下指令安装ntplib: $ su ...
- 老齐python-基础9(函数)
继续上篇 函数 多参数: >>> def foo(x,y,z,*args,**kargs): ... print(x) ... print(y) ... print(z) ... p ...
- composer包php-amqplib
php-amqplib官方文档 url:http://www.rabbitmq.com/tutorials/tutorial-one-php.html #测试demo: url: http://**. ...
- socket 阻塞,同步、I/O模型
1. 概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式: 同步: 所谓同步,就是在发出一个功能调用时, ...
- python set集合 以及 深浅拷贝
set集合 特点: 无序, 不重复, 元素必须可哈希(不可变) 作用: 去重复 本身是可变的数据类型. 有增删改查操作. frozenset()冻结的集合. 不可变的. 可hash的 深浅拷贝() 1 ...
- POJ 2991 Crane(线段树)
Crane Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 7687 Accepted: 2075 Special J ...
- Centos6-7安装Python3.5以及SSL的编译安装,识别https
Python3中无法导入ssl模块的解决办法 如果你发现在python3脚本运行过程中发现涉及到ssl模块都无法运行的情况下.那么需要进行如下步骤 第一步: yum install openssl o ...
- nginx web服务优化
nginx基本安全优化 1. 调整参数隐藏nginx软件版本号信息 软件的漏洞和版本有关,我们应尽量隐藏或消除web服务对访问用户显示各类敏感信息(例如web软件名称及版本号等信息),这样恶意的用户就 ...