当前课程知识点:高级大数据系统 > Basics of Linux Data Processing > Manipulating Data on Linux > Video
好
我们刚刚介绍了在linux单机上
简单的去查看数据怎么办
我们用more
或者是我们用head这样的命令
我们可以简单的对行进行操作
通过cat和paste
对行和列进行一定的扩展
然后我们还看了一下
怎么样通过grep
对数据进行简单的一个搜索
我们可以搜索这个
原始文件中的特定的
这种模式的一些行
或者说对特定的这个行中
包含的正则表达式
进行一个匹配
那这是grep
那下面我们会介绍
另外一个简单的工具
叫做被awk
他可以来进行这个简单的
这种数据的这个分行
或者分列的一个操作
那我们来看在这个awk当中
实际上它是把数据当成了一个
表格类型的一个输入
那么这个表格就包含了
从第一列到第n列
那么它可以对这些列
进行一个操作
我们通过一个例子
先给大家展示一下
awk它具有这种能力
那么在这个例子当中
我们有一个文件叫做3.TXT
是我们用paste生成的
那么这个文件包含两列
那我们现在给大家一个例子
比如说我们想把这个两页的文件
又返回成单列了
比如说我们想把第二列
给重新输出到屏幕
我们应该怎么做
那这时候我们可以通过一个awk的print
就可以完成这样一个事情
那么print代表的含义是把
这个数据输出到屏幕
那么输出的是什么呢
$2给出的
就是输出的第二列
那么它运行的一个结果
是什么样呢
我们把文件名加上
他给出的这个运行结果
就是这个文件中的第二列
所以awk给了我们更加灵活的一个
在列级别进行数据操作的
这样一个办法
那么我们回到这个ppt
我们看看在linux中一些典型的
用法包含哪一些
那么第一个用法
就是说我们通过awk进行查找
那这边我们看到通过了
/a/这样的一个命令型查找
实际上它的一个
目标和刚刚grep
介绍的是一样的
我们在每一行当中去搜索
包含a大小写敏感的这样一个行
然后把$0给打印出来
$0和刚刚我们给
它的这个$2
其实类似的
只不过$0代表的
不是任何一列
而是说所有的列
也就是说整行
那我们发现
它把包含a的这个数据
全部输出到了屏幕上
那么awk还有一个方法
是对这个不同的行
进行一个格式化
我们看到在当前的这个例子当中
我们要awk
进行print
print$3和$4
并且他们中间加入了一个
这个制表符
比如说一个比较大的一个空格
那我们看它的确是在输出中
把这个这五行的
第二列和第三列
第三列和第四列
都输出到了屏幕上
那么输出了每个同学的
科目和他们的成绩
那我们再来看awk的一些典型应用
还包括哪一些
那么
在这个awk实际上我们是
可以嵌入一定的这个程序结构的
实际上它整个awk
是可以输入
比较复杂的一个程序
程序可以允许用户自定义变量
允许用户在里面
使用条件语句等等
那么我们这边通过一个简单的例子
让大家体会一下
那么在awk当中
我们首先使用了-a进行查找
也就是说
行中包含a的会被拿出来处理
如果包含a则执行大括号里面的这个语句
也就是说count进行++
那么这里的++和c++里面的
++是相同的含义
也就是说对cnt
进行+1的一个操作
然后当end之后进行一个打印
end就是说
当整个awk打所有的文件
跑完之后
他进行了一个操作
我们发现它要输出一个字符串
叫Count =
然后再把刚刚的这个
count的变量给输出来
那么简单的来理解
这句语句实际上是想要统计行数
那么有点像我们刚刚用grep
进行-c的一个操作
那么用这个awk
也可以把包含某一个pattern的
这样一个行数给统计出来
实际上我们很轻松就可以发现
awk可能做的远远不止统计行数
我们实际上如果把count ++
给换成count加上那个用户的成绩的话
我们就可以很容易的统计出
这五个同学
他们的这个考试的总分是多少分
我们也可以进一步算出他的平均分
也就是说这个count除了++以外
它实际上是可以进行任意的这个
我们允许的这种程序的运算
那么awk
还有一些其他的用途
比如说我们对数据
进行预处理的时候
可能想要把重复的行给去掉
那我们来看这个例子是怎么做的
那么这个代码是这样写的
在awk之后
它使用了一个感叹号
也就是逻辑非的意思
那么只有当这个逻辑
不成立的时候
才会对后面的语句进行执行
那么它的语句是什么
当整行不在一个array中
也就是说
这个行没有出现在这个array里面
这个array实际上是一个
类似于数组的一个结构
它在里面包含了一系列的这种字符串
那我们来看这个array
是怎么样把字符串添加进去的
我们发现
如果这个条件不成立的话
那么就会执行array
然后中括号$0
也就是说把$0加入到了
这个array里面去
那么再把这一行给打印出来
那么也就是说
整个逻辑是这样的
当他不在我们维护的
一个数组的这样一个
结构里面出现的时候
我们就会把这个
数据行输出到屏幕
同时把它加到数组里面
达到一个消去
重复行的一个目标
当然这种消去的方式
可能它的性能会不是特别的高
但是大家可以
对小型的这种数据进行一个处理
使用这样的一个模式
另外我们还能做什么呢
我们还可以在里面加一些条件的判断
比如说第二个例子
我们可以通过
对第三行和第四行
是不是完全一致进行判断
然后决定要不要输出
那这是awk对复杂的这种条件
进行判断的一个例子
那么还有我们可以对特别的
一些行进行打印
我们刚刚已经说到
我们可以打印一行
或者打印多行并且
以重新安排的这种行的
这样一个顺序来进行呈现
好
这是我们刚刚讲到的这个
awk它的一些方法
大家通过grep或者通过
awk加上grep
或者加上以前说过更早的
命令进行组合
实际上已经可以简单的
对这个linux下的
这种文本文件进行一定的处理
那么
我们介绍的单机上最后一个命令
叫做sort
sort实际上和他的名字一样
是对数据进行一个排序
比如说在PPT中的这个例子里
面我们可以对文件进行排序
然后把每一行按照
这种字母表的顺序排序
然后我们加上-R可以
得到一个反向的排序
然后我们还可以对特定的列进行排序
那么通过加上-K这样一个参数
我们通过演示给大家
更加直观的一个认识
那么同样我们
以这个1.txt为例
那么我们看到1.txt实际上
并不是完全排好的一个文件
这时候如果我们用sort
对1.txt进行操作的话
我们发现
最后一行被排到了第二行
因为它按照字母序的顺序进行排序
那么如果我们想反向排序
我们加上-R
我们发现把最后一行排到了
最前面达到一个反向排序的目标
那我们怎么样对数字进行排序呢
我们给3.txt作为例子
我们发现3.txt有两列
那么我们想对第二列
并且按照数字进行排序
实际上我们会用
两个参数的一个组合
第一个组合我们
会要求他对这个3.txt进行排序
我们在这里通过管道的方式
进行叠加
我们对它进行sort
sort我们需要它进行升序
所以我们不加-R
但是我们要求他进行-n
也就是说按照数字的方式进行排序
而不按照字母表的方式进行排序
那数字的方式进行排序
就会把这个数字按照从小到大
按照顺序的方式进行排序
我们要求指定的是K等于2
也就是说对第二列进行排序
那我们达到的效果就是这样
我们发现这个排序实际上
扩展到了其他的列
我们把1和a的这一列
输出到了最前面
那么这就是大家在sql里面
需要做的排序的
这样一个命令
而实际上我们的linux底下
也可以通过简单的命令进行一个
类似的操作
还是刚刚的那句话
希望大家能够把这些命令进行
有效的组合
然后达到一个对数据进行
相对比较复杂
并进行多样化处理的一个目标
-What is big data and what is big data system?
--Video
-Problems in big data systems?
--Video
-Overview of the course
--Video
-Principles of big data system design
--Video
-Manipulating Data on Linux
--Video
--Video
--Video
-Basics of Linux Data Processing--Manipulating Data
-Running Commands on a Single Machine
--Video
-Running Commands on a Single Machine--作业
-Using a Linux Cluster
--Video
-Using a Linux Cluster--作业
-Storage for Big Data Computing: Distributed file system
--Video
-Storage for Big Data Computing: Distributed file system--作业
-File system and GFS
--Video
-File system and GFS--作业
-Understanding HDFS using Legos
--Video
-Understanding HDFS using Legos--作业
-File System Implementation and DFS
--Video
--Video
-File System Implementation and DFS--作业
-What is MapReduce and why
--Video
-What is MapReduce and why
-Learn MapReduce by playing with cards
--Video
-Processing pattern
--Video
-Processing pattern--作业
-Hadoop
--Video
-Hadoop--作业
-Algorithms in MapReduce
--Video
-Algorithms in MapReduce--作业
-Tutorial
--Video
-Background
--Video
-Background--作业
-Spark
--Video
-Spark--作业
-Use Spark for data mining
--Video
-Use Spark for data mining--作业
-Spark data processing
--Video
-Spark data processing--作业
-Experiment in Spark
--Video
-Experiment in Spark--作业
-Introduction to streaming data processing
--Video
-Introduction to streaming data processing--作业
-Storm
--Video
--Video
--Video
-Storm--作业
-Spark streaming
--Video
--Video
-Spark streaming--作业
-NoSQL introduction
--Video
-NoSQL introduction--作业
-Common Advantages
--Video
-Common Advantages--作业
-Bigtable
--Video
-Bigtable--作业
-Master Startup
--Video
-Master Startup--作业
-HBase
--Video
-HBase--作业
-What is GraphDB and Graph data processing
--Video
-What is GraphDB and Graph data processing--作业
-Graph systems
--Video
-Graph systems
-Example of a GraphDB
--Video
-Example of a GraphDB--作业
-Mahout
--Video
-Mahout--作业
-Case Study: Recommendation
--Video
-Case Study: Recommendatio作业
-Recommendation in Mahout
--Video
-Recommendation in Mahout--作业