Beispiel #1
0
        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));
 }
Beispiel #4
0
        private void button2_Click(object sender, EventArgs e)
        {
            TScan t = new TScan(settings);

            t.Show();
        }
Beispiel #5
0
 public IAsyncResult send_scannerOpenWithScan(AsyncCallback callback, object state, byte[] tableName, TScan scan, Dictionary<byte[], byte[]> attributes)
Beispiel #6
0
 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
 }
Beispiel #7
0
    /// <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
    }
Beispiel #8
0
 public IAsyncResult Begin_scannerOpenWithScan(AsyncCallback callback, object state, byte[] tableName, TScan scan, Dictionary<byte[], byte[]> attributes)
 {
   return send_scannerOpenWithScan(callback, state, tableName, scan, attributes);
 }
Beispiel #9
0
 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();
            }
        }
    }
Beispiel #11
0
    /// <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();
            }
        }
    }