常用的HDFS操作

2023-11-13

常用的HDFS操作

利用Hadoop提供的shell命令完成任务

提示:

  1. 部分Shell命令的参数路径只能是本地路径或者HDFS路径.
  2. 若Shell命令的参数既可以是本地路径,也可以是HDFS路径时,注意区分。为保证操作正确,可指定路径前缀hdfs:/// 或者file:///
  3. 注意区分相对路径与绝对路径 (hdfs中默认相对路径起始为/user/hadoop)

(1)向HDFS中上传任意文本文件,如果指定的文件在HDFS中已经存在,由用户指定是追加到原有文件末尾还是覆盖原有文件

Shell命令:
检查文件是否存在:./hdfs dfs -test -e text.txt (执行完这一句无输出结果,需要输入命令 “echo $?” 存在为0,不存在为1)
追加命令:./hdfs dfs -appendToFile local.txt text.txt(将本地文件追加到原有文件末尾 若hdfs中存在text.txt则直接附加,若不存在则自动新建一个名字为text.txt的文本)
覆盖命令1:./hdfs dfs -copyFromLocal -f local.txt text.txt(将本地文件上传到hdfs 若hdfs中存在text.txt则直接覆盖,若不存在则自动新建一个名字为text.txt的文本)
覆盖命令2:./hdfs dfs -cp -f file:///home/work/local.txt text.txt(注意参数的路径是本地的还是hdfs的,由前面的覆盖后面的)
可以使用如下命令实现:(在终端输入或者写成shell脚本执行)

#!/bin/bash
if $(./hdfs dfs -test -e text.txt)
then $(./hdfs dfs -appendToFile local.txt text.txt)
else $(./hdfs dfs -copyFromLocal -f local.txt text.txt)
fi

(2)从HDFS中下载指定文件,如果本地文件与要下载的文件名称相同,则自动对下载的文件重命名

shell命令:
下载命令:./hdfs dfs -copyToLocal text.txt ./text2.txt(将hdfs上名为text.txt的文件下载到本地并命名为text2.txt 如果text2.txt在本地已存在 不会自动覆盖,若要强行覆盖,则要加一个 -f 参数 )
可以使用如下命令

#!/bin/bash
if $(hdfs dfs -test -e text1.txt)
then
if [ -e text1.txt ]
then $(hdfs dfs -copyToLocal text1.txt ./text2.txt)
else $(hdfs dfs -copyToLocal text1.txt ./text1.txt)
fi
fi

(3)将HDFS中指定文件的内容输出到终端中

Shell命令:
hdfs dfs -cat text.txt

(4)显示HDFS中指定的文件的读写权限、大小、创建时间、路径等信息

Shell 命令:
hdfs dfs -ls -h text.txt

(5)给定HDFS中某一个目录,输出该目录下的所有文件的读写权限、大小、创建时间、路径等信息,如果该文件是目录,则递归输出该目录下所有文件相关信息

hdfs dfs -ls -R -h /user/hadoop

(6)提供一个HDFS内的文件的路径,对该文件进行创建和删除操作。如果文件所在目录不存在,则自动创建目录

Shell命令:
hdfs dfs -mkdir [-p] dir1/dir2(创建目录 -p 是递归创建父目录)
hdfs dfs -touchz filename(创建一个0长度的文件)
hdfs dfs -rm dir1/dir2/filename(删除指定路径文件)
可以使用如下命令:

#!/bin/bash
if $(hdfs dfs -test -d dir1/dir2);
then $(hdfs dfs -touchz dir1/dir2/filename);
else $(hdfs dfs -mkdir -p dir1/dir2 &&hdfs dfs -touchz dir1/dir2/filename)
fi

(7)提供一个HDFS的目录的路径,对该目录进行创建和删除操作。创建目录时,如果目录文件所在目录不存在则自动创建相应目录;删除目录时,由用户指定当该目录不为空时是否还删除该目录

Shell命令:
创建目录:hdfs dfs -mkdir -p dir1/dir2
删除目录:hdfs dfs -rmdir dir1/dir2 (如果目录非空则会提示not empty ,不执行删除)
强制删除目录:hdfs dfs -rm -R dir1/dir2

(8)向HDFS中指定的文件追加内容,由用户指定内容追加到原有文件的开头或结尾

Shell命令:
追加到文件末尾:hdfs dfs -appendToFile local.txt text.txt
追加到文件开头:(没有直接的命令可以操作,方法之一是先移动到本地进行操作,再进行上传覆盖):

hdfs dfs -get text.txt (将文件或目录从HDFS中的路径拷贝到本地文件路径)
cat text.txt >> local.txt(将text.txt内容加到local.txt后)
hdfs dfs -copyFromLocal -f local.txt text.txt(将local.txt 上传到hdfs 相当于把local.txt的内容加到了原来hdfs中的text.txt的前面)

(9)删除HDFS中指定的文件

Shell命令:
hdfs dfs -rm text.txt

(10)在HDFS中,将文件从源路径移动到目的路径。

Shell命令:
hdfs dfs -mv text.txt text2.txt (更改文件名,注意更改的目的文件名不能为目录名)
hdfs dfs -mv text.txt dir1/dir2(如果后面的参数是一个目录名则是移动)

(11) 其他常用命令

1.hdfs dfs -put text.txt dir1/dir2 (将本地文件或目录上传到HDFS中的路径)
2.hdfs dfs -du [-s] [-h]dir1 /hdfs dfs -du filename(显示给定目录中包含的文件和目录的大小或文件的长度,用字节大小表示,文件名用完整的HDFS协议前缀表示,以防它只是一个文件。)
-s选项将显示文件长度的汇总摘要,而不是单个文件。
-h选项将以“人类可读”的方式格式化文件大小
3.hdfs dfs -tail filename (显示文件最后1kb内容到标准输出)
4.hdfs dfs -stat filename(显示文件所占块数(%b),文件名(%n),块大小(%n),复制数(%r),修改时间(%y%Y) )
5.hdfs dfs -getmerge dir1 local.txt 将源目录和目标文件作为输入,并将src中的文件连接到目标本地文件(把两个文件的内容合并起来)
注:合并后的文件位于当前目录,不在hdfs中,是本地文件
在这里插入图片描述
6.hdfs dfs -cat < srcpath> | grep (从hdfs上过滤包含某个字符的行内容)
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

常用的HDFS操作 的相关文章

随机推荐

  • Android与H5交互 -- 点击H5跳转到 Android原生 页面 ,webview与h5(js)交互

    目录标题 Android与H5交互 一 清单文件 增加的配置 二 在你需要跳转的页面 清单文件中加入如下配置 三 整体结构布局如下 四 贴一下html里面的代码吧 五 具体实现如下 Android webview调用JS方法 JS中调用An
  • centos安装docker后,ping不能服务器ip

    工作中碰的问题 记录下解决过程 问题描述 2台内网服务器 A 172 20 72 77 和B 172 17 3 222 在A服务上ping B 安装 docker之前是可以ping通 安装docker之后确ping不通了 查找原因 在安装d
  • Ajax定时调用封装

    var dataUpload ajax请求数据 method function murl mdata method time1 time2 success 首次读取 setTimeout function aJax time1 定时读取函数
  • Vue3.2中使用swiper实现层叠式轮播图

    介绍 在 vue3 中使用 swiper 实现缩略图的轮播图效果 具体如下图所示 代码
  • tensorflow2调用huggingface transformer预训练模型

    tensorflow2调用huggingface transformer预训练模型 一点废话 huggingface简介 传送门 pipline 加载模型 设定训练参数 数据预处理 训练模型 结语 一点废话 好久没有更新过内容了 开工以来就
  • python爬取美女_知乎大神用Python爬取高颜值美女(Python爬虫+人脸检测+颜值检测)...

    import time import os import re import requests from lxml import etree from aip import AipFace 百度云 人脸检测 申请信息 唯一必须填的信息就这三
  • 对List集合进行自定义规则排序

    这次的场景是要对一个List lt 对象 gt 中的某个属性进行自定义排序 废话不多说 直接上代码 首先你要自定义一个排序规则 比如下面这种 public class MySort public static final HashMap
  • 西普部分CTF题目(web)(持续更新)

    1 菊花 题目地址 http www simplexue com ctf examctfdetail 729 点击 我是吊死 进入sim php页面 post参数为id 提示需要net framework 9 9 用burp拦截 修改use
  • JS 实现抛物线动画案例

    相信大家都有浏览过 很多购物网站购物车的添加商品动画 今天 我们就手写一个简单的抛物线动画 先上案例 一 绘制页面 我们这里简单实现 一个按钮 一个购物车图标 样式这里直接跳过 最终dom结构 div class container div
  • eclipse 编译dubbo2.8.4 源码

    第一步 准备工作 下载dubbox的源代码 下载地址 https github com dangdangdotcom dubbox 第二步 编译源代码 maven编译工具 打开CMD命令窗口 切换到dubbox源代码的所在文件夹 E wor
  • Java——数据结构之顺序表

    文章目录 Java 数据结构之顺序表 1 顺序表的简单了解 2 接口的实现 1 创建初始变量 2 打印顺序表 3 添加元素 4 判断是否包含元素 5 查找元素的下标 6 获取 pos 位置的元素 7 更新pos 位置的元素值 8 删除元素
  • pip install报错 [ImportError]: DLL load failed while importing _socket:参数错误

    pip install 时报错 ImportError DLL load failed while importing socket 参数错误 开始以为是虚拟环境的问题 换了虚拟环境还是不行 百度到了解决办法 Win7系统需要安装KB253
  • Spring系列——Spring MVC配置文件

    Spring系列 Spring MVC配置文件 一 前端控制器DispatcherServlet 二 RequestMapping注解 1 使用方法 1 1 标注在方法上 1 2 标注在类上 2 RequestMapping注解的属性 3
  • 机器视觉入门之路(三九--A,霍夫变换(hough transform)寻找直线,c++)

    xy坐标系直线 y kx b 请看图 假定红色线段上的所有样本点 100个 都满足上面的直线方程 a图 也就是说 红色的点 x1 y1 x2 y2 x3 y3 x98 y98 x99 y99 x100 y100 带入方程 只能求出一个k值和
  • Redis入门(一)

    第1章 NoSQL 1 1 NoSQL数据库 1 1 1 NoSQL是什么 1 NoSQL Not Only SQL 意即 不仅仅是SQL 泛指非关系型的数据库 2 NoSQL不拘泥于关系型数据库的设计范式 放弃了通用的技术标准 为某一领域
  • 圆相交 马蹄集

    圆相交 难度 白银 0时间限制 1秒 巴占用内存 64M 输入2个圆的圆心的坐标值 x y 和半径 判断2个圆是否相交 输出YES或者 NO 格式 输入格式 输入整型 空格分隔 每行输入一组信息 输出格式 输出YES或者NO Created
  • 《计算机组成原理实验》 多周期CPU

    计算机组成原理实验 多周期CPU 前言 这是中山大学2018年计算机组成原理实验中多周期CPU的实验报告 仿真与写板的内容暂略 所有源代码 包括写板 已经上传至我的github当中 欢迎大家访问 github个人主页 https stara
  • wxWidgets多线程及事件传递

    前言 最近忙着写项目 wxWidgets计划还有wxWidgets日志系统的拦截重定向 剩下一些比较杂的知识点 想到哪写到哪 比如进程间通信 调用外部程序后结束本程序 用于升级程序 集成带窗口的ActiveX 创建单进程程序等 这些文档上基
  • 分享66个HTML&CSS源码,总有一款适合您

    HTML CSS源码 分享66个HTML CSS源码 总有一款适合您 下面是文件的名字 我放了一些图片 文章里不是所有的图主要是放不下 大家下载后可以看到 源码下载链接 https pan baidu com s 1AeVqON7byvt
  • 常用的HDFS操作

    常用的HDFS操作 利用Hadoop提供的shell命令完成任务 1 向HDFS中上传任意文本文件 如果指定的文件在HDFS中已经存在 由用户指定是追加到原有文件末尾还是覆盖原有文件 2 从HDFS中下载指定文件 如果本地文件与要下载的文件