第五周----上課 Hbase shell
#hbase shell
進入 Hbase 的操作界面
- 創(chuàng)建表 : creat ‘表名稱’ , ‘列名稱1’,‘列名稱2’,‘列名稱n'
-添加記錄: put ’表名稱‘,’行名稱‘,’列名稱‘,’值‘
-查看記錄: get '表名稱’,‘行名稱’
-刪除記錄: delete ‘表名稱’,‘行名稱’,‘列名稱’
-刪除一張表: 分布式數(shù)據(jù)庫需要多步完成
1、 disable '表名稱’
2、 drop ‘表名稱’
-查看所有的記錄: scan ’表名稱‘
-查看某個表,某個列的所有數(shù)據(jù): scan ’表名稱‘,{’列名稱‘}
一般操作:
1、 啟動 Hbase #Hbase shell
2、 看有多少內容 > list
3、 看狀態(tài) > status
4、 Hbase 的版本 > version
5、 要處理增刪改查的操作:
創(chuàng)建 > 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、插入數(shù)據(jù) > 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、 統(tǒng)計行數(shù) > count ‘member’
11、獲取一個ID的所有數(shù)據(jù): > get 'member','sariel'
12、查詢 一個ID 的一個列族中的所有信息 > get 'member','sariel','info‘
13、查詢整個表格的所有信息 > scan ’member'
14、掃描整個列族 scan ‘member',{column=>'info'}
15、指定掃描整個列 scan ‘member',{column=>'info:birthday'}
對于 Hbase 中的 增 刪 改 查 統(tǒng)計
create文件 delete記錄 alter記錄 list文件 count
put 記錄 disable文件 get記錄
drop文件 scan記錄
status系統(tǒng)
version系統(tǒng)
describe記錄
exists文件
hbase中沒有rename,所以改表名要很復雜,重命名主要通過hbase的快照功能來實現(xiàn)。
-------------------------------------------------------------------------------------------------------------
10:30-11:15 休息 這一節(jié):
https://pan.baidu.com/s/1u1B8fnMgVGJK5eZdoiXpqg 下載
scala-2.11.8.msi jdk-7windowx
安裝
JAVA 環(huán)境變量設置
下載軟件, 安裝到C盤 prografile /java
目前學習 Scala 的軟件, 安裝和配置
Spark 的源碼, 全部都是 Scala來寫的。
Scala 也是面對函數(shù)的,面對對象的。
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" 這個數(shù)據(jù)類型不一致, 也可以
邏輯判斷的結果賦值給變量,
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)+" " } 循環(huán)增加條件變量
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 循環(huán) 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
這些是上午學習過的, 接下來,我們學習函數(shù)
def fun(x:int):int = X+1 這樣就定義好了函數(shù);
def fun(a:int,b:int=100)=a+b 默認參數(shù)的定義;
def sum(args : int*)={
var result = 0
for (i<-args) result +=i
result
}
def fun2 (x:int):unit=(
println(x)
}
沒有返回值的函數(shù)。
def fac(n:int):int={if n <=0)1 else n*fac(n-1)
遞歸函數(shù), 需要指定 輸入的類型 以及 結果的類型。
注意:參數(shù)類型必須聲明, 返回值類型可以不聲明, 函數(shù)是遞歸的, 這必須聲明返回值類型。
def fac(n:int):int= {
if (n<=0) 1 else n*fac(n-1)
}
scala 函數(shù)定義規(guī)則:
1、以 def 開頭
2、參數(shù)類型必須指定,
3、返回值的類型可以不指定。
沒有定義函數(shù)名字的函數(shù), 這是匿名函數(shù)
(x:int)=>x+1
可以將這個沒有名字的函數(shù)賦值給一個變量
val fun = (x:int) => x+1
接下來, 定義數(shù)組
val arr1 = new array[int](3) 定長數(shù)組
字符串數(shù)組
可以修改數(shù)組中的值
arr3(1)="storm" 可以修改數(shù)組3種的 1單元的值
變長數(shù)組
先要做這個 插件引入。
沒有 new ,需要括號, 有new , 不需要括號。
增強for循環(huán), 更加簡潔
通過 yield 賦值給 e
求和 , 排序 , 最小值 , 取值,
正序
倒序
映射 Key val
兩種方法的映射
取值:
末尾追加
刪除
鍵值對的交換 , 得到 鍵和值 KEY - VAL 的前后交換
元組 , 不同類型的元素集合
生成大小寫分片元組
------繼續(xù) , 面向對象的 類的定義
重載的構造器
有參和無參的構造器
接下來講 :object
--------------------------------------------------------------------------
可以使用 APPLY 實現(xiàn)。
object 對象 與 apply() 方法
這個是 scala實現(xiàn)的 單一模式
這個是 伴生對象和單例模式結合起來的東西
樣例類和模式匹配 , 這個是 scala獨立的東西, 這個是可以用于模式匹配的。
樣例對象是單例的, 也可以用于模式匹配。
類似與 java 中 switch-cash 的加強版。
case class user (name: string,psw:string){}
如下方式, 可以用于搜索引擎中, 是比較簡單的
Option(T)類, 理解為一個容器
還有一些高級特性, 比如說 高階函數(shù), 等于是函數(shù)的函數(shù)。 比如:
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 中還有 隱式轉換和隱式參數(shù)
其他:
包 的引入 import , private 都是 Scala的內容