mapreduce编程入门及hdfs-java接口(代码片段)

xingweikun xingweikun     2023-02-16     612

关键词:

使用Eclipse创建MapReduce工程

配置环境

推荐这篇博客
Eclipse连接Hadoop集群(详细版)
配置好后,我的是这个样子

保持虚拟机开启,虚拟机最好已经创建HDFS目录(非虚拟机本地目录)。

新建MapReduce工程

File->New->Project
选择Map/Reduce Project

直接Finish
新建一个Hello类测试环境是否正常

分布式文件系统HDFS

HDFS-JAVA接口之读取文件

/user/dfstest/hello_hadoop.txt
文件内容为hello hadoop
package FileTest;

import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;

public class FileSystemCat 

	public static void main(String[] args) throws IOException 
		Configuration config = new Configuration();
		URI uri = URI.create("hdfs://master:8020/user/dfstest/hello_hadoop.txt");
		FileSystem fs = FileSystem.get(uri, config);
		InputStream in = null;
		try 
			in = fs.open(new Path(uri));
			IOUtils.copyBytes(in, System.out, 2048, false);
		 catch (Exception e) 
			IOUtils.closeStream(in);
		
	


如出现以上报错

如果你用的是Eclipse:
eclipse 程序-》右击-》Run as-》Run configuation-》Arguments-》VM Arguments。框内粘贴-》apply-》run OK

添加内容如下:

--illegal-access=deny --add-opens java.base/java.lang=ALL-UNNAMED


如果你用的是Idea:
idea->run->edit configurations->JVM options
如果发现里面没JVM options(刚看了一下我的里面就没有),看我下面如何添加


--illegal-access=deny --add-opens java.base/java.lang=ALL-UNNAMED

再次运行程序
这样看起来是不是舒服多了,红色报错消失了.

HDFS-JAVA接口之上传文件

package FileTest;

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class FileSystemUpload 

	public static void main(String[] args) throws IOException
		Configuration conf = new Configuration();
		conf.set("fs.defaultFS", "hdfs://master:8020/");
		FileSystem fs = FileSystem.get(conf);
		// 待上传文件的存放路径,我从win10环境向centos7虚拟机传文件
		// 不同操作系统注意更改路径格式
		Path localPath = new Path("C:\\\\Users\\\\dell\\\\Desktop\\\\email_log.txt");
		// 这个是上传后存放的路径
		Path hdfsPath = new Path("/user/dfstest/ysc.txt");
		System.out.println("开始上传");
		fs.copyFromLocalFile(localPath, hdfsPath);
		System.out.println("上传完毕");
	


如果报错,可能是权限不够

hdfs dfs -chmod 777 /user/dfstest

HDFS-JAVA接口之删除文件

package FileTest;

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class FileSystemDelete 

	public static void main(String[] args) throws IOException 
		Configuration conf = new Configuration();
		conf.set("fs.defaultFS", "hdfs://master:8020/");
		FileSystem fs = FileSystem.get(conf);
		// 删除文件
		Path path = new Path("/user/dfstest/ysc.txt");
		System.out.println("开始删除");
		fs.delete(path, true);
		System.out.println("删除完毕");
		fs.close();
	


HDFS-JAVA接口之列举文件夹和文件

列举文件夹

package FileTest;

import java.io.IOException;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.conf.*;

public class FileSystemListwjj 

	public static void main(String[] args) throws IOException 
		Configuration conf = new Configuration();
		conf.set("fs.defaultFS", "hdfs://master:8020/");
		FileSystem fs = FileSystem.get(conf);
		Path path = new Path("/movie");
		FileStatus[] fileStatuses = fs.listStatus(path);
		for (FileStatus file : fileStatuses) 
			// 判断是否是文件夹
			if (file.isDirectory()) 
				System.out.println(file.getPath().toString());
			
		
		fs.close();
	



列举文件

package FileTest;

import java.io.IOException;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.conf.*;

public class FileSystemListwj 

	public static void main(String[] args) throws IOException 
		Configuration conf = new Configuration();
		conf.set("fs.defaultFS", "hdfs://master:8020/");
		FileSystem fs = FileSystem.get(conf);
		Path path = new Path("/movie");
		FileStatus[] fileStatuses = fs.listStatus(path);
		for (FileStatus file : fileStatuses) 
			// 判断是否是文件
			if (file.isFile()) 
				System.out.println(file.getPath().toString());
			
		
		fs.close();
	



HDFS-JAVA接口之创建目录

package FileTest;

import java.io.IOException;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.conf.*;

public class FileSystemMakedir 

	public static void main(String[] args)throws IOException 
		Configuration conf=new Configuration();
		conf.set("fs.defaultFS", "hdfs://master:8020");
		FileSystem fs=FileSystem.get(conf);
		Path path=new Path("/user/root/loginmessage");
		fs.mkdirs(path);
		fs.close();
	



HDFS-JAVA接口之下载文件

package FileTest;

import java.io.IOException;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.conf.*;

public class FileSystemGet 

	public static void main(String[] args) throws IOException 
		Configuration conf = new Configuration();
		conf.set("fs.defaultFS", "hdfs://master:8020");
		FileSystem fs = FileSystem.get(conf);
		Path fromPath = new Path("/user/dfstest/hello_hadoop.txt");
		// 下载到桌面吧
		Path toPath = new Path("C:\\\\Users\\\\dell\\\\Desktop");
		System.out.println("开始下载:"+fromPath);
		fs.copyToLocalFile(false, fromPath, toPath, true);
		System.out.println(fromPath+"下载完毕");
	


HDFS-JAVA接口之写入文件

package FileTest;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

import org.apache.hadoop.fs.*;
import org.apache.hadoop.conf.*;

public class FileSystemWrite 

	public static void main(String[] args) throws IOException 
		Configuration conf = new Configuration();
		conf.set("fs.defaultFS", "hdfs://master:8020");
		FileSystem fs = FileSystem.get(conf);
		//将path内容写入newPath
		Path path = new Path("/user/dfstest/hello_hadoop.txt");
		Path newPath = new Path("/user/dfstest/new_hello_hadoop.txt");
		fs.delete(newPath, true);
		FSDataOutputStream os = fs.create(newPath);
		FSDataInputStream is = fs.open(path);
		BufferedReader br = new BufferedReader(new InputStreamReader(is, "utf-8"));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os, "utf-8"));
		String line = "";
		while ((line = br.readLine()) != null) 
			bw.write(line);
			bw.newLine();
		
		bw.close();
		os.close();
		br.close();
		is.close();
		fs.close();
	


mapreduce入门编程-成绩求和排序(代码片段)

...f08;算法、程序)、数据记录与处理、结果分析等总结MapReduce入门编程实验目的      1、掌握编程环境的准备方法2、掌握程序的打包方法3、掌握MapReduce任务的运行方法、运行状态的查看方法。实验任务与要求  任务:... 查看详情

并行编程入门

目录1.并行编程简介2.MapReduce2.1MapReduce简介2.2MapReduce框架2.3Hadoop介绍2.4Hadoop基本类2.5Hadoop编程实例1.并行编程简介1.1.并行编程作用,用途商业用途,科学计算,大数据分析1.2.并行编程兴起原因目前的串行编程的局限性使用的流水... 查看详情

大数据入门-分布式计算框架mapreduce

1概述源自于Google的MapReduce论文,发表于2004年12月。HadoopMapReduce是GoogleMapReduce的克隆版优点海量数量离线处理易开发易运行缺点实时流式计算2MapReduce编程模型wordcount词频统计MapReduce执行流程将作业拆分成Map阶段和Reduce阶段Map... 查看详情

mapreduce入门1(代码片段)

1.MapReduce介绍1.1MapReduce简介HadoopMapReduce是一个软件框架,用于轻松编写应用程序,这些应用程序以可靠,容错的方式并行处理大型硬件集群(数千个节点)上的大量数据(多TB数据集)。MapReduce是一种面... 查看详情

mapreduce编程-----wordcount程序编写及运行

一、MapReduce概述1.核心思想MapReduce的核心思想是“分而治之”,就是把一个复杂的问题,按照一定的“分解”方式分为等价的规模较小的若干部分,然后逐个解决,分别找出各部分的结果,把各部分的结果组成... 查看详情

学习笔记hadoop——mapreduce编程进阶(代码片段)

...使用Partitioner优化程序3.1、自定义单词计数四、本地提交MapReduce程序4.1、自定义单词计数一、输出文件格式及序列化文 查看详情

mapreduce编程实例5

...成开发环境配置请参考:Ubuntu搭建Hadoop源码阅读环境 MapReduce编程实例:MapReduce编程实例(一),详细介绍在集成环境中运行第一个MapReduce程序WordCount及代码分析MapReduce编程实例(二),计算学生平均成 查看详情

学习笔记hadoop(十五)——mapreduce编程进阶(代码片段)

...使用Partitioner优化程序3.1、自定义单词计数四、本地提交MapReduce程序4.1、自定义单词计数一、输出文件格式及序列化文 查看详情

mapreducemapreduce基础入门

一、mapreduce入门 1、什么是mapreduce   首先让我们来重温一下hadoop的四大组件:HDFS:分布式存储系统MapReduce:分布式计算系统YARN:hadoop的资源调度系统Common:以上三大组件的底层支撑组件,主要提供基础工具包和RPC... 查看详情

mapreduce编程初步(wordcount,topn)

...置Hadoop集群成功后,利用官方自带的例子简单测试了一下MapReduce程序WordCount,这个例子也就相当于编程入门的HelloWorld程序了,结构清晰容易理解,并且方便说明MapReduce的工作过程。这篇随笔主要想记录下在Eclipse中编写简单的MapR... 查看详情

mapreduce(代码片段)

MapReduce编程模型详解(基于Windows平台Eclipse)阅读目录前期准备编程环境搭建编写map阶段的map函数编写reduce阶段的reduce函数编写驱动类运行MapReduce程序报错解决总结本文基于Windows平台Eclipse,以使用MapReduce编程模型统计文本文件... 查看详情

mapreduce编程实例(代码片段)

 MapReduce常见编程实例集锦。一、WordCount实例输入数据:file1.csv内容hellodworldfile2.csv内容hellodhadoop输出结果:hadoop1hello2world1  实现代码及源码分析:1packagecom.hadoop.kwang;23importjava.io.IOException;4importjava.util.StringT 查看详情

60集python入门视频ppt整理|python编程基础及编程风格

学习视频来源:《马哥教育-Python入门教程》 查看详情

剖析美国平均气温项目,掌握mapreduce编程

数据集导入HDFS通过命令行访问刚刚上传至HDFS的数据集[[email protected]hadoop-2.6.0]$bin/hdfsdfs-ls/weather/  MapReduce程序编译及运行:第一步:在Map阶段,提取气象站和气温数据publicstaticclassTemperatureMapperextendsMapper<LongWritable,Text,Te 查看详情

云计算-mapreduce

Hadoop示例程序WordCount详解及实例http://blog.csdn.net/xw13106209/article/details/6116323hadoop中使用MapReduce编程实例(转)http://eric-gcm.iteye.com/blog/1807468【mapreduce进阶编程二】奇偶行分别求和http://www.aboutyun.com/forum.php?m 查看详情

hadoopstreaming使用及参数设置

1.MapReduce与HDFS简介  什么是Hadoop?  Google为自己的业务需要提出了编程模型MapReduce和分布式文件系统GoogleFileSystem,并发布了相关论文(可在GoogleResearch的网站上获得:GFS、MapReduce)。DougCutting和MikeCafarella在开发搜索引擎Nutch... 查看详情

mapreduce编程之实例分析:wordcount

...数之间有间隔2.WordCount程序设计思路  WordCount可以使用MapReduce去做  在/usr/local/目录下创建WordCount文件夹  mkdir/usr/local/wordcount   切换到指 查看详情

2018-07-30期mapreduce分区(partitioner)编程案例

1、EmpSalaryBean对象packagecn.sjq.mr.part;importjava.io.DataInput;importjava.io.DataOutput;importjava.io.IOException;importorg.apache.hadoop.io.Writable;/***定义一个员工薪水的JavaBean,并实现MapReduce的Writable序列化接口*@ 查看详情