---
title: "与 HBase 的兼容性 - OceanBase 数据库 V4.2.1 | OceanBase 文档中心"
description: 与 HBase 的兼容性 接口兼容性 OBKV-HBase 客户端实现了 HTableInterface 的接口，其接口的兼容性如下。 Modifier and Type Method and Description 兼容性 Result append ( Append append） Appends values …
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库KV 型 - V 4.2.1

# 与 HBase 的兼容性

更新时间：2025-03-18 17:12:40

[编辑](https://github.com/oceanbase/oceanbase-kv/edit/V4.2.1/zh-CN/200.obkv-hbase/700.obkv-hbase-reference/100.hbase-compatibility.md)  

## 接口兼容性

OBKV-HBase 客户端实现了 [HTableInterface](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/HTableInterface.html) 的接口，其接口的兼容性如下。

| **Modifier and Type** | **Method and Description** | **兼容性** |
| --- | --- | --- |
| [Result](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/Result.html) | [append](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/HTableInterface.html#append(org.apache.hadoop.hbase.client.Append)) ([Append](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/Append.html) append） Appends values to one or more columns within a single row. | 支持 |
| [Object](https://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true)[] | [batch](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/HTableInterface.html#batch(java.util.List))([List](https://docs.oracle.com/javase/6/docs/api/java/util/List.html?is-external=true)<? extends [Row](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/Row.html)> actions)   Same as [batch(List, Object[])](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/HTableInterface.html#batch(java.util.List,%20java.lang.Object%5B%5D)), but returns an array of results instead of using a results parameter reference. | 不支持 |
| void | [batch](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/HTableInterface.html#batch(java.util.List,%20java.lang.Object%5B%5D))([List](https://docs.oracle.com/javase/6/docs/api/java/util/List.html?is-external=true)<? extends [Row](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/Row.html)> actions, [Object](https://docs.oracle.com/javase/6/docs/api/java/lang/Object.html?is-external=true)[] results) Method that does a batch call on Deletes, Gets, Puts, Increments, Appends and RowMutations. | 不支持 |
| boolean | [checkAndDelete](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/HTableInterface.html#checkAndDelete(byte%5B%5D,%20byte%5B%5D,%20byte%5B%5D,%20byte%5B%5D,%20org.apache.hadoop.hbase.client.Delete))   (byte[] row, byte[] family, byte[] qualifier, byte[] value,[Delete](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/Delete.html)    delete) Atomically checks if a row/family/qualifier value matches the expected value. | 支持 |
| boolean | [checkAndPut](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/HTableInterface.html#checkAndPut(byte%5B%5D,%20byte%5B%5D,%20byte%5B%5D,%20byte%5B%5D,%20org.apache.hadoop.hbase.client.Put))   (byte[] row, byte[] family, byte[] qualifier, byte[] value, [Put](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/Put.html)    put) Atomically checks if a row/family/qualifier value matches the expected value. | 支持 |
| void | [close](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/HTableInterface.html#close())() Releases any resources help or pending changes in internal buffers. | 支持 |
| <T extends [CoprocessorProtocol](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/ipc/CoprocessorProtocol.html),R>[Map](https://docs.oracle.com/javase/6/docs/api/java/util/Map.html?is-external=true)<byte[],R> | [coprocessorExec](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/HTableInterface.html#coprocessorExec(java.lang.Class,%20byte%5B%5D,%20byte%5B%5D,%20org.apache.hadoop.hbase.client.coprocessor.Batch.Call))([Class](https://docs.oracle.com/javase/6/docs/api/java/lang/Class.html?is-external=true) protocol, byte[] startKey, byte[] endKey, [Batch.Call](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/coprocessor/Batch.Call.html)<T,R> callable) Invoke the passed [Batch.Call](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/coprocessor/Batch.Call.html) against the [CoprocessorProtocol](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/ipc/CoprocessorProtocol.html) instances running in the selected regions. | 不支持 |
| <T extends [CoprocessorProtocol](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/ipc/CoprocessorProtocol.html),R> void | [coprocessorExec](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/HTableInterface.html#coprocessorExec(java.lang.Class,%20byte%5B%5D,%20byte%5B%5D,%20org.apache.hadoop.hbase.client.coprocessor.Batch.Call,%20org.apache.hadoop.hbase.client.coprocessor.Batch.Callback))([Class](https://docs.oracle.com/javase/6/docs/api/java/lang/Class.html?is-external=true) protocol, byte[] startKey, byte[] endKey, [Batch.Call](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/coprocessor/Batch.Call.html)<T,R> callable, [Batch.Callback](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/coprocessor/Batch.Callback.html) callback) Invoke the passed [Batch.Call](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/coprocessor/Batch.Call.html) against the [CoprocessorProtocol](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/ipc/CoprocessorProtocol.html) instances running in the selected regions. | 不支持 |
| <T extends [CoprocessorProtocol](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/ipc/CoprocessorProtocol.html) > T | [coprocessorProxy](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/HTableInterface.html#coprocessorProxy(java.lang.Class,%20byte%5B%5D))([Class](https://docs.oracle.com/javase/6/docs/api/java/lang/Class.html?is-external=true) protocol, byte[] row) Creates and returns a proxy to the CoprocessorProtocol instance running in the region containing the specified row. | 不支持 |
| void | [delete](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/HTableInterface.html#delete(org.apache.hadoop.hbase.client.Delete))([Delete](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/Delete.html) delete) Deletes the specified cells/row. | 支持 |
| void | [delete](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/HTableInterface.html#delete(java.util.List))([List](https://docs.oracle.com/javase/6/docs/api/java/util/List.html?is-external=true)<[Delete](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/Delete.html)> deletes) Deletes the specified cells/rows in bulk. | 支持 |
| boolean | [exists](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/HTableInterface.html#exists(org.apache.hadoop.hbase.client.Get))([Get](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/Get.html) get) Test for the existence of columns in the table, as specified in the Get. | 支持 |
| void | [flushCommits](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/HTableInterface.html#flushCommits())() Executes all the buffered [Put](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/Put.html) operations. | 支持 |
| [Result](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/Result.html) | [get](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/HTableInterface.html#get(org.apache.hadoop.hbase.client.Get))([Get](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/Get.html) get) Extracts certain cells from a given row. | 支持 |
| [Result](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/Result.html)[] | [get](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/HTableInterface.html#get(java.util.List))([List](https://docs.oracle.com/javase/6/docs/api/java/util/List.html?is-external=true)<[Get](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/Get.html)> gets) Extracts certain cells from the given rows, in batch. | 支持 |
| org.apache.hadoop.conf.Configuration | [getConfiguration](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/HTableInterface.html#getConfiguration())() Returns the Returns the Configuration object used by this instance. | 支持 |
| [Result](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/Result.html) | [getRowOrBefore](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/HTableInterface.html#getRowOrBefore(byte%5B%5D,%20byte%5B%5D))(byte[] row, byte[] family) Deprecated. As of version 0.92 this method is deprecated without replacement. getRowOrBefore is used internally to find entries in .META. and makes various assumptions about the table (which are true for .META. but not in general) to be efficient. | Deprecated |
| [ResultScanner](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/ResultScanner.html) | [getScanner](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/HTableInterface.html#getScanner(byte%5B%5D))(byte[] family) Gets a scanner on the current table for the given family. | 支持 |
| [ResultScanner](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/ResultScanner.html) | [getScanner](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/HTableInterface.html#getScanner(byte%5B%5D,%20byte%5B%5D))(byte[] family, byte[] qualifier) Gets a scanner on the current table for the given family and qualifier. | 支持 |
| [ResultScanner](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/ResultScanner.html) | [getScanner](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/HTableInterface.html#getScanner(org.apache.hadoop.hbase.client.Scan))([Scan](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/Scan.html) scan) Returns a scanner on the current table as specified by the [Scan](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/Scan.html) object. | 支持 |
| [HTableDescriptor](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/HTableDescriptor.html) | [getTableDescriptor](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/HTableInterface.html#getTableDescriptor())() Gets the [table descriptor](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/HTableDescriptor.html) for this table. | 不支持 |
| byte[] | [getTableName](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/HTableInterface.html#getTableName())() Gets the name of this table. | 支持 |
| long | [getWriteBufferSize](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/HTableInterface.html#getWriteBufferSize())() Returns the maximum size in bytes of the write buffer for this HTable. | 支持 |
| [Result](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/Result.html) | [increment](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/HTableInterface.html#increment(org.apache.hadoop.hbase.client.Increment))([Increment](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/Increment.html) increment) Increments one or more columns within a single row. | 支持 |
| long | [incrementColumnValue](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/HTableInterface.html#incrementColumnValue(byte%5B%5D,%20byte%5B%5D,%20byte%5B%5D,%20long))(byte[] row, byte[] family, byte[] qualifier, long amount) Atomically increments a column value. | 支持 |
| long | [incrementColumnValue](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/HTableInterface.html#incrementColumnValue(byte%5B%5D,%20byte%5B%5D,%20byte%5B%5D,%20long,%20boolean))(byte[] row, byte[] family, byte[] qualifier, long amount, Durability durability) Atomically increments a column value. | 支持 |
| boolean | [isAutoFlush](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/HTableInterface.html#isAutoFlush())() Tells whether or not 'auto-flush' is turned on. | 支持 |
| [RowLock](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/RowLock.html) | [lockRow](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/HTableInterface.html#lockRow(byte%5B%5D))(byte[] row) [RowLock](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/RowLock.html) and associated operations are deprecated | Deprecated |
| void | [mutateRow](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/HTableInterface.html#mutateRow(org.apache.hadoop.hbase.client.RowMutations))([RowMutations](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/RowMutations.html) rm) Performs multiple mutations atomically on a single row. | 不支持 |
| void | [put](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/HTableInterface.html#put(java.util.List))([List](https://docs.oracle.com/javase/6/docs/api/java/util/List.html?is-external=true)<[Put](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/Put.html)> puts) Puts some data in the table, in batch. | 支持 |
| void | [put](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/HTableInterface.html#put(org.apache.hadoop.hbase.client.Put))([Put](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/Put.html) put) Puts some data in the table. | 支持 |
| void | [setAutoFlush](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/HTableInterface.html#setAutoFlush(boolean))(boolean autoFlush) See [setAutoFlush(boolean, boolean)](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/HTableInterface.html#setAutoFlush(boolean,%20boolean)) | 支持 |
| void | [setAutoFlush](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/HTableInterface.html#setAutoFlush(boolean,%20boolean))(boolean autoFlush, boolean clearBufferOnFail) Turns 'auto-flush' on or off. | 支持 |
| void | [setWriteBufferSize](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/HTableInterface.html#setWriteBufferSize(long))(long writeBufferSize) Sets the size of the buffer in bytes. | 支持 |
| void | [unlockRow](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/HTableInterface.html#unlockRow(org.apache.hadoop.hbase.client.RowLock))([RowLock](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/RowLock.html) rl) [RowLock](https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/0.94/apidocs/org/apache/hadoop/hbase/client/RowLock.html) and associated operations are deprecated | Deprecated |

## 接口使用上的差别

因为架构实现上的差异，开源 HBase的代码迁移到 OBKV-HBase，需要调整一些配置代码。

开源 HBase 和 OBKV-HBase 数据访问代码没有变化，数据访问部分兼容。不同点主要在：

- Configuration：开源 HBase 和 OBKV-HBase 架构不同，配置项也不同。
 - OHTableClient：需要基于 OBKV-HBase 的句柄来做数据访问。

如下面例子。

开源 HBase 的代码：

```
public class HBaseInsertDemo {
    public static void main(String[] args) throws Exception {
        // 配置HBase
        Configuration conf = HBaseConfiguration.create();
        conf.set("hbase.zookeeper.quorum", "your_zookeeper_quorum"); // 设置ZooKeeper地址
        conf.set("hbase.zookeeper.property.clientPort", "2181"); // 设置ZooKeeper端口
        // 拿到Table句柄
        TableName tableName = TableName.valueOf("your_table_name");
        HTable table =new HTable(tableName, conf);
        // 准备插入数据
        Put put = new Put(Bytes.toBytes("row_key"));
        put.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("qualifier"), Bytes.toBytes("value")); // 列族，列标识符，值
        table.put(put);
        // 关闭资源
        table.close();
        System.out.println("数据插入成功！");
    }
}

```

OBKV-HBase 的代码：

```
public class OBHBaseInsertDemo {
    public static void main(String[] args) throws Exception {
        // 配置HBase
        Configuration conf = new Configuration();
        conf.set(HBASE_OCEANBASE_FULL_USER_NAME, "");
        conf.set(HBASE_OCEANBASE_PASSWORD, "");
        conf.set(HBASE_OCEANBASE_PARAM_URL, "");
        conf.set(HBASE_OCEANBASE_SYS_USER_NAME, "");
        conf.set(HBASE_OCEANBASE_SYS_PASSWORD, "");
        // 拿到Table句柄
        TableName tableName = TableName.valueOf("your_table_name");
        OHTableClient table = new OHTableClient(tableName, conf); // 创建 htable对象

        // 准备插入数据
        Put put = new Put(Bytes.toBytes("row_key"));
        put.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("qualifier"), Bytes.toBytes("value")); // 列族，列标识符，值
        table.put(put);
        // 关闭资源
        table.close();
        System.out.println("数据插入成功！");
    }
}

```

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
