Pig的优点之一就是,操作HDFS文件系统特别快!我们知道,直接使用Hadoop自带的dfs命令操作HDFS文件系统,不管是查看目录下的内容,或者是打开一个文件,亦或者是上传和下载文件,都慢的要死。因此可选的替代方案之一就是使用Pig来操作HDFS文件系统。本节就来介绍一下Pig操作HDFS文件系统常用的命令。
1.ls命令
grunt> ls /
hdfs://bigdata:9000/hbase <dir>
hdfs://bigdata:9000/input <dir>
hdfs://bigdata:9000/output <dir>
hdfs://bigdata:9000/tmp <dir>
hdfs://bigdata:9000/user <dir>
2.pwd命令
grunt> pwd
hdfs://bigdata:9000/user/root
3.cd命令
grunt> cd /input
grunt> pwd
hdfs://bigdata:9000/input
4.mkdir命令
grunt> pwd
hdfs://bigdata:9000/
grunt> mkdir pigtest
grunt> cd pigtest
5.cat命令
grunt> cat /input/data.txt
1 Tom 21
2 Jack 23
3 Mary 20
6.cp命令
grunt> cp /input/data.txt /pigtest
grunt> cat /pigtest/data.txt
1 Tom 21
2 Jack 23
3 Mary 20
7.mv命令
grunt> ls /input/data.txt
hdfs://bigdata:9000/input/data.txt<r 1> 29
grunt> mv /input/data.txt /pigtest
grunt> ls /input/data.txt
2018-09-24 17:17:12,516 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 2997: Encountered IOException. File or directory /input/data.txt does not exist.
Details at logfile: /root/pig_1537779679068.log
grunt> ls /pigtest
hdfs://bigdata:9000/pigtest/data.txt<r 1> 29
8.rm命令
grunt> rm /pigtest/data.txt
2018-09-24 17:15:32,392 [main] INFO org.apache.pig.tools.grunt.GruntParser - Waited 0ms to delete file
grunt> ls /pigtest
grunt>
9.rmf命令
grunt> rmf /pigtest
2018-09-24 17:17:55,539 [main] INFO org.apache.pig.tools.grunt.GruntParser - Waited 0ms to delete file
grunt> ls /pigtest
2018-09-24 17:18:19,540 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 2997: Encountered IOException. File or directory /pigtest does not exist.
Details at logfile: /root/pig_1537779679068.log
10.aliases命令
查看别名:
grunt> aliases
aliases: []
11.copyFromLocal命令
grunt> copyFromLocal /root/tools/pig-0.17.0.tar.gz /input
grunt> ls /input
hdfs://bigdata:9000/input/pig-0.17.0.tar.gz<r 1> 230606579
从本地文件系统上传数据到HDFS文件系统
12.copyToLocal命令
grunt> copyToLocal /input/pig-0.17.0.tar.gz /root/output
[root@bigdata ~]# ls /root/output/pig-0.17.0.tar.gz
/root/output/pig-0.17.0.tar.gz
从HDFS文件系统下载数据到本地文件系统
13.fs命令
fs命令用于在pig脚本或者Grunt shell中调用hdfs中的命令,格式如下:
fs subcommand subcommand_parameters
示例1:创建目录
fs -mkdir /tmp
示例2:复制文件
fs -copyFromLocal source-file destination-file
示例3:列出文件
fs -ls path
14.sh命令
sh命令用于从pig脚本或者Grunt shell中调用Shell命令(在0.8版本之后才有),格式如下:
sh subcommand subcommand_parameters;
注意只有真正的程序才可以从sh命令中运行,像<cd>命令不是程序而是shell环境的一部分,这样是不可以运行的,除非用户准确的调用了shell,像<bash cd>。
例如:
sh ls /;
用sh这个shell(sh一般指系统默认的shell,如bash,ksh,Csh等)来解释和运行脚本。