hadoop shell操作HDFS文件
一.常用的 hadoop shell
文件路径需要自己有才行,示例中的文件路径是本人自己的文件路径,不是公共文件路径,如何建立自己的数仓,查看本人 大数据单机学习环境搭建 相关文章
1.1查看 创建 删除
# 列出当前hdfs所存贮的文件
hadoop fs -ls /
# user下的所有内容
hadoop fs -ls -R /user
# user下级目录的内容
hadoop fs -ls -h /user# 创建文件
hadoop fs -mkdir /abc
# 创建多级目录
hadoop fs -mkdir -p /abc/mm/ff# 把/abc目录下面的123.txt文件删除掉
hadoop fs -rm -r /abc/123.txt
1.2上传 查看 下载
# 上传/home/caw/demo_test_data.txt文件到/user/hive/warehouse/demo.db/test文件夹下
hadoop fs -put /home/caw/demo_test_data.txt /user/hive/warehouse/demo.db/test
# 小文件合并,本地2.txt 3.txt,合并上传到hdfs的1.txt
hadoop fs -appendToFile 2.txt 3.txt /1.txt# 查看文件000000_0的内容
hadoop fs -cat /user/hive/warehouse/demo.db/test/000000_0# 文件下载到/home/caw/桌面/test.txt
hadoop fs -get /user/hive/warehouse/demo.db/test/000000_0 /home/caw/桌面/test.txt
# test下面有两个文件分别为000000_0 和demo_test_data.txt ,我们想同时下载两个文件,并且下载到本地的时候自动将两个文件合并
hadoop fs -getmerge /user/hive/warehouse/demo.db/test/000000_0 /user/hive/warehouse/demo.db/test/demo_test_data_copy_1.txt /home/caw/桌面/test.txt
1.3修改 复制
# abc目录下面的abc1.txt移动到/abc/mm下面
hadoop fs -mv /abc/abc1.txt /abc/mm
# 把demo_test_data_copy_1.txt.txt改个名字叫000000_1
hadoop fs -mv /user/hive/warehouse/demo.db/test/demo_test_data_copy_1.txt /user/hive/warehouse/demo.db/test/000000_1
# 把刚才的/abc/mm/123.txt给复制到/abc下面
hadoop fs -cp /abc/mm/123.txt /abc
1.4权限修改
# 修改文件的权限
hadoop fs chmod 文件权限 文件
hadoop fs -chmod -R 777 /user/hive/warehouse/tms_app.db/cust_id_tb
1.5文件监听
# 监听文件
hadoop fs -tail -f
# 监听的必须是文件不能是文件夹
hadoop fs -tail -f /user/hive/warehouse/null_demo/null_demo.txt
1.6更多方法
hadoop fs -help
查看更多用法
hadoop fs [generic options][-appendToFile <localsrc> ... <dst>][-cat [-ignoreCrc] <src> ...][-checksum [-v] <src> ...][-chgrp [-R] GROUP PATH...][-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...][-chown [-R] [OWNER][:[GROUP]] PATH...][-concat <target path> <src path> <src path> ...][-copyFromLocal [-f] [-p] [-l] [-d] [-t <thread count>] [-q <thread pool queue size>] <localsrc> ... <dst>][-copyToLocal [-f] [-p] [-crc] [-ignoreCrc] [-t <thread count>] [-q <thread pool queue size>] <src> ... <localdst>][-count [-q] [-h] [-v] [-t [<storage type>]] [-u] [-x] [-e] [-s] <path> ...][-cp [-f] [-p | -p[topax]] [-d] [-t <thread count>] [-q <thread pool queue size>] <src> ... <dst>][-createSnapshot <snapshotDir> [<snapshotName>]][-deleteSnapshot <snapshotDir> <snapshotName>][-df [-h] [<path> ...]][-du [-s] [-h] [-v] [-x] <path> ...][-expunge [-immediate] [-fs <path>]][-find <path> ... <expression> ...][-get [-f] [-p] [-crc] [-ignoreCrc] [-t <thread count>] [-q <thread pool queue size>] <src> ... <localdst>][-getfacl [-R] <path>][-getfattr [-R] {-n name | -d} [-e en] <path>][-getmerge [-nl] [-skip-empty-file] <src> <localdst>][-head <file>][-help [cmd ...]][-ls [-C] [-d] [-h] [-q] [-R] [-t] [-S] [-r] [-u] [-e] [<path> ...]][-mkdir [-p] <path> ...][-moveFromLocal [-f] [-p] [-l] [-d] <localsrc> ... <dst>][-moveToLocal <src> <localdst>][-mv <src> ... <dst>][-put [-f] [-p] [-l] [-d] [-t <thread count>] [-q <thread pool queue size>] <localsrc> ... <dst>][-renameSnapshot <snapshotDir> <oldName> <newName>][-rm [-f] [-r|-R] [-skipTrash] [-safely] <src> ...][-rmdir [--ignore-fail-on-non-empty] <dir> ...][-setfacl [-R] [{-b|-k} {-m|-x <acl_spec>} <path>]|[--set <acl_spec> <path>]][-setfattr {-n name [-v value] | -x name} <path>][-setrep [-R] [-w] <rep> <path> ...][-stat [format] <path> ...][-tail [-f] [-s <sleep interval>] <file>][-test -[defswrz] <path>][-text [-ignoreCrc] <src> ...][-touch [-a] [-m] [-t TIMESTAMP (yyyyMMdd:HHmmss) ] [-c] <path> ...][-touchz <path> ...][-truncate [-w] <length> <path> ...][-usage [cmd ...]]
二.一个小案例
本节内容以SQL使用技巧(5)NULL值和空值的重要说明的数据构造为例,展示hadoop shell的 查看ls
、上传put
、删除rm
、内容展示cat
等 hadoop fs 操作
2.1Hive建表
location位置非常关键,直接决定Hive能否通过metastore的源信息找到HDFS文件并成功解析
create table null_demo(id bigint, name string, age int, city string, address string, notes string)
row format DELIMITEDfields terminated by ','
;
验证建表
hadoop fs -ls /user/hive/warehouse
2.2上传数据
将数据put到hadoop,存为HDFS
hadoop fs -put /home/null_demo.txt /user/hive/warehouse/null_demo
select * from null_demo;
2.3sed流编辑器替换
替换文本中的单引号 sed -i "s?'??g" /home/null_demo.txt
2.4删除错误数据的文件
删除错误数据,重新上传替换单引号后的文件
hadoop fs -rm -r /user/hive/warehouse/null_demo/null_demo.txt
hadoop fs -ls /user/hive/warehouse
重新上传修改后的文本
hadoop fs -put /home/null_demo.txt /user/hive/warehouse/null_demo
2.5查看HDFS文件内容
hadoop fs -cat /user/hive/warehouse/null_demo/null_demo.txt
2.6Hive查询结果验证
select * from null_demo;
2.7小文件的get方法
2.7.1增加文件数量
单独新增一条数据,多出了一个HDFS文件
insert into null_demo(id,name) select 5,'公子';
再单独新增一条数据,观察HDFS文件变化
insert into null_demo(id,name) select 6,'钟三';
最后一次新增多条数据,再观察HDFS文件变化
insert into null_demo(id,name)
select 7,'徐四' union all
select 8,'程五' union all
select 9,'肇六' union all
select 10,'邹七';
数据结果验证select * from null_demo;
2.7.2合并文件保存为1个或多个
正常数据业务中形成很多个文件是很平常的,并不是什么特例
set mapred.reduce.tasks=1
设置的是最后保存的文件数量,这里设置为1
insert overwrite
会替换掉原有的结果
format delimited fields terminated by '|'
确认文件分隔符,因为保存数据是为了其他人或其他环境再次使用,所以这个是重要的
cluster by id
这里指定按照id字段进行 distribute by 划分 和 sort by 排序。当不知道使用哪个字段划分合适,且无需排序时,可以使用distribute by rand()
进行随机划分。这种分配的好处是,当数据规模较大时 tasks 的设置大于1,数据会分配的相对均匀,不至于数据分配到同一个reducer中导致数据倾斜。
-- sql执行,我这里是放在DBeaver中执行的,不过多展示了
set mapred.reduce.tasks=1;
insert overwrite directory '/user/hive/warehouse/unload/null_demo_unload/' row format delimited fields terminated by '|'
select * from null_demo cluster by id;
数据库管理工具中执行完上述代码后,可以到 directory 文件对应位置查看结果
也可以通过命令hadoop fs -ls /user/hive/warehouse/unload/null_demo_unload/000000_0
get获取HDFS文件到本地
hadoop fs -get /user/hive/warehouse/unload/null_demo_unload/000000_0 /home/null_demo_cluster.txt
并查看数据结果,确认已排序cat /home/null_demo_cluster.txt
至此,数据获取完成,只需要get一个文件即可完成所有数据的获取。
声明:本文所载信息不保证准确性和完整性。文中所述内容和意见仅供参考,不构成实际商业建议,可收藏可转发但请勿转载,如有雷同纯属巧合
hadoop shell操作HDFS文件相关推荐
- Hadoop大象之旅009-通过Shell操作hdfs
Hadoop大象之旅009-通过Shell操作hdfs 老帅 调用Hadoop分布式文件系统(HDFS)Shell命令应使用bin/hadoop fs <args>的形式. 1.查看hdf ...
- Hadoop Shell命令-hdfs常用命令
Hadoop Shell命令-hdfs Hadoop Shell命令 cat chgrp chmod chown copyFromLocal copyToLocal cp du dus expunge ...
- hadoop java操作hdfs
hfds 是一种文件系统,用于存储hadoop将要处理的数据.适用于大规模分布式数据处理,是一个可扩展行的文件分布式系统: 优点 1.如果出现节点宕机,hdfs,可以持续监视,错误检查,容错处理,文档 ...
- shell 删除了hdfs 文件_从零开始学大数据(三) Shell操作HDFS文件系统-中
1.格式化 [root@master sbin]# hdfs namenode -format 2.命令hdfs dfsadmin 查看(hdfs dfsadmin -report) [root@ma ...
- Java操作HDFS文件
1.读取单个文件 [java] view plain copy Date date = DateUtil.getSpecifiedDayBefore(); String yesterday = Dat ...
- hdfs文件如何导出到服务器,[Hadoop] 如何将 HDFS 文件导出到 Windows文件系统
介绍如何在 Windows 环境中, 将保存在 HDFS 上的文件导出到本机上 数据导入到 HDFS 后 当然也要有方法将数据从 HDFS 导出到本机系统上 在 HADOOP JAVA API 所提供 ...
- 使用java api操作HDFS文件
实现的代码如下: 1 import java.io.IOException; 2 import java.net.URI; 3 import java.net.URISyntaxException; ...
- java操作hdfs文件、文件夹
工具类HdfsUtils.java,及测试用例代码如下: HdfsUtils.java package com.xy6.demo.utils; import java.io.ByteArrayInpu ...
- Hadoop hdfs文件操作常用命令
hadoop fs -操作命令 -参数 -ls #显示目录信息 -->hadoop fs -ls hdfs://hadoop-server-00:9000/ 这些参数中,所有的hdfs路径都可以 ...
最新文章
- python一只青蛙一次可以_青蛙王子 儿童睡前故事 格林童话
- MySQL --- 计算指定日期为当月的第几周
- OC --(5)-- 字典、集、数组排序:字典类、集合类、数组数组排序、字典、集合的快速遍历、数组排序...
- 批次程序安裝手冊寫法
- 包含几通道数据_功率分析仪和数据采集记录仪有什么区别?
- `object.__new__`应用
- linux mysql 保护_linux – 在Puppet中,我如何保护密码变量(在这种情况下是MySQL密码)?...
- Linux-apache的编译安装1
- python为什么会出现无响应怎么办_python定时检测无响应进程并重启的实例代码
- UE4在VR模式下使用3D控件
- NamedParameterJdbcTemplate传参的n种写法
- A-PDF All to MP3 Converter 2.0.0 (.wav) Buffer Overflow Exploit 分析
- 想撩产品小姐姐?你必须学会的这篇产品经理必读文章,如何构建电商产品认知体系?
- 我的计算机老师500,我的老师_作文500字_描写人物的作文_第一范文网
- 安卓集成Google登录并进一步获取性别生日手机号等信息
- 认识很浅的云南最后的秘境
- win10-SW2016工程图关联零件属性链接操作
- JS打开模态窗口showModalDialog
- 推荐丨t.cn/…、dwz.cn/…、url.cn/… 等短网址链接的还原工具
- AVplayer断网播放出错时player的duration、playableDuration、totalTime