第五周----上课 Hbase shell
#hbase shell
进入 Hbase 的操作界面
- 创建表 : creat ‘表名称’ , ‘列名称1’,‘列名称2’,‘列名称n'
-添加记录: put ’表名称‘,’行名称‘,’列名称‘,’值‘
-查看记录: get '表名称’,‘行名称’
-删除记录: delete ‘表名称’,‘行名称’,‘列名称’
-删除一张表: 分布式数据库需要多步完成
1、 disable '表名称’
2、 drop ‘表名称’
-查看所有的记录: scan ’表名称‘
-查看某个表,某个列的所有数据: scan ’表名称‘,{’列名称‘}
一般操作:
1、 启动 Hbase #Hbase shell
2、 看有多少内容 > list
3、 看状态 > status
4、 Hbase 的版本 > version
5、 要处理增删改查的操作:
创建 > create ‘member','member_id','address','info'
查询 > describe 'member'
面向列族的,可以添加列族 > alter 'member','id'
修改一个列族 > alter 'member',{NAME=>'member_id',method=>'delete'} 删除一个列族 > delete 'member' ,' debugo','info:age'
查看列的信息 > get 'member','debugo','info:age'
删除整行信息 > deleteall 'member',’debugo‘
查看整行信息 > get ’member','debugo'
查看是不是被禁用 > is_enabled 'menber'
is_disabled 'member'
判断是不是存在表 > exists 'member'
删除表 >disbale 'member'
drop 'member'
9、插入数据 > put 'member' ,'debugo','id','11'
> put 'member' ,'debugo','info:age','27'
> put 'member'.'debugo','info:birthday','1987-04-04'
> put 'member'.'debugo','info:industry','it'
> put 'member'.'debugo','info:city','beijin'
......... 表 行 列族:列名称
表 行 列族:
10、 统计行数 > count ‘member’
11、获取一个ID的所有数据: > get 'member','sariel'
12、查询 一个ID 的一个列族中的所有信息 > get 'member','sariel','info‘
13、查询整个表格的所有信息 > scan ’member'
14、扫描整个列族 scan ‘member',{column=>'info'}
15、指定扫描整个列 scan ‘member',{column=>'info:birthday'}
对于 Hbase 中的 增 删 改 查 统计
create文件 delete记录 alter记录 list文件 count
put 记录 disable文件 get记录
drop文件 scan记录
status系统
version系统
describe记录
exists文件
hbase中没有rename,所以改表名要很复杂,重命名主要通过hbase的快照功能来实现。
-------------------------------------------------------------------------------------------------------------
10:30-11:15 休息 这一节:
https://pan.baidu.com/s/1u1B8fnMgVGJK5eZdoiXpqg 下载
scala-2.11.8.msi jdk-7windowx
安装
JAVA 环境变量设置
下载软件, 安装到C盘 prografile /java
目前学习 Scala 的软件, 安装和配置
Spark 的源码, 全部都是 Scala来写的。
Scala 也是面对函数的,面对对象的。
java 要写 200-300行 , 而 scala 只需要 2行, 也可以调取Java的接口。
Scala 语法 :
VAL 声明是不可变的变量,
VAR 声明是可变的变量。
DOS> scala> val content:String = "hello world"
val x,y =100
不可变的变量。
在 Scala中 一切都可以看作是对象。
Scala> a+b ======= a.+(b)
1 to 10 ======= 1.to(10) 这里的 。 指的就是对象
a func b ======= a.func(b)
val x = if (a>0) 1 else -1
val b =if (x>0) 1 esle "error" 这个数据类型不一致, 也可以
逻辑判断的结果赋值给变量,
val c = if (x>0) 1 else ()
for (i <- 0 to 5 ) println(i) 这样就可以打印出来。
for(i<- 0 unitl 10) println(i)
for (i <- 1 to 3; j<-1 to 3 if i!=j) {pringtln((10*i+j)+" " } 循环增加条件变量
for (i<-1 to 10 if i%2==0)yield i
for (i<-1 to 10)yield i%3
-------- 下午
流程控制
1、条件判断 val a = if (x>0) 1 else -1
val b = if (x>0) 1 else "error"
val c = if (x>0) 1 esle ()
2、for 循环 for (i <- 0 to 5 ) println(i)
for (i <- 0 until 10) println(i)
for (i <- 0 to 3;j <-1 to 3 if i != j ){pringln((10*i)+j)+" "}
for (i <-1 to 10 if i%2==0)yield i
for ( i <-1 to 10) yield i%3
这些是上午学习过的, 接下来,我们学习函数
def fun(x:int):int = X+1 这样就定义好了函数;
def fun(a:int,b:int=100)=a+b 默认参数的定义;
def sum(args : int*)={
var result = 0
for (i<-args) result +=i
result
}
def fun2 (x:int):unit=(
println(x)
}
没有返回值的函数。
def fac(n:int):int={if n <=0)1 else n*fac(n-1)
递归函数, 需要指定 输入的类型 以及 结果的类型。
注意:参数类型必须声明, 返回值类型可以不声明, 函数是递归的, 这必须声明返回值类型。
def fac(n:int):int= {
if (n<=0) 1 else n*fac(n-1)
}
scala 函数定义规则:
1、以 def 开头
2、参数类型必须指定,
3、返回值的类型可以不指定。
没有定义函数名字的函数, 这是匿名函数
(x:int)=>x+1
可以将这个没有名字的函数赋值给一个变量
val fun = (x:int) => x+1
接下来, 定义数组
val arr1 = new array[int](3) 定长数组
字符串数组
可以修改数组中的值
arr3(1)="storm" 可以修改数组3种的 1单元的值
变长数组
先要做这个 插件引入。
没有 new ,需要括号, 有new , 不需要括号。
增强for循环, 更加简洁
通过 yield 赋值给 e
求和 , 排序 , 最小值 , 取值,
正序
倒序
映射 Key val
两种方法的映射
取值:
末尾追加
删除
键值对的交换 , 得到 键和值 KEY - VAL 的前后交换
元组 , 不同类型的元素集合
生成大小写分片元组
------继续 , 面向对象的 类的定义
重载的构造器
有参和无参的构造器
接下来讲 :object
--------------------------------------------------------------------------
可以使用 APPLY 实现。
object 对象 与 apply() 方法
这个是 scala实现的 单一模式
这个是 伴生对象和单例模式结合起来的东西
样例类和模式匹配 , 这个是 scala独立的东西, 这个是可以用于模式匹配的。
样例对象是单例的, 也可以用于模式匹配。
类似与 java 中 switch-cash 的加强版。
case class user (name: string,psw:string){}
如下方式, 可以用于搜索引擎中, 是比较简单的
Option(T)类, 理解为一个容器
还有一些高级特性, 比如说 高阶函数, 等于是函数的函数。 比如:
def fun(f:double =>double)={
f(100)
}
fun(X:double)=>28*x
fun(sqrt_)
val fun:int => (int,int)={
x=>(x,x*2)
}
fun(100)
Val fun:(x:double)=》(double,Int)={
(x,y)=>(y,x)
}
Scala 中特有的 柯里化
例子:
def m(x:Int)=(y:int)=>x*y
Scala 中还有 隐式转换和隐式参数
其他:
包 的引入 import , private 都是 Scala的内容