java spark读写hdfs文件,Spark1.4从HDFS读取文件运行Java语言WordCounts
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相关推荐
- java线程读写互相影响_求助。多线程读取文件相互影响
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 for(.......) { new Thread(new Runnable(){ @Override public void run() { //读取文 ...
- java读取文件的方法是_Java读取文件方法大全
Java读取文件方法大全 2011/11/25 9:18:42 tohsj0806 http://tohsj0806.iteye.com 我要评论(0) 摘要:文章来源:http://www.c ...
- HDFS每日一练2 API读取文件
HDFS每日一练2 API读取文件 题目 在右侧代码编辑区和命令行中,编写代码与脚本实现如下功能: 在/develop/input/目录下创建hello.txt文件,并输入如下数据: 迢迢牵牛星,皎皎 ...
- HDFS每日一练1 API读取文件
HDFS每日一练1 API读取文件 更多整理都在我的github上:Auraros欢迎大家. 题目 在右侧代码编辑区中编写代码实现如下功能: 使用FSDataInputStream获取HDFS的/us ...
- java 读取1m文件_java的FileInputStream类读取文件
package net.csdn.InputStream; import java.io.File; import java.io.FileInputStream; import java.io.Fi ...
- php文件读取文件内容,PHP文件系统函数-读取文件内容几种方式
介绍几种php获取文件内容的方式 介绍读取文件的方式之前,我们先看一下打开文件资源和关闭资源 名字资源绑定到一个流 - fopen 关闭一个已打开的文件指针 - fclose $handle1 = f ...
- php 读取文件自身内容,与读取文件输出内容
一,读取文件 先解释一下,什么是读取文件本身,什么叫读取文件输入内容.举个例子test.php里面的内容<?php echo "test"; ?> 1,读取文件本身就是 ...
- php 视频文件怎么打开,PHP怎么读取文件内容?(图文+视频)
本篇文章主要给大家介绍PHP读取文件内容的两种操作方法. 在之前的文章[PHP怎么将数据写入指定文件中?]中已经为大家讲解了PHP写入文件的具体方法,其实PHP文件写入和读取的操作方法是类似的,大家有 ...
- c语言读取文件函数,C语言文件操作详细分析:读取文件(fread函数使用)
C语言文件操作详细分析:读取文件(fread函数使用) 这里详细介绍了C语言读取文件的函数fread的使用说明,参照了MSDN的说明,同时加入自己的经验让大家学的更加明白. C语言读取文件函数frea ...
最新文章
- 生活总是在推着你一步一步往前走
- SQL-Oracle游标
- 学习笔记Kafka(三)—— Kafka安装配置(2)—— Kafka单代理及常用操作
- OpenCV HoG描述符的实例(附完整代码)
- 并发200_一种单机支持 JavaWeb 容器万级并发的设想
- dotnet 获得存储过程返回值和输出参数有什么不同 @@IDENTITY SCOPE_IDENTITY()
- Javascript命名禁区有哪些
- 华为手机动态修改手机型号参数
- 刚刚!2022年ABC中国大学排行榜发布
- 企业数字化信息化运营管理规划方案
- 九月十月百度,迅雷,华为,阿里巴巴笔试面试六十题(第411~470题)
- 视频剪辑制作教学:分享十种剪辑技巧,打好基础很重要
- 巨象指纹浏览器可以帮助用户做些什么?
- T83310 【音乐会】二重变革
- 车架号/VIN码识别——图像处理工具
- 定位python内存泄漏问题
- title属性 给元素增加提示 title属性选择器
- 基于阿里云生态构建网聚宝业务监控系统
- Android各种屏幕分辨率(VGA、HVGA、QVGA、WQVGA、WVGA、FWVGA) 详解
- Android 9的新特性 eSIM LPA