zoukankan      html  css  js  c++  java
  • hbase thrift 定义

    /*
     * Licensed to the Apache Software Foundation (ASF) under one
     * or more contributor license agreements.  See the NOTICE file
     * distributed with this work for additional information
     * regarding copyright ownership.  The ASF licenses this file
     * to you under the Apache License, Version 2.0 (the
     * "License"); you may not use this file except in compliance
     * with the License.  You may obtain a copy of the License at
     *
     *     http://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing, software
     * distributed under the License is distributed on an "AS IS" BASIS,
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     * See the License for the specific language governing permissions and
     * limitations under the License.
     */

    // ----------------------------------------------------------------
    // Hbase.thrift
    //
    // This is a Thrift interface definition file for the Hbase service.
    // Target language libraries for C++, Java, Ruby, PHP, (and more) are
    // generated by running this file through the Thrift compiler with the
    // appropriate flags. The Thrift compiler binary and runtime
    // libraries for various languages are available
    // from the Apache Incubator (http://incubator.apache.org/thrift/)
    //
    // See the package.html file for information on the version of Thrift
    // used to generate the *.java files checked into the Hbase project.
    // ----------------------------------------------------------------

    namespace java org.apache.hadoop.hbase.thrift.generated
    namespace cpp  apache.hadoop.hbase.thrift
    namespace rb Apache.Hadoop.Hbase.Thrift
    namespace py hbase
    namespace perl Hbase
    namespace php Hbase
    //
    // Types
    //

    // NOTE: all variables with the Text type are assumed to be correctly
    // formatted UTF-8 strings.  This is a programming language and locale
    // dependent property that the client application is repsonsible for
    // maintaining.  If strings with an invalid encoding are sent, an
    // IOError will be thrown.

    typedef binary Text
    typedef binary Bytes
    typedef i32    ScannerID

    /**
     * TCell - Used to transport a cell value (byte[]) and the timestamp it was
     * stored with together as a result for get and getRow methods. This promotes
     * the timestamp of a cell to a first-class value, making it easy to take
     * note of temporal data. Cell is used all the way from HStore up to HTable.
     */
    struct TCell{
      1:Bytes value,
      2:i64 timestamp
    }

    /**
     * An HColumnDescriptor contains information about a column family
     * such as the number of versions, compression settings, etc. It is
     * used as input when creating a table or adding a column.
     */
    struct ColumnDescriptor {
      1:Text name,
      2:i32 maxVersions = 3,
      3:string compression = "NONE",
      4:bool inMemory = 0,
      5:string bloomFilterType = "NONE",
      6:i32 bloomFilterVectorSize = 0,
      7:i32 bloomFilterNbHashes = 0,
      8:bool blockCacheEnabled = 0,
      9:i32 timeToLive = -1
    }

    /**
     * A TRegionInfo contains information about an HTable region.
     */
    struct TRegionInfo {
      1:Text startKey,
      2:Text endKey,
      3:i64 id,
      4:Text name,
      5:byte version,
      6:Text serverName,
      7:i32 port
    }

    /**
     * A Mutation object is used to either update or delete a column-value.
     */
    struct Mutation {
      1:bool isDelete = 0,
      2:Text column,
      3:Text value,
      4:bool writeToWAL = 1
    }


    /**
     * A BatchMutation object is used to apply a number of Mutations to a single row.
     */
    struct BatchMutation {
      1:Text row,
      2:list<Mutation> mutations
    }

    /**
     * For increments that are not incrementColumnValue
     * equivalents.
     */
    struct TIncrement {
      1:Text table,
      2:Text row,
      3:Text column,
      4:i64  ammount
    }

    /**
     * Holds column name and the cell.
     */
    struct TColumn {
      1:Text columnName,
      2:TCell cell
     }

    /**
     * Holds row name and then a map of columns to cells.
     */
    struct TRowResult {
      1:Text row,
      2:optional map<Text, TCell> columns,
      3:optional list<TColumn> sortedColumns
    }

    /**
     * A Scan object is used to specify scanner parameters when opening a scanner.
     */
    struct TScan {
      1:optional Text startRow,
      2:optional Text stopRow,
      3:optional i64 timestamp,
      4:optional list<Text> columns,
      5:optional i32 caching,
      6:optional Text filterString,
      7:optional i32 batchSize,
      8:optional bool sortColumns
    }

    //
    // Exceptions
    //
    /**
     * An IOError exception signals that an error occurred communicating
     * to the Hbase master or an Hbase region server.  Also used to return
     * more general Hbase error conditions.
     */
    exception IOError {
      1:string message
    }

    /**
     * An IllegalArgument exception indicates an illegal or invalid
     * argument was passed into a procedure.
     */
    exception IllegalArgument {
      1:string message
    }

    /**
     * An AlreadyExists exceptions signals that a table with the specified
     * name already exists
     */
    exception AlreadyExists {
      1:string message
    }

    //
    // Service
    //

    service Hbase {
      /**
       * Brings a table on-line (enables it)
       */
      void enableTable(
        /** name of the table */
        1:Bytes tableName
      ) throws (1:IOError io)
        
      /**
       * Disables a table (takes it off-line) If it is being served, the master
       * will tell the servers to stop serving it.
       */
      void disableTable(
        /** name of the table */
        1:Bytes tableName
      ) throws (1:IOError io)

      /**
       * @return true if table is on-line
       */
      bool isTableEnabled(
        /** name of the table to check */
        1:Bytes tableName
      ) throws (1:IOError io)
        
      void compact(1:Bytes tableNameOrRegionName)
        throws (1:IOError io)
     
      void majorCompact(1:Bytes tableNameOrRegionName)
        throws (1:IOError io)
        
      /**
       * List all the userspace tables.
       *
       * @return returns a list of names
       */
      list<Text> getTableNames()
        throws (1:IOError io)

      /**
       * List all the column families assoicated with a table.
       *
       * @return list of column family descriptors
       */
      map<Text,ColumnDescriptor> getColumnDescriptors (
        /** table name */
        1:Text tableName
      ) throws (1:IOError io)

      /**
       * List the regions associated with a table.
       *
       * @return list of region descriptors
       */
      list<TRegionInfo> getTableRegions(
        /** table name */
        1:Text tableName)
        throws (1:IOError io)

      /**
       * Create a table with the specified column families.  The name
       * field for each ColumnDescriptor must be set and must end in a
       * colon (:). All other fields are optional and will get default
       * values if not explicitly specified.
       *
       * @throws IllegalArgument if an input parameter is invalid
       *
       * @throws AlreadyExists if the table name already exists
       */
      void createTable(
        /** name of table to create */
        1:Text tableName,

        /** list of column family descriptors */
        2:list<ColumnDescriptor> columnFamilies
      ) throws (1:IOError io, 2:IllegalArgument ia, 3:AlreadyExists exist)

      /**
       * Deletes a table
       *
       * @throws IOError if table doesn't exist on server or there was some other
       * problem
       */
      void deleteTable(
        /** name of table to delete */
        1:Text tableName
      ) throws (1:IOError io)

      /**
       * Get a single TCell for the specified table, row, and column at the
       * latest timestamp. Returns an empty list if no such value exists.
       *
       * @return value for specified row/column
       */
      list<TCell> get(
        /** name of table */
        1:Text tableName,

        /** row key */
        2:Text row,

        /** column name */
        3:Text column,

        /** Get attributes */
        4:map<Text, Text> attributes
      ) throws (1:IOError io)

      /**
       * Get the specified number of versions for the specified table,
       * row, and column.
       *
       * @return list of cells for specified row/column
       */
      list<TCell> getVer(
        /** name of table */
        1:Text tableName,

        /** row key */
        2:Text row,

        /** column name */
        3:Text column,

        /** number of versions to retrieve */
        4:i32 numVersions,

        /** Get attributes */
        5:map<Text, Text> attributes
      ) throws (1:IOError io)

      /**
       * Get the specified number of versions for the specified table,
       * row, and column.  Only versions less than or equal to the specified
       * timestamp will be returned.
       *
       * @return list of cells for specified row/column
       */
      list<TCell> getVerTs(
        /** name of table */
        1:Text tableName,

        /** row key */
        2:Text row,

        /** column name */
        3:Text column,

        /** timestamp */
        4:i64 timestamp,

        /** number of versions to retrieve */
        5:i32 numVersions,

        /** Get attributes */
        6:map<Text, Text> attributes
      ) throws (1:IOError io)

      /**
       * Get all the data for the specified table and row at the latest
       * timestamp. Returns an empty list if the row does not exist.
       *
       * @return TRowResult containing the row and map of columns to TCells
       */
      list<TRowResult> getRow(
        /** name of table */
        1:Text tableName,

        /** row key */
        2:Text row,

        /** Get attributes */
        3:map<Text, Text> attributes
      ) throws (1:IOError io)

      /**
       * Get the specified columns for the specified table and row at the latest
       * timestamp. Returns an empty list if the row does not exist.
       *
       * @return TRowResult containing the row and map of columns to TCells
       */
      list<TRowResult> getRowWithColumns(
        /** name of table */
        1:Text tableName,

        /** row key */
        2:Text row,

        /** List of columns to return, null for all columns */
        3:list<Text> columns,

        /** Get attributes */
        4:map<Text, Text> attributes
      ) throws (1:IOError io)

      /**
       * Get all the data for the specified table and row at the specified
       * timestamp. Returns an empty list if the row does not exist.
       *
       * @return TRowResult containing the row and map of columns to TCells
       */
      list<TRowResult> getRowTs(
        /** name of the table */
        1:Text tableName,

        /** row key */
        2:Text row,

        /** timestamp */
        3:i64 timestamp,

        /** Get attributes */
        4:map<Text, Text> attributes
      ) throws (1:IOError io)
        
      /**
       * Get the specified columns for the specified table and row at the specified
       * timestamp. Returns an empty list if the row does not exist.
       *
       * @return TRowResult containing the row and map of columns to TCells
       */
      list<TRowResult> getRowWithColumnsTs(
        /** name of table */
        1:Text tableName,

        /** row key */
        2:Text row,

        /** List of columns to return, null for all columns */
        3:list<Text> columns,
        4:i64 timestamp,

        /** Get attributes */
        5:map<Text, Text> attributes
      ) throws (1:IOError io)

      /**
       * Get all the data for the specified table and rows at the latest
       * timestamp. Returns an empty list if no rows exist.
       *
       * @return TRowResult containing the rows and map of columns to TCells
       */
      list<TRowResult> getRows(
        /** name of table */
        1:Text tableName,

        /** row keys */
        2:list<Text> rows

        /** Get attributes */
        3:map<Text, Text> attributes
      ) throws (1:IOError io)

      /**
       * Get the specified columns for the specified table and rows at the latest
       * timestamp. Returns an empty list if no rows exist.
       *
       * @return TRowResult containing the rows and map of columns to TCells
       */
      list<TRowResult> getRowsWithColumns(
        /** name of table */
        1:Text tableName,

        /** row keys */
        2:list<Text> rows,

        /** List of columns to return, null for all columns */
        3:list<Text> columns,

        /** Get attributes */
        4:map<Text, Text> attributes
      ) throws (1:IOError io)

      /**
       * Get all the data for the specified table and rows at the specified
       * timestamp. Returns an empty list if no rows exist.
       *
       * @return TRowResult containing the rows and map of columns to TCells
       */
      list<TRowResult> getRowsTs(
        /** name of the table */
        1:Text tableName,

        /** row keys */
        2:list<Text> rows

        /** timestamp */
        3:i64 timestamp,

        /** Get attributes */
        4:map<Text, Text> attributes
      ) throws (1:IOError io)

      /**
       * Get the specified columns for the specified table and rows at the specified
       * timestamp. Returns an empty list if no rows exist.
       *
       * @return TRowResult containing the rows and map of columns to TCells
       */
      list<TRowResult> getRowsWithColumnsTs(
        /** name of table */
        1:Text tableName,

        /** row keys */
        2:list<Text> rows

        /** List of columns to return, null for all columns */
        3:list<Text> columns,
        4:i64 timestamp,

        /** Get attributes */
        5:map<Text, Text> attributes
      ) throws (1:IOError io)

      /**
       * Apply a series of mutations (updates/deletes) to a row in a
       * single transaction.  If an exception is thrown, then the
       * transaction is aborted.  Default current timestamp is used, and
       * all entries will have an identical timestamp.
       */
      void mutateRow(
        /** name of table */
        1:Text tableName,

        /** row key */
        2:Text row,

        /** list of mutation commands */
        3:list<Mutation> mutations,

        /** Mutation attributes */
        4:map<Text, Text> attributes
      ) throws (1:IOError io, 2:IllegalArgument ia)

      /**
       * Apply a series of mutations (updates/deletes) to a row in a
       * single transaction.  If an exception is thrown, then the
       * transaction is aborted.  The specified timestamp is used, and
       * all entries will have an identical timestamp.
       */
      void mutateRowTs(
        /** name of table */
        1:Text tableName,

        /** row key */
        2:Text row,

        /** list of mutation commands */
        3:list<Mutation> mutations,

        /** timestamp */
        4:i64 timestamp,

        /** Mutation attributes */
        5:map<Text, Text> attributes
      ) throws (1:IOError io, 2:IllegalArgument ia)

      /**
       * Apply a series of batches (each a series of mutations on a single row)
       * in a single transaction.  If an exception is thrown, then the
       * transaction is aborted.  Default current timestamp is used, and
       * all entries will have an identical timestamp.
       */
      void mutateRows(
        /** name of table */
        1:Text tableName,

        /** list of row batches */
        2:list<BatchMutation> rowBatches,

        /** Mutation attributes */
        3:map<Text, Text> attributes
      ) throws (1:IOError io, 2:IllegalArgument ia)

      /**
       * Apply a series of batches (each a series of mutations on a single row)
       * in a single transaction.  If an exception is thrown, then the
       * transaction is aborted.  The specified timestamp is used, and
       * all entries will have an identical timestamp.
       */
      void mutateRowsTs(
        /** name of table */
        1:Text tableName,

        /** list of row batches */
        2:list<BatchMutation> rowBatches,

        /** timestamp */
        3:i64 timestamp,

        /** Mutation attributes */
        4:map<Text, Text> attributes
      ) throws (1:IOError io, 2:IllegalArgument ia)

      /**
       * Atomically increment the column value specified.  Returns the next value post increment.
       */
      i64 atomicIncrement(
        /** name of table */
        1:Text tableName,

        /** row to increment */
        2:Text row,

        /** name of column */
        3:Text column,

        /** amount to increment by */
        4:i64 value
      ) throws (1:IOError io, 2:IllegalArgument ia)
        
      /**
       * Delete all cells that match the passed row and column.
       */
      void deleteAll(
        /** name of table */
        1:Text tableName,

        /** Row to update */
        2:Text row,

        /** name of column whose value is to be deleted */
        3:Text column,

        /** Delete attributes */
        4:map<Text, Text> attributes
      ) throws (1:IOError io)

      /**
       * Delete all cells that match the passed row and column and whose
       * timestamp is equal-to or older than the passed timestamp.
       */
      void deleteAllTs(
        /** name of table */
        1:Text tableName,

        /** Row to update */
        2:Text row,

        /** name of column whose value is to be deleted */
        3:Text column,

        /** timestamp */
        4:i64 timestamp,

        /** Delete attributes */
        5:map<Text, Text> attributes
      ) throws (1:IOError io)

      /**
       * Completely delete the row's cells.
       */
      void deleteAllRow(
        /** name of table */
        1:Text tableName,

        /** key of the row to be completely deleted. */
        2:Text row,

        /** Delete attributes */
        3:map<Text, Text> attributes
      ) throws (1:IOError io)

      /**
       * Increment a cell by the ammount.
       * Increments can be applied async if hbase.regionserver.thrift.coalesceIncrement is set to true.
       * False is the default.  Turn to true if you need the extra performance and can accept some
       * data loss if a thrift server dies with increments still in the queue.
       */
      void increment(
        /** The single increment to apply */
        1:TIncrement increment
      ) throws (1:IOError io)


      void incrementRows(
        /** The list of increments */
        1:list<TIncrement> increments
      ) throws (1:IOError io)

      /**
       * Completely delete the row's cells marked with a timestamp
       * equal-to or older than the passed timestamp.
       */
      void deleteAllRowTs(
        /** name of table */
        1:Text tableName,

        /** key of the row to be completely deleted. */
        2:Text row,

        /** timestamp */
        3:i64 timestamp,

        /** Delete attributes */
        4:map<Text, Text> attributes
      ) throws (1:IOError io)

      /**
       * Get a scanner on the current table, using the Scan instance
       * for the scan parameters.
       */
      ScannerID scannerOpenWithScan(
        /** name of table */
        1:Text tableName,

        /** Scan instance */
        2:TScan scan,

        /** Scan attributes */
        3:map<Text, Text> attributes
      ) throws (1:IOError io)

      /**
       * Get a scanner on the current table starting at the specified row and
       * ending at the last row in the table.  Return the specified columns.
       *
       * @return scanner id to be used with other scanner procedures
       */
      ScannerID scannerOpen(
        /** name of table */
        1:Text tableName,

        /**
         * Starting row in table to scan.
         * Send "" (empty string) to start at the first row.
         */
        2:Text startRow,

        /**
         * columns to scan. If column name is a column family, all
         * columns of the specified column family are returned. It's also possible
         * to pass a regex in the column qualifier.
         */
        3:list<Text> columns,

        /** Scan attributes */
        4:map<Text, Text> attributes
      ) throws (1:IOError io)

      /**
       * Get a scanner on the current table starting and stopping at the
       * specified rows.  ending at the last row in the table.  Return the
       * specified columns.
       *
       * @return scanner id to be used with other scanner procedures
       */
      ScannerID scannerOpenWithStop(
        /** name of table */
        1:Text tableName,

        /**
         * Starting row in table to scan.
         * Send "" (empty string) to start at the first row.
         */
        2:Text startRow,

        /**
         * row to stop scanning on. This row is *not* included in the
         * scanner's results
         */
        3:Text stopRow,

        /**
         * columns to scan. If column name is a column family, all
         * columns of the specified column family are returned. It's also possible
         * to pass a regex in the column qualifier.
         */
        4:list<Text> columns,

        /** Scan attributes */
        5:map<Text, Text> attributes
      ) throws (1:IOError io)

      /**
       * Open a scanner for a given prefix.  That is all rows will have the specified
       * prefix. No other rows will be returned.
       *
       * @return scanner id to use with other scanner calls
       */
      ScannerID scannerOpenWithPrefix(
        /** name of table */
        1:Text tableName,

        /** the prefix (and thus start row) of the keys you want */
        2:Text startAndPrefix,

        /** the columns you want returned */
        3:list<Text> columns,

        /** Scan attributes */
        4:map<Text, Text> attributes
      ) throws (1:IOError io)

      /**
       * Get a scanner on the current table starting at the specified row and
       * ending at the last row in the table.  Return the specified columns.
       * Only values with the specified timestamp are returned.
       *
       * @return scanner id to be used with other scanner procedures
       */
      ScannerID scannerOpenTs(
        /** name of table */
        1:Text tableName,

        /**
         * Starting row in table to scan.
         * Send "" (empty string) to start at the first row.
         */
        2:Text startRow,

        /**
         * columns to scan. If column name is a column family, all
         * columns of the specified column family are returned. It's also possible
         * to pass a regex in the column qualifier.
         */
        3:list<Text> columns,

        /** timestamp */
        4:i64 timestamp,

        /** Scan attributes */
        5:map<Text, Text> attributes
      ) throws (1:IOError io)

      /**
       * Get a scanner on the current table starting and stopping at the
       * specified rows.  ending at the last row in the table.  Return the
       * specified columns.  Only values with the specified timestamp are
       * returned.
       *
       * @return scanner id to be used with other scanner procedures
       */
      ScannerID scannerOpenWithStopTs(
        /** name of table */
        1:Text tableName,

        /**
         * Starting row in table to scan.
         * Send "" (empty string) to start at the first row.
         */
        2:Text startRow,

        /**
         * row to stop scanning on. This row is *not* included in the
         * scanner's results
         */
        3:Text stopRow,

        /**
         * columns to scan. If column name is a column family, all
         * columns of the specified column family are returned. It's also possible
         * to pass a regex in the column qualifier.
         */
        4:list<Text> columns,

        /** timestamp */
        5:i64 timestamp,

        /** Scan attributes */
        6:map<Text, Text> attributes
      ) throws (1:IOError io)

      /**
       * Returns the scanner's current row value and advances to the next
       * row in the table.  When there are no more rows in the table, or a key
       * greater-than-or-equal-to the scanner's specified stopRow is reached,
       * an empty list is returned.
       *
       * @return a TRowResult containing the current row and a map of the columns to TCells.
       *
       * @throws IllegalArgument if ScannerID is invalid
       *
       * @throws NotFound when the scanner reaches the end
       */
      list<TRowResult> scannerGet(
        /** id of a scanner returned by scannerOpen */
        1:ScannerID id
      ) throws (1:IOError io, 2:IllegalArgument ia)

      /**
       * Returns, starting at the scanner's current row value nbRows worth of
       * rows and advances to the next row in the table.  When there are no more
       * rows in the table, or a key greater-than-or-equal-to the scanner's
       * specified stopRow is reached,  an empty list is returned.
       *
       * @return a TRowResult containing the current row and a map of the columns to TCells.
       *
       * @throws IllegalArgument if ScannerID is invalid
       *
       * @throws NotFound when the scanner reaches the end
       */
      list<TRowResult> scannerGetList(
        /** id of a scanner returned by scannerOpen */
        1:ScannerID id,

        /** number of results to return */
        2:i32 nbRows
      ) throws (1:IOError io, 2:IllegalArgument ia)

      /**
       * Closes the server-state associated with an open scanner.
       *
       * @throws IllegalArgument if ScannerID is invalid
       */
      void scannerClose(
        /** id of a scanner returned by scannerOpen */
        1:ScannerID id
      ) throws (1:IOError io, 2:IllegalArgument ia)

      /**
       * Get the row just before the specified one.
       *
       * @return value for specified row/column
       */
      list<TCell> getRowOrBefore(
        /** name of table */
        1:Text tableName,

        /** row key */
        2:Text row,

        /** column name */
        3:Text family
      ) throws (1:IOError io)

      /**
       * Get the regininfo for the specified row. It scans
       * the metatable to find region's start and end keys.
       *
       * @return value for specified row/column
       */
      TRegionInfo getRegionInfo(
        /** row key */
        1:Text row,

      ) throws (1:IOError io)
    }

  • 相关阅读:
    Asp.net MVC3
    ASP.NET 路由实现页面静态化(附在线Demo和Source)
    ASP.NET MVC中Unobtrusive Ajax的妙用
    ASP.NET MVC Controller激活系统详解:IoC的应用[上篇]
    探讨大数据量处理
    提高ASP.NET性能与可伸缩性的几个个常用方法剖析
    Winform 应用
    C#利用QrCode.Net生成二维码
    MS SQL删除大数据
    由浅入深:自己动手开发模板引擎——置换型模板引擎1
  • 原文地址:https://www.cnblogs.com/cl1024cl/p/6205123.html
Copyright © 2011-2022 走看看