private TScan PrepareScan() { var scan = new TScan { Reversed = _isReversed }; if (_filter != null) { _filter.Validate(); var filter = _filter.Build(); Debug.WriteLine($"Executed Filter: {filter}"); scan.FilterString = filter.GetBytesOrDefault(); } if (!_startKey.IsNullOrEmpty()) { scan.StartRow = _startKey.GetBytes(); } if (!_endKey.IsNullOrEmpty()) { scan.StopRow = _endKey.GetBytes(); } if (_columns != null) { scan.Columns = _columns.Distinct().Select(x => x.GetBytes()).ToList(); } return(scan); }
/// <summary> /// 通过Filter进行数据的Scanner /// </summary> /// <param name="tablename"></param> /// <param name="filterString"></param> static void GetDataFromHBaseThroughFilter(string tablename, string filterString, List <byte[]> _cols) { TScan _scan = new TScan(); _scan.FilterString = Encoding.UTF8.GetBytes(filterString); _scan.Columns = _cols; transport.Open(); int ScannerID = client.scannerOpenWithScan(Encoding.UTF8.GetBytes(tablename), _scan, null); List <TRowResult> reslut = client.scannerGetList(ScannerID, 100); Console.WriteLine(reslut.Count); foreach (var key in reslut) { Console.WriteLine(Encoding.UTF8.GetString(key.Row)); foreach (var k in key.Columns) { Console.Write(Encoding.UTF8.GetString(k.Key) + "\t"); Console.WriteLine(Encoding.UTF8.GetString(k.Value.Value)); Console.WriteLine("++++++++++++++++++++++++++++++++++++++"); } } }
public int scannerOpenWithScan(byte[] tableName, TScan scan, Dictionary <byte[], byte[]> attributes) { return(_connection.scannerOpenWithScan(tableName, scan, attributes)); }
private void button2_Click(object sender, EventArgs e) { TScan t = new TScan(settings); t.Show(); }
public IAsyncResult send_scannerOpenWithScan(AsyncCallback callback, object state, byte[] tableName, TScan scan, Dictionary<byte[], byte[]> attributes)
public void send_scannerOpenWithScan(byte[] tableName, TScan scan, Dictionary<byte[], byte[]> attributes) #endif { oprot_.WriteMessageBegin(new TMessage("scannerOpenWithScan", TMessageType.Call, seqid_)); scannerOpenWithScan_args args = new scannerOpenWithScan_args(); args.TableName = tableName; args.Scan = scan; args.Attributes = attributes; args.Write(oprot_); oprot_.WriteMessageEnd(); #if SILVERLIGHT return oprot_.Transport.BeginFlush(callback, state); #else oprot_.Transport.Flush(); #endif }
/// <summary> /// Get a scanner on the current table, using the Scan instance /// for the scan parameters. /// </summary> /// <param name="tableName">name of table</param> /// <param name="scan">Scan instance</param> /// <param name="attributes">Scan attributes</param> public int scannerOpenWithScan(byte[] tableName, TScan scan, Dictionary<byte[], byte[]> attributes) { #if !SILVERLIGHT send_scannerOpenWithScan(tableName, scan, attributes); return recv_scannerOpenWithScan(); #else var asyncResult = Begin_scannerOpenWithScan(null, null, tableName, scan, attributes); return End_scannerOpenWithScan(asyncResult); #endif }
public IAsyncResult Begin_scannerOpenWithScan(AsyncCallback callback, object state, byte[] tableName, TScan scan, Dictionary<byte[], byte[]> attributes) { return send_scannerOpenWithScan(callback, state, tableName, scan, attributes); }
public void Read (TProtocol iprot) { TField field; iprot.ReadStructBegin(); while (true) { field = iprot.ReadFieldBegin(); if (field.Type == TType.Stop) { break; } switch (field.ID) { case 1: if (field.Type == TType.String) { TableName = iprot.ReadBinary(); } else { TProtocolUtil.Skip(iprot, field.Type); } break; case 2: if (field.Type == TType.Struct) { Scan = new TScan(); Scan.Read(iprot); } else { TProtocolUtil.Skip(iprot, field.Type); } break; case 3: if (field.Type == TType.Map) { { Attributes = new Dictionary<byte[], byte[]>(); TMap _map233 = iprot.ReadMapBegin(); for( int _i234 = 0; _i234 < _map233.Count; ++_i234) { byte[] _key235; byte[] _val236; _key235 = iprot.ReadBinary(); _val236 = iprot.ReadBinary(); Attributes[_key235] = _val236; } iprot.ReadMapEnd(); } } else { TProtocolUtil.Skip(iprot, field.Type); } break; default: TProtocolUtil.Skip(iprot, field.Type); break; } iprot.ReadFieldEnd(); } iprot.ReadStructEnd(); }
protected void 获取数据_Click(object sender, EventArgs e) { lab获取数据.Text = string.Empty; //请在步骤2输入表名 if (string.IsNullOrEmpty(txt表名.Text)) { lab获取数据.Text = "请在步骤2输入表名"; return; } string table = txt表名.Text; TTransport transport = null; try { //192.168.2.111:60010 //实例化Socket连接 transport = new TSocket("192.168.2.111", 9090); //实例化一个协议对象 TProtocol tProtocol = new TBinaryProtocol(transport); //实例化一个Hbase的Client对象 var client = new Hbase.Client(tProtocol); //打开连接 transport.Open(); byte[] tableName = table.ToUTF8Bytes(); var scan = new TScan() { }; //读取数据 var id = client.scannerOpenWithScan(tableName, scan, new Dictionary <byte[], byte[]>()); //返回100条数据 var result2 = client.scannerGetList(id, 100); DataTable dt = new DataTable(); #region 创建列 dt.Columns.Add(new DataColumn() { ColumnName = "Rowid:Value", }); //创建表头 foreach (var item in result2) { //所有列 foreach (var xaa in item.Columns) { string col = xaa.Key.ToUTF8String(); //已经存在则跳过 if (dt.Columns.Contains(col)) { continue; } dt.Columns.Add(new DataColumn() { ColumnName = col, }); } } dt.Columns.Add(new DataColumn() { ColumnName = "SortedColumns:ColumnName", }); dt.Columns.Add(new DataColumn() { ColumnName = "SortedColumns:Value", }); dt.Columns.Add(new DataColumn() { ColumnName = "Rowid", }); #endregion foreach (var item in result2) { //创建行 var row = dt.NewRow(); //循环列的所有值 foreach (var xaa in item.Columns) { string col = xaa.Key.ToUTF8String(); row[col] = string.Format("{0}", xaa.Value.Value.ToUTF8String()); } //这里有null的东西 if (item.SortedColumns != null) { //所有排序列 foreach (var xaac in item.SortedColumns) { string col = xaac.ColumnName.ToUTF8String(); row["SortedColumns:ColumnName"] = string.Format("{0}", col); row["SortedColumns:Value"] = string.Format("{0}", xaac.Cell.Value.ToUTF8String()); } } row["Rowid:Value"] = item.Row.ToUTF8String(); dt.Rows.Add(row); } gri获取数据.DataSource = dt; gri获取数据.DataBind(); } finally { if (transport != null) { transport.Close(); } } }
/// <summary> /// 用SCAN获取一行数据 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void Button7_Click(object sender, EventArgs e) { string table = "abc"; TTransport transport = null; try { //192.168.2.111:60010 //实例化Socket连接 transport = new TSocket("192.168.2.111", 9090); //实例化一个协议对象 TProtocol tProtocol = new TBinaryProtocol(transport); //实例化一个Hbase的Client对象 var client = new Hbase.Client(tProtocol); //打开连接 transport.Open(); byte[] tableName = table.ToUTF8Bytes(); var scan = new TScan() { }; //读取数据 var id = client.scannerOpenWithScan(tableName, scan, new Dictionary <byte[], byte[]>()); ///////////////////////////////////////////获取单行数据 var result2 = client.scannerGet(id); DataTable dt = new DataTable(); #region 创建列 dt.Columns.Add(new DataColumn() { ColumnName = "Rowid:Value", }); //创建表头 foreach (var item in result2) { //所有列 foreach (var xaa in item.Columns) { string col = xaa.Key.ToUTF8String(); dt.Columns.Add(new DataColumn() { ColumnName = col, }); } } dt.Columns.Add(new DataColumn() { ColumnName = "SortedColumns:ColumnName", }); dt.Columns.Add(new DataColumn() { ColumnName = "SortedColumns:Value", }); dt.Columns.Add(new DataColumn() { ColumnName = "Rowid", }); #endregion foreach (var item in result2) { //创建行 var row = dt.NewRow(); //循环列的所有值 foreach (var xaa in item.Columns) { string col = xaa.Key.ToUTF8String(); row[col] = string.Format("{0}", xaa.Value.Value.ToUTF8String()); } //这里有null的东西 if (item.SortedColumns != null) { //所有排序列 foreach (var xaac in item.SortedColumns) { string col = xaac.ColumnName.ToUTF8String(); row["SortedColumns:ColumnName"] = string.Format("{0}", col); row["SortedColumns:Value"] = string.Format("{0}", xaac.Cell.Value.ToUTF8String()); } } row["Rowid:Value"] = item.Row.ToUTF8String(); dt.Rows.Add(row); } GridView1.DataSource = dt; GridView1.DataBind(); } finally { if (transport != null) { transport.Close(); } } }