hdfs 多个文件合并_hadoop学习笔记3 hadoop程序将本地文件夹中多个文件,合并为一个文件并上传到hdfs中--梦飞翔的地方(梦翔天空)...

今天梦翔儿,成功实现hadoop编程,将本地文件夹中多个文件,合并为一个文件并上传到hdfs中

直接上代码:PutMerge.java

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.fs.FSDataInputStream;

import org.apache.hadoop.fs.FSDataOutputStream;

import org.apache.hadoop.fs.FileStatus;

import org.apache.hadoop.fs.FileSystem;

import org.apache.hadoop.fs.Path;

public class PutMerge {

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

Configuration conf = new Configuration();

FileSystem hdfs = FileSystem.get(conf);   //获得hdfs文件系统设置

//FileSystem hdfs  = DistributedFileSystem.get(conf);

FileSystem local = FileSystem.getLocal(conf); //获得本地文件系统设置

Path inputDir = new Path(args[0]);  //本地输入目录

Path hdfsFile = new Path(args[1]);  //远程输出文件

try {

FileStatus[] inputFiles = local.listStatus(inputDir);   //数组,用来循环保存本地文件目录信息

FSDataOutputStream out = hdfs.create(hdfsFile); //创新输出hdfs文件

for (int i = 0; i < inputFiles.length; i++) {    //循环取出本地文件目录信息

System.out.println(inputFiles[i].getPath().getName());  //主要关心文件名

FSDataInputStream in = local.open(inputFiles[i].getPath()); //打开本地文件

byte buffer[] = new byte[256];

int bytesRead = 0;

while ((bytesRead = in.read(buffer)) > 0) {

out.write(buffer,0, bytesRead);  //合并文件

}

in.close();

}

out.close();

} catch (IOException e) {

// TODO: handle exception

e.printStackTrace();

}

}

}

=========

手动编译并执行过程:

cd /usr/lib/hadoop

sudo mkdir putmerge

sudo mkdir putmerge/src

sudo mkdir putmerge/classes

sudo cp ~/workspace/PutMerge/src/PutMerge.java putmerge/src    //源码拷进

cd putmerge/

ls

cd src

ls

cd ../..

sudo javac -classpath hadoop-0.20.2-cdh3u0-core.jar:lib/commons-cli-1.2.jar -d putmerge/classes putmerge/src/PutMerge.java   //编译

sudo jar -cvf putmerge/PutMerge.jar -C putmerge/classes/ .

sudo mkdir input2

sudo nano input2/test1.txt   //两个输入文件

111-111

111-222

111-333

sudo nano input2/test2.txt

222-111

222-222

222-333

hadoop jar putmerge/PutMerge.jar PutMerge input2 hdfs://localhost/usr/cloud/output2  //执行程序

梦翔儿最终通过50070的hdfs web查看输出:

hdfs://localhost/usr/cloud/output2

222-111

222-222

222-333

111-111

111-222

111-333

=========

注:在ubuntu的eclipse中两个参数如果都是本地,成功。但第二个参数设为hdfs时执行出错,提示:Wrong FS: hdfs://localhost/user/cloud,expected: file:///,不知何故。

但如上进行手动编译,执行是成功的。看起来无论是本地还是远程,执行的过程都是相同的。也就是说hdfs 的接口也是一种标准的java类,在本地也是可以执行的。

在梦翔儿的实验中,是按本地的一大堆出租车轨迹日志,合并成一个大文件,送到hdfs(因为hdfs对大文件的处理效率比较好,一堆小文件效率差)上后用mapreduce来分析查询。

原始程序参考于 《hadoop in action 》 P36-37 关于其它的算法,以后再具体实践。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/433516.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

js 获取鼠标在画布的位置_云凤蝶如何打造媲美 sketch 的自由画布

在 Design Tools 中&#xff0c;组件间的对齐与吸附功能是否好用是决定其画布是否可以高效进行产品设计的关键因素。云凤蝶作为一款快速制作高品质中后台应用的 hpaPaaS 平台&#xff0c;同样拥有自由拖拽的可视化画布。那么在云凤蝶的自由画布中&#xff0c;对齐规则是怎样的&…

GCC 使用摘记

1. 几个子程序和说明cc1C 的实际编译程序cc1plusC 的实际编译程序collect2在不使用 GNU连接程序的系统上&#xff0c;用来产生特定的全局初始化代码crt0.o为每个系统定制的初始化和结束代码libgcc默认连接的 gcc 例程库libstdc默认连接的 g 例程库 2. 几个重要的和 GCC 协同工作…

不愿意和别人打交道_如果你的交际能力很差,不喜欢与人打交道,这3种职业最适合你...

现在给个飞速发展的社会&#xff0c;在我们日常生活中交际表达能力非常的重要&#xff0c;但是还是有一部分人比较内向&#xff0c;不善于表达自己的内心&#xff0c;也不喜欢和别人接触&#xff0c;那么这一类人从事哪些行业比较合适呢&#xff1f;下面我就跟大家讨论一下。性…

python组合函数_Python---函数---参数组合

# 参数组合# 在Python中定义函数&#xff0c;可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数# 这5中都可以组合使用# 参数定义的顺序必须是&#xff1a;必选参数、默认参数、可变参数、命名关键字参数和关键字参数# 比如定义一个函数&#xff0c;包含上述若干…

Linux下TI omap芯片 MUX 配置分析(以AM335X芯片为例)

在移植内核的时候&#xff0c;通常会遇到引脚复用&#xff08;MUX&#xff09;的配置问题。在现在的Linux内核中&#xff0c;对于TI的ARM芯片&#xff0c;早已经有了比较通用的MUX配置框架。这对于许多TI的芯片都是通用的&#xff0c;这次看AM335X的代码顺手写一下分析&#xf…

python生成验证码_python之验证码生成(gvcode与captcha)

今天向大家总结一下python在做项目时用到的验证码生成工具&#xff1a;gvcode与captchagvcode全称&#xff1a;graphic-verification-code安装&#xff1a;pip install gvcode使用&#xff1a;import gvcodes, v gvcode.generate() #序列解包s.show() #显示生成的验证码图片pr…

设计模式 学习笔记(2)单一职责原则、开放封闭原则、依赖倒转原则

&#xff08;3&#xff09;单一职责原则 单一职责原则&#xff08;SRP&#xff09;&#xff0c;就一个类而言&#xff0c;应该仅有一个引起它变化的原因。例如&#xff0c;我们在写一个窗体应用程序&#xff0c;一般都会生成一个Form这样的类&#xff0c;于是我们就把各种各样的…

是网关吗_智能家居网关功能这么多,你都知道吗?

在科技发达的今天&#xff0c;我们的生活也开始趋向于智能化&#xff0c;智能家居已经迎来了新时代。电动窗帘、扫地机器人、电视、空调等电器都能智联wifi&#xff0c;可是使用的时候得一个个去控制&#xff0c;数量多的话懒癌们肯定嫌麻烦的。所以很多聪明的人都选择安装智能…

eventfd以及epoll原理分析

这两天公司代码中用到了epoll。然后在跟同事闲扯的过程中发现了Linux中有eventfd。两者虽然名字看起来差不多&#xff0c;但是相关性倒是不多。为了弄明白这两个东西到底在内核上是怎么实现的&#xff0c;这两天将内核这两个部分的相关代码看了下&#xff0c;也终于明白了这两个…

一个数据包大小是多少k_算法交流: 6046 数据包的调度机制 【2.6基本算法之动态规划】...

【题目描述】 6046 数据包的调度机制 By OIer14wa随着 Internet的迅猛发展,多媒体技术和电子商务应用日益广泛,Internet上的服务质量(QoS,Qualityof Service)问题已越来越受到重视。网络中采用的数据包调度机制与网络的服务质量 QoS 有着密切的关系。研究表明传统的基于队列的调…

iOS vs. Android,应用设计该如何对症下药?

摘要&#xff1a;从iOS到Android&#xff0c;两大平台应用设计有何不同&#xff1f;又都存在什么样的问题&#xff1f;Android定制性太高&#xff0c;该如何进行UI设计&#xff1f;在CMDN CLUB第28期活动中&#xff0c;咕咚网高级产品经理王磊&#xff0c;从iOS、Android谈起&a…

postman数据保存在哪里_Postman 历史记录导出的解决方案

Postman 可以说是我在 CTF 中使用最多的工具了。它确实非常好用,但我并没有完全掌握它的使用之道,因此大量的历史请求堆在一起,显得环境无比混乱。 虽说是有想要改变的想法,但这些历史记录还是非常重要的,一时间难以割舍。于是便开始寻找导出的方案。 indexedDB 我们知道,…

cs8900a网卡驱动--寄存器

1. CS8900内部有一个4k的RAM用于访问其内部寄存器&#xff0c;称为PacketPage。 2. LineCTL 网卡状态设置 从上图看到&#xff0c;此寄存器的6&#xff0c;7位用于设置网卡的收发使能。8&#xff0c;9位用于设置网卡状态。是10BASE-T还是 AUI。下面这图更详细介绍了8&…

python输入序列语句_Python基础教程(一) - 序列:字符串、列表和元组

这一章我们主要研究这样一些类型&#xff0c;他们的成员是有序排列的&#xff0c;并且可以通过下标偏移量访问的&#xff0c;这类Python类型统称为序列&#xff0c;包括字符串、列表和元组。序列类型操作符成员关系操作符(in、not in)&#xff1a;成员关系操作符是用来判断一个…

由于找不到openni2_Kinect开发教程八:OpenNI2显示深度、彩色及融合图像

在《Kinect开发教程二&#xff1a;OpenNI读取深度图像与彩色图像并显示》中&#xff0c;小斤介绍了OpenNI读取深度与彩色图像数据的方法&#xff0c;并且借助OpenCV进行显示。OpenNI2在接口上与OpenNI有了较大变化&#xff0c;具体更新可以查看《OpenNI Migration Guide》。从获…

目录服务用户OSX: ARD的基于目录服务用户权限

改章节笔者在上海游玩的时候突然想到的...今天就有想写几篇关于目录服务用户的笔记&#xff0c;所以回家到以后就奋笔疾书的写出来发布了 从Apple Remote Desktop 3.3开始, 加入了对目录服务用户/用户组的支持, 也就是说可以利用目录用户/用户组, 来定义该用户/用户组的ARD权限…

__builtin_expect详解

在GTK2.0源码中有很多这样的宏&#xff1a;G_LIKELY和G_UNLIKELY。比如下面这段代码&#xff1a; if (G_LIKELY (acat 1)) /* allocate through magazine layer */ { ThreadMemory *tmem thread_memory_from_self(); guint ix SLAB_INDEX (allocat…

python3界面实例_程序人生——python3下tkinter的界面示例

# written by wangluojisuanimport tkinterfrom tkinter import messageboxglobal main_formglobal lbl_nameglobal entry_nameglobal entry_text_varglobal chk_varglobal chkglobal text_areadef window_quit():if tkinter.messagebox.askyesno("提示", "退出…

jQuery图表插件 JS Charts

JS Charts 是一款免费的基于javascript的轻量级插件&#xff0c;用JS Charts 绘制图表是很轻松地事,因为你只需要关心客户端的脚本。 Loading...Loading...Loading...Loading...Loading...Loading...Loading...Loading...Loading...Loading...Loading...转载于:https://www.cnb…

python官方文档怎么用_python帮助文档怎么使用

在python命令行中输入help()&#xff0c;然后再次输入time&#xff0c;可以获得很详细的模块文档&#xff1b;或者输入time.localtime&#xff0c;可以获得简略的函数参数显示&#xff1b;或者输入range&#xff0c;可以获得很详细的类的文档。方法一在python命令行输入以下内容…