本文整理汇总了Golang中github.com/tsuna/gohbase/hrpc.Families函数的典型用法代码示例。如果您正苦于以下问题:Golang Families函数的具体用法?Golang Families怎么用?Golang Families使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Families函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Scan
// Scan retrieves the values specified in families from the given range.
func (c *Client) Scan(s *hrpc.Scan) ([]*pb.Result, error) {
var results []*pb.Result
var scanres *pb.ScanResponse
var rpc *hrpc.Scan
ctx := s.GetContext()
table := s.Table()
families := s.GetFamilies()
filters := s.GetFilter()
startRow := s.GetStartRow()
stopRow := s.GetStopRow()
for {
// Make a new Scan RPC for this region
if rpc == nil {
// If it's the first region, just begin at the given startRow
rpc, _ = hrpc.NewScanRange(ctx, table, startRow, stopRow, hrpc.Families(families), hrpc.Filters(filters))
} else {
// If it's not the first region, we want to start at whatever the
// last region's StopKey was
rpc, _ = hrpc.NewScanRange(ctx, table, rpc.GetRegionStop(), stopRow, hrpc.Families(families), hrpc.Filters(filters))
}
res, err := c.sendRPC(rpc)
if err != nil {
return nil, err
}
scanres = res.(*pb.ScanResponse)
results = append(results, scanres.Results...)
// TODO: The more_results field of the ScanResponse object was always
// true, so we should figure out if there's a better way to know when
// to move on to the next region than making an extra request and
// seeing if there were no results
for len(scanres.Results) != 0 {
rpc = hrpc.NewScanFromID(ctx, table, *scanres.ScannerId, rpc.Key())
res, err = c.sendRPC(rpc)
if err != nil {
return nil, err
}
scanres = res.(*pb.ScanResponse)
results = append(results, scanres.Results...)
}
rpc = hrpc.NewCloseFromID(ctx, table, *scanres.ScannerId, rpc.Key())
if err != nil {
return nil, err
}
res, err = c.sendRPC(rpc)
// Check to see if this region is the last we should scan (either
// because (1) it's the last region or (3) because its stop_key is
// greater than or equal to the stop_key of this scanner provided
// that (2) we're not trying to scan until the end of the table).
// (1) (2) (3)
if len(rpc.GetRegionStop()) == 0 || (len(stopRow) != 0 && bytes.Compare(stopRow, rpc.GetRegionStop()) <= 0) {
return results, nil
}
}
}
示例2: TestGetTimeRangeVersions
func TestGetTimeRangeVersions(t *testing.T) {
key := "TestGetTimeRangeVersions"
c := gohbase.NewClient(*host)
err := insertKeyValue(c, key, "cf", []byte("1"), hrpc.Timestamp(time.Unix(0, 50*1e6)))
if err != nil {
t.Fatalf("Put failed: %s", err)
}
err = insertKeyValue(c, key, "cf", []byte("1"), hrpc.Timestamp(time.Unix(0, 51*1e6)))
if err != nil {
t.Fatalf("Put failed: %s", err)
}
err = insertKeyValue(c, key, "cf", []byte("1"), hrpc.Timestamp(time.Unix(0, 49*1e6)))
if err != nil {
t.Fatalf("Put failed: %s", err)
}
var maxVersions uint32 = 2
get, err := hrpc.NewGetStr(context.Background(), table, key,
hrpc.Families(map[string][]string{"cf": nil}), hrpc.TimeRange(time.Unix(0, 0),
time.Unix(0, 51*1e6)), hrpc.MaxVersions(maxVersions))
rsp, err := c.Get(get)
if err != nil {
t.Fatalf("Get failed: %s", err)
}
if uint32(len(rsp.Cells)) != maxVersions {
t.Fatalf("Expected versions: %d, Got versions: %d", maxVersions, len(rsp.Cells))
}
getTs1 := *rsp.Cells[0].Timestamp
if getTs1 != 50 {
t.Errorf("Timestamps are not the same. Expected Time: %v, Got Time: %v",
50, getTs1)
}
getTs2 := *rsp.Cells[1].Timestamp
if getTs2 != 49 {
t.Errorf("Timestamps are not the same. Expected Time: %v, Got Time: %v",
49, getTs2)
}
// get with no versions set
get, err = hrpc.NewGetStr(context.Background(), table, key,
hrpc.Families(map[string][]string{"cf": nil}), hrpc.TimeRange(time.Unix(0, 0),
time.Unix(0, 51*1e6)))
rsp, err = c.Get(get)
if err != nil {
t.Fatalf("Get failed: %s", err)
}
if uint32(len(rsp.Cells)) != 1 {
t.Fatalf("Expected versions: %d, Got versions: %d", 1, len(rsp.Cells))
}
getTs1 = *rsp.Cells[0].Timestamp
if getTs1 != 50 {
t.Errorf("Timestamps are not the same. Expected Time: %v, Got Time: %v",
50, getTs1)
}
}
示例3: TestMultiplePutsGetsSequentially
func TestMultiplePutsGetsSequentially(t *testing.T) {
const num_ops = 100
keyPrefix := "row3"
headers := map[string][]string{"cf": nil}
c := gohbase.NewClient(*host)
err := performNPuts(keyPrefix, num_ops)
if err != nil {
t.Errorf("Put returned an error: %v", err)
}
for i := num_ops - 1; i >= 0; i-- {
key := keyPrefix + fmt.Sprintf("%d", i)
get, err := hrpc.NewGetStr(context.Background(), table, key, hrpc.Families(headers))
rsp, err := c.Get(get)
if err != nil {
t.Errorf("Get returned an error: %v", err)
}
if len(rsp.Result.Cell) != 1 {
t.Errorf("Incorrect number of cells returned by Get: %d", len(rsp.Result.Cell))
}
rsp_value := rsp.Result.Cell[0].GetValue()
if !bytes.Equal(rsp_value, []byte(fmt.Sprintf("%d", i))) {
t.Errorf("Get returned an incorrect result. Expected: %v, Got: %v",
[]byte(fmt.Sprintf("%d", i)), rsp_value)
}
}
}
示例4: TestPutMultipleCells
func TestPutMultipleCells(t *testing.T) {
key := "row2.5"
values := map[string]map[string][]byte{"cf": map[string][]byte{}, "cf2": map[string][]byte{}}
values["cf"]["a"] = []byte("a")
values["cf"]["b"] = []byte("b")
values["cf2"]["a"] = []byte("a")
c := gohbase.NewClient(*host)
putRequest, err := hrpc.NewPutStr(context.Background(), table, key, values)
_, err = c.Put(putRequest)
if err != nil {
t.Errorf("Put returned an error: %v", err)
}
families := map[string][]string{"cf": nil, "cf2": nil}
get, err := hrpc.NewGetStr(context.Background(), table, key, hrpc.Families(families))
rsp, err := c.Get(get)
if err != nil {
t.Errorf("Get returned an error: %v", err)
}
cells := rsp.GetResult().Cell
if len(cells) != 3 {
t.Errorf("Get expected 3 cells. Received: %d", len(cells))
}
for _, cell := range cells {
if !bytes.Equal(cell.GetQualifier(), cell.GetValue()) {
t.Errorf("Get returned an incorrect result. Expected: %v, Received: %v",
cell.GetQualifier(), cell.GetValue())
}
}
}
示例5: TestDeleteTimestamp
func TestDeleteTimestamp(t *testing.T) {
key := "TestDeleteTimestamp"
c := gohbase.NewClient(*host)
var putTs uint64 = 50
timestamp := time.Unix(0, int64(putTs*1e6))
err := insertKeyValue(c, key, "cf", []byte("1"), hrpc.Timestamp(timestamp))
if err != nil {
t.Fatalf("Put failed: %s", err)
}
deleteRequest, err := hrpc.NewDelStr(context.Background(), table, key,
map[string]map[string][]byte{"cf": map[string][]byte{"a": nil}},
hrpc.Timestamp(timestamp))
_, err = c.Delete(deleteRequest)
if err != nil {
t.Fatalf("Delete failed: %s", err)
}
get, err := hrpc.NewGetStr(context.Background(), table, key,
hrpc.Families(map[string][]string{"cf": nil}))
rsp, err := c.Get(get)
if err != nil {
t.Fatalf("Get failed: %s", err)
}
if len(rsp.Cells) != 0 {
t.Errorf("Timestamp wasn't deleted, get result length: %d", len(rsp.Cells))
}
}
示例6: TestChangingRegionServers
// Note: This function currently causes an infinite loop in the client throwing the error -
// 2015/06/19 14:34:11 Encountered an error while reading: Failed to read from the RS: EOF
func TestChangingRegionServers(t *testing.T) {
key := "row8"
val := []byte("1")
headers := map[string][]string{"cf": nil}
if host == nil {
t.Fatal("Host is not set!")
}
c := gohbase.NewClient(*host)
err := insertKeyValue(c, key, "cf", val)
if err != nil {
t.Errorf("Put returned an error: %v", err)
}
// RegionServer 1 hosts all the current regions.
// Now launch servers 2,3
test.LaunchRegionServers([]string{"2", "3"})
// Now (gracefully) stop servers 1,2.
// All regions should now be on server 3.
test.StopRegionServers([]string{"1", "2"})
get, err := hrpc.NewGetStr(context.Background(), table, key, hrpc.Families(headers))
rsp, err := c.Get(get)
if err != nil {
t.Errorf("Get returned an error: %v", err)
}
rsp_value := rsp.Result.Cell[0].GetValue()
if !bytes.Equal(rsp_value, val) {
t.Errorf("Get returned an incorrect result. Expected: %v, Received: %v",
val, rsp_value)
}
// Clean up by re-launching RS1 and closing RS3
test.LaunchRegionServers([]string{"1"})
test.StopRegionServers([]string{"3"})
}
示例7: TestGetMultipleCells
func TestGetMultipleCells(t *testing.T) {
key := "row1.75"
c := gohbase.NewClient(*host, gohbase.FlushInterval(time.Millisecond*2))
err := insertKeyValue(c, key, "cf", []byte("cf"))
if err != nil {
t.Errorf("Put returned an error: %v", err)
}
err = insertKeyValue(c, key, "cf2", []byte("cf2"))
if err != nil {
t.Errorf("Put returned an error: %v", err)
}
families := map[string][]string{"cf": nil, "cf2": nil}
get, err := hrpc.NewGetStr(context.Background(), table, key, hrpc.Families(families))
rsp, err := c.Get(get)
cells := rsp.GetResult().Cell
num_results := len(cells)
if num_results != 2 {
t.Errorf("Get expected 2 cells. Received: %d", num_results)
}
for _, cell := range cells {
if !bytes.Equal(cell.GetFamily(), cell.GetValue()) {
t.Errorf("Get returned an incorrect result. Expected: %v, Received: %v",
cell.GetFamily(), cell.GetValue())
}
}
}
示例8: TestGet
func TestGet(t *testing.T) {
key := "row1"
val := []byte("1")
headers := map[string][]string{"cf": nil}
if host == nil {
t.Fatal("Host is not set!")
}
c := gohbase.NewClient(*host)
err := insertKeyValue(c, key, "cf", val)
if err != nil {
t.Errorf("Put returned an error: %v", err)
}
get, err := hrpc.NewGetStr(context.Background(), table, key, hrpc.Families(headers))
if err != nil {
t.Fatalf("Failed to create Get request: %s", err)
}
rsp, err := c.Get(get)
if err != nil {
t.Errorf("Get returned an error: %v", err)
}
rsp_value := rsp.Result.Cell[0].GetValue()
if !bytes.Equal(rsp_value, val) {
t.Errorf("Get returned an incorrect result. Expected: %v, Got: %v",
val, rsp_value)
}
get.ExistsOnly()
rsp, err = c.Get(get)
if err != nil {
t.Errorf("Get returned an error: %v", err)
} else if !*rsp.Result.Exists {
t.Error("Get claimed that our row didn't exist")
}
ctx, _ := context.WithTimeout(context.Background(), 0)
get, err = hrpc.NewGetStr(ctx, table, key, hrpc.Families(headers))
if err != nil {
t.Fatalf("Failed to create Get request: %s", err)
}
_, err = c.Get(get)
if err != gohbase.ErrDeadline {
t.Errorf("Get ignored the deadline")
}
}
示例9: TestTimeRangeError
func TestTimeRangeError(t *testing.T) {
key := "TestTimeRangeError"
table := "test"
_, err := hrpc.NewGetStr(context.Background(), table, key,
hrpc.Families(map[string][]string{"cf": nil}), hrpc.TimeRange(time.Unix(51, 0),
time.Unix(51, 0)))
expErr := "'from' timestamp (51000ms) is greater or equal to 'to' timestamp (51000ms)"
if err.Error() != expErr {
t.Errorf("Expected error: %s, Got error: %s", expErr, err)
}
_, err = hrpc.NewGetStr(context.Background(), table, key,
hrpc.Families(map[string][]string{"cf": nil}), hrpc.TimeRange(time.Unix(52, 0),
time.Unix(51, 0)))
expErr = "'from' timestamp (52000ms) is greater or equal to 'to' timestamp (51000ms)"
if err.Error() != expErr {
t.Errorf("Expected error: %s, Got error: %s", expErr, err)
}
}
示例10: TestNewScan
func TestNewScan(t *testing.T) {
ctx := context.Background()
table := "test"
tableb := []byte(table)
fam := make(map[string][]string)
fam["info"] = []string{"c1"}
filter1 := filter.NewFirstKeyOnlyFilter()
start := "0"
stop := "100"
startb := []byte("0")
stopb := []byte("100")
scan, err := hrpc.NewScan(ctx, tableb)
if err != nil || !confirmScanAttributes(scan, ctx, tableb, nil, nil, nil, nil) {
t.Errorf("Scan1 didn't set attributes correctly.")
}
scan, err = hrpc.NewScanRange(ctx, tableb, startb, stopb)
if err != nil || !confirmScanAttributes(scan, ctx, tableb, startb, stopb, nil, nil) {
t.Errorf("Scan2 didn't set attributes correctly.")
}
scan, err = hrpc.NewScanStr(ctx, table)
if err != nil || !confirmScanAttributes(scan, ctx, tableb, nil, nil, nil, nil) {
t.Errorf("Scan3 didn't set attributes correctly.")
}
scan, err = hrpc.NewScanRangeStr(ctx, table, start, stop)
if err != nil || !confirmScanAttributes(scan, ctx, tableb, startb, stopb, nil, nil) {
t.Errorf("Scan4 didn't set attributes correctly.")
}
scan, err = hrpc.NewScanRange(ctx, tableb, startb, stopb, hrpc.Families(fam),
hrpc.Filters(filter1))
if err != nil || !confirmScanAttributes(scan, ctx, tableb, startb, stopb, fam, filter1) {
t.Errorf("Scan5 didn't set attributes correctly.")
}
scan, err = hrpc.NewScan(ctx, tableb, hrpc.Filters(filter1), hrpc.Families(fam))
if err != nil || !confirmScanAttributes(scan, ctx, tableb, nil, nil, fam, filter1) {
t.Errorf("Scan6 didn't set attributes correctly.")
}
}
示例11: TestNewGet
func TestNewGet(t *testing.T) {
ctx := context.Background()
table := "test"
tableb := []byte(table)
key := "45"
keyb := []byte(key)
fam := make(map[string][]string)
fam["info"] = []string{"c1"}
filter1 := filter.NewFirstKeyOnlyFilter()
get, err := hrpc.NewGet(ctx, tableb, keyb)
if err != nil || !confirmGetAttributes(get, ctx, tableb, keyb, nil, nil) {
t.Errorf("Get1 didn't set attributes correctly.")
}
get, err = hrpc.NewGetStr(ctx, table, key)
if err != nil || !confirmGetAttributes(get, ctx, tableb, keyb, nil, nil) {
t.Errorf("Get2 didn't set attributes correctly.")
}
get, err = hrpc.NewGet(ctx, tableb, keyb, hrpc.Families(fam))
if err != nil || !confirmGetAttributes(get, ctx, tableb, keyb, fam, nil) {
t.Errorf("Get3 didn't set attributes correctly.")
}
get, err = hrpc.NewGet(ctx, tableb, keyb, hrpc.Filters(filter1))
if err != nil || !confirmGetAttributes(get, ctx, tableb, keyb, nil, filter1) {
t.Errorf("Get4 didn't set attributes correctly.")
}
get, err = hrpc.NewGet(ctx, tableb, keyb, hrpc.Filters(filter1), hrpc.Families(fam))
if err != nil || !confirmGetAttributes(get, ctx, tableb, keyb, fam, filter1) {
t.Errorf("Get5 didn't set attributes correctly.")
}
get, err = hrpc.NewGet(ctx, tableb, keyb, hrpc.Filters(filter1))
err = hrpc.Families(fam)(get)
if err != nil || !confirmGetAttributes(get, ctx, tableb, keyb, fam, filter1) {
t.Errorf("Get6 didn't set attributes correctly.")
}
}
示例12: BenchmarkGet
func BenchmarkGet(b *testing.B) {
b.ReportAllocs()
keyPrefix := "row10"
err := performNPuts(keyPrefix, b.N)
if err != nil {
b.Errorf("Put returned an error: %v", err)
}
c := gohbase.NewClient(*host)
b.ResetTimer()
headers := map[string][]string{"cf": nil}
for i := 0; i < b.N; i++ {
key := keyPrefix + fmt.Sprintf("%d", i)
get, _ := hrpc.NewGetStr(context.Background(), table, key, hrpc.Families(headers))
c.Get(get)
}
}
示例13: TestGetBadColumnFamily
func TestGetBadColumnFamily(t *testing.T) {
key := "row1.625"
c := gohbase.NewClient(*host)
err := insertKeyValue(c, key, "cf", []byte("Bad!"))
if err != nil {
t.Errorf("Put returned an error: %v", err)
}
families := map[string][]string{"badcf": nil}
get, err := hrpc.NewGetStr(context.Background(), table, key, hrpc.Families(families))
rsp, err := c.Get(get)
if err == nil {
t.Errorf("Get didn't return an error! (It should have)")
}
if rsp.GetResult() != nil {
t.Errorf("Get expected no result. Received: %v", rsp.GetResult())
}
}
示例14: locateRegion
// Locates the region in which the given row key for the given table is.
func (c *Client) locateRegion(ctx context.Context,
table, key []byte) (*regioninfo.Info, string, uint16, error) {
metaKey := createRegionSearchKey(table, key)
rpc, err := hrpc.NewGetBefore(ctx, metaTableName, metaKey, hrpc.Families(infoFamily))
if err != nil {
return nil, "", 0, err
}
rpc.SetRegion(c.metaRegionInfo)
resp, err := c.sendRPC(rpc)
if err != nil {
ch := c.metaRegionInfo.GetAvailabilityChan()
if ch != nil {
select {
case <-ch:
return c.locateRegion(ctx, table, key)
case <-rpc.GetContext().Done():
return nil, "", 0, ErrDeadline
}
} else {
return nil, "", 0, err
}
}
metaRow := resp.(*pb.GetResponse)
if metaRow.Result == nil {
return nil, "", 0, TableNotFound
}
reg, host, port, err := c.parseMetaTableResponse(metaRow)
if err != nil {
return nil, "", 0, err
}
if !bytes.Equal(table, reg.Table) {
// This would indicate a bug in HBase.
return nil, "", 0, fmt.Errorf("WTF: Meta returned an entry for the wrong table!"+
" Looked up table=%q key=%q got region=%s", table, key, reg)
} else if len(reg.StopKey) != 0 &&
bytes.Compare(key, reg.StopKey) >= 0 {
// This would indicate a hole in the meta table.
return nil, "", 0, fmt.Errorf("WTF: Meta returned an entry for the wrong region!"+
" Looked up table=%q key=%q got region=%s", table, key, reg)
}
return reg, host, port, nil
}
示例15: TestGetDoesntExist
func TestGetDoesntExist(t *testing.T) {
key := "row1.5"
c := gohbase.NewClient(*host)
headers := map[string][]string{"cf": nil}
get, err := hrpc.NewGetStr(context.Background(), table, key, hrpc.Families(headers))
rsp, err := c.Get(get)
if err != nil {
t.Errorf("Get returned an error: %v", err)
} else if results := len(rsp.GetResult().Cell); results != 0 {
t.Errorf("Get expected 0 cells. Received: %d", results)
}
get.ExistsOnly()
rsp, err = c.Get(get)
if err != nil {
t.Errorf("Get returned an error: %v", err)
} else if *rsp.Result.Exists {
t.Error("Get claimed that our non-existent row exists")
}
}