Hadoop:2.4.0 Spark:1.4.0 Ubuntu 14.0 1、首先启动Hadoop的HDFS系统。     HADOOP_HOME/sbin/start-dfs.sh 2、在Linux中生成一个文件test.txt,保存在/home/testjars/目录下 3、通过hadoop fs -put命令上传     hadoop fs -put /home/testjars/test.txt 4、在文件系统中查看:

记住路径:hdfs://localhost:9000/user/root/test.txt 端口好在hadoop安装时有配置,上传命令中若不指定上传文件夹,默认存入/user/root文件夹下 5、编写Spark的Java版WordCount程序 需要导入的jar包在SPARK_HOME/assembly/target/scala-2.10下 spark-assembly-1.4.0-hadoop2.4.0.jar如下图所示:

该jar包中包含了spark的所有依赖包,大小为132.3M 在eclipse中部分展开图如下:

6、jar包导入完成后,便可编写Java程序: import org.apache.spark.SparkConf;

import org.apache.spark.api.java.JavaPairRDD;

import org.apache.spark.api.java.JavaRDD;

import org.apache.spark.api.java.JavaSparkContext;

import org.apache.spark.api.java.function.FlatMapFunction;

import org.apache.spark.api.java.function.Function2;

import org.apache.spark.api.java.function.PairFunction;

import scala.Tuple2;

import java.util.Arrays;

import java.util.List;

import java.util.regex.Pattern;

public final class JavaWordCount {

private static final Pattern SPACE = Pattern.compile(" ");

public static void main(String[] args) throws Exception {

if (args.length < 1) {

System.err.println("Usage: JavaWordCount ");

System.exit(1);

}

//创建SparkConf,包含application的相关信息

SparkConf sparkConf = new SparkConf().setAppName("JavaWordCount");

//创建一个JavaSparkContext对象

JavaSparkContext ctx = new JavaSparkContext(sparkConf);

//textFile()方法可将本地文件或HDFS文件转换成RDD,读取本地文件需要各节点上都存在,或者通过网络共享该文件

//读取一行

JavaRDD lines = ctx.textFile(args[0], 1);

//flatMap与map的区别是,对每个输入,flatMap会生成一个或多个的输出,而map只是生成单一的输出

//用空格分割各个单词,输入一行,输出多个对象,所以用flatMap

JavaRDD words = lines.flatMap(new FlatMapFunction() {

@Override

public Iterable call(String s) {

return Arrays.asList(SPACE.split(s));

}

});

//对每个单词生成key-value对,PairFunction

//表示输入类型为T,生成的key-value对中的key类型为k,value类型为v,对本例,T=String, K=String, V=Integer(计数)

//重写scala的Tupple2方法

JavaPairRDD ones = words.mapToPair(new PairFunction() {

@Override

//scala.Tuple2 call(T t)

//Tuple2为scala中的一个对象,call方法的输入参数为T,即输入一个单词s,新的Tuple2对象的key为这个单词,计数为1

public Tuple2 call(String s) {

return new Tuple2(s, 1);

}

});

//调用reduceByKey方法,按key值进行reduce

//调用Function2对象,Function2

//输入两个参数,T1,T2,返回R

//若ones有, ,会根据"one"将相同的pair单词个数进行统计,输入为Integer,输出也为Integer

//输出

JavaPairRDD counts = ones.reduceByKey(new Function2() {

@Override

public Integer call(Integer i1, Integer i2) {

return i1 + i2;

}

});

//将结果保存到HDFS中

counts.saveAsTextFile(args[1]);

//collect返回一个包含RDD内所有元素的Array

List> output = counts.collect();

for (Tuple2, ?> tuple : output) {

System.out.println(tuple._1() + ": " + tuple._2());

}

ctx.stop();

}

} 7、将该java程序导出为jar文件,保存在/home/testjars文件夹下 8、启动spark,在SPARK_HOME/sbin文件夹下     ./start-all.sh    浏览器输入:localhost:8080

记住红色方框中的内容。 9、使用spark-submit命令上传任务 spark-submit命令更多参数可使用spark-submit --help进行查看 本次任务使用的命令如下: spark-submit --master spark://chenkm-Lenovo:7077 --name JavaWordCount --class JavaWordCount --executor-memory 1G --total-executor-cores 2 /home/testjars/JavaWordCount.jar hdfs://localhost:9000/user/root/test.txt

10、运行结果如下:

在HDFS中保存:

同时在localhost:8080页面中可以看到

java spark读写hdfs文件,Spark1.4从HDFS读取文件运行Java语言WordCounts相关推荐

  1. java线程读写互相影响_求助。多线程读取文件相互影响

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 for(.......) { new Thread(new Runnable(){ @Override public void run() { //读取文 ...

  2. java读取文件的方法是_Java读取文件方法大全

    Java读取文件方法大全 2011/11/25 9:18:42  tohsj0806  http://tohsj0806.iteye.com  我要评论(0) 摘要:文章来源:http://www.c ...

  3. HDFS每日一练2 API读取文件

    HDFS每日一练2 API读取文件 题目 在右侧代码编辑区和命令行中,编写代码与脚本实现如下功能: 在/develop/input/目录下创建hello.txt文件,并输入如下数据: 迢迢牵牛星,皎皎 ...

  4. HDFS每日一练1 API读取文件

    HDFS每日一练1 API读取文件 更多整理都在我的github上:Auraros欢迎大家. 题目 在右侧代码编辑区中编写代码实现如下功能: 使用FSDataInputStream获取HDFS的/us ...

  5. java 读取1m文件_java的FileInputStream类读取文件

    package net.csdn.InputStream; import java.io.File; import java.io.FileInputStream; import java.io.Fi ...

  6. php文件读取文件内容,PHP文件系统函数-读取文件内容几种方式

    介绍几种php获取文件内容的方式 介绍读取文件的方式之前,我们先看一下打开文件资源和关闭资源 名字资源绑定到一个流 - fopen 关闭一个已打开的文件指针 - fclose $handle1 = f ...

  7. php 读取文件自身内容,与读取文件输出内容

    一,读取文件 先解释一下,什么是读取文件本身,什么叫读取文件输入内容.举个例子test.php里面的内容<?php echo "test"; ?> 1,读取文件本身就是 ...

  8. php 视频文件怎么打开,PHP怎么读取文件内容?(图文+视频)

    本篇文章主要给大家介绍PHP读取文件内容的两种操作方法. 在之前的文章[PHP怎么将数据写入指定文件中?]中已经为大家讲解了PHP写入文件的具体方法,其实PHP文件写入和读取的操作方法是类似的,大家有 ...

  9. c语言读取文件函数,C语言文件操作详细分析:读取文件(fread函数使用)

    C语言文件操作详细分析:读取文件(fread函数使用) 这里详细介绍了C语言读取文件的函数fread的使用说明,参照了MSDN的说明,同时加入自己的经验让大家学的更加明白. C语言读取文件函数frea ...

最新文章

  1. 生活总是在推着你一步一步往前走
  2. SQL-Oracle游标
  3. 学习笔记Kafka(三)—— Kafka安装配置(2)—— Kafka单代理及常用操作
  4. OpenCV HoG描述符的实例(附完整代码)
  5. 并发200_一种单机支持 JavaWeb 容器万级并发的设想
  6. dotnet 获得存储过程返回值和输出参数有什么不同 @@IDENTITY SCOPE_IDENTITY()
  7. Javascript命名禁区有哪些
  8. 华为手机动态修改手机型号参数
  9. 刚刚!2022年ABC中国大学排行榜发布
  10. 企业数字化信息化运营管理规划方案
  11. 九月十月百度,迅雷,华为,阿里巴巴笔试面试六十题(第411~470题)
  12. 视频剪辑制作教学:分享十种剪辑技巧,打好基础很重要
  13. 巨象指纹浏览器可以帮助用户做些什么?
  14. T83310 【音乐会】二重变革
  15. 车架号/VIN码识别——图像处理工具
  16. 定位python内存泄漏问题
  17. title属性 给元素增加提示 title属性选择器
  18. 基于阿里云生态构建网聚宝业务监控系统
  19. Android各种屏幕分辨率(VGA、HVGA、QVGA、WQVGA、WVGA、FWVGA) 详解
  20. Android 9的新特性 eSIM LPA

热门文章

  1. Webpack:代码分割
  2. SSO的几种跨域方案
  3. css3中transition和display的坑
  4. IE和火狐读取XML方法比较
  5. 使用Python+md5删除本地重复(同一张不重名)的照片
  6. OsharpNS轻量级.net core快速开发框架简明入门教程-基于Osharp实现自己的业务功能...
  7. 机器学习之决策树_CART算法
  8. 排球计分程序重构(五上篇)
  9. 图片上传插件WebUploader的坑
  10. HDU 1117 免费馅饼 二维动态规划