对于API调用者,不需要关心底层技术细节,只需要在API集市获取API,申请绑定应用即可,参照章节1的调用方式进行API调用即可。

    对于API开发者,在创建HBase类型的API时,需要注意以下几点:

    (1) HBase库新增权限(非kerberos认证时)

    需要开通元数据中心和数据服务server部署用户的权限。例如,元数据中心和数据服务server是appops用户部署的,则需要开通appops用户对HBase的访问权限。

    (2) 关于网络权限

    • 查询服务部署到机器上,查询服务和数据服务的管理服务之间的网络双向都需要打通;
    • 查询服务到HBase的zk,以及HBase的所有节点,都需要打通。

    (3) 创建API

    创建HBase API时,支持GET和SCAN两种模式,均支持自定义请求参数。在GET模式下,默认rowKey可绑定自定义入参;在SCAN模式下,默认startRowKey和endRowKey可绑定自定义入参。startRowKey和endRowKey可为非必填,省略startRowKey则从第一条数据开始读取,省略endRowKey会一直读到最后一条数据。

    (4) 取数限制

    对于HBase数据源,scan模式下支持分页,page_num表示分页数,默认为1,最大为10,page_size表示分页大小,默认为200,最大20000,即单次最多返回10000条数据,全局最大可scan读到第100000条数据。

    (5) 返回结果

    get模式返回单个rowKey的结果,scan模式返回多个rowKey的结果,两种调用方式对单个rowKey内结果的组织方式是一样的。

    (6) 动态返回参数功能

    如果Hbase API设置的返回列很多,支持动态选择返回某些列,需要在API配置页面“入参定义”中需要新增system_return_column(参数名可换)和system_return_column_v2两个参数:system_return_column为普通入参,String类型;system_return_column_v2为函数入参,基于于system_return_column构建。

    system_return_column_v2设置表达式为:

    "[" + Arrays.stream(system_return_column.split(",")).map(c->String.format("{\"columnName\":\"%s\",\"columnFamilay\":\"cf\",\"type\":\"String\"}", c)).collect(Collectors.joining(",")) +"]"

    其中表达式中引用的普通入参参数名必须与定义的普通入参名必须一致。例如,这里引用的system_return_column,用户在system_return_column中传入需要返回的列名,system_return_column_v2从system_return_column中获取列名,与默认类型String、默认列族cf构建成JSONArray字符串。用户传入的返回字段名必须和列名一致,否则会被过滤。