1 数据提供
为了保证实践的真实性,本章为读者提供了一个较大的数据文件,即sogou.500w.utf8,该文件是大数据领域很有名的一个供研究用的数据文件,内容是sogou网络访问日志数据,该文件被众多研究和开发人员所采用。
找到sogou.500w.utf8文件,将其复制到Master的“/home/csu/resources/”目录(或者读者自己的任意目录)下。以下的大部分操作均围绕该数据文件进行。
2 查看数据
less sogou.500w.utf8
wc -l sogou.500w.utf8
按下Enter键后系统显示“5000000 sogou.500w.utf8”,可见文件确实有500万行。Linux中“wc”命令的功能是统计指定文件中的行数、字数、字节数,并将统计结果显示输出。参数“-l”表示统计行数,“-w”表示统计字数,“-c”表示统计字节数。
head -1000 sogou.500w.utf8 >sogou.1000.utf8
按下Enter键后可得到一个有1000行数据的文件sogou.1000.utf8(文件名由用户自己决定,可以是任意的名字,如sogou.demo)。读者也可以查看一下新文件的内容或行数。
3 数据扩展
很多时候用户希望扩展现有文件,例如增加新的字段,以便容纳更多的内容。下面我们就来扩展sogou.500w.utf8文件,增加年、月、日、小时4个新字段,扩展后的文件就有10个字段了。
#!/bin/bash #infile=/data/sogou-data/sogou.500w.utf8 infile=$1 #outfile=/data/sogou-data/sogou.500w.utf8.final outfile=$2 awk -F '\t' '{print $0"\t"substr($1,0,4)"\t"substr($1,4,2)"\t"substr($1,6,2)"\t"substr($1,8,2)}' $infile > $outfile
./sogou-log-extend.sh sogou.500w.utf8 sogou.500w.utf8.ext
less sogou.500w.utf8.ext
4 数据过滤
#!/bin/bash #infile=/data/sogou-data/sogou.500w.utf8 infile=$1 #outfile=/data/sogou-data/sogou.500w.utf8.final outfile=$2 awk -F"\t" '{if($2 != "" && $3 != "" && $2 != " " && $3 != " ") print $0}' $infile > $outfile
5 数据上传
由于要在Hadoop大数据平台上工作,所以需要将上述数据文件上传到HDFS中。首先确保已经启动了Hadoop,接下来在HDFS上创建“/sogou”目录,执行“hadoop fs -mkdir /sogou”命令;最后创建“20211103”子目录,命令是“hadoop fs –mkdir /sogou/20211103”。
hadoop fs -put ~/resources/sogou.500w.utf8 /sogou/20211103/
hadoop fs -mkdir /sogou_ext
hadoop fs -mkdir /sogou_ext/20211103
hadoop fs -put ~/resources/sogou.500w.utf8.flt /sogou_ext/20211103/