El motor de columnas anchas de Lindorm admite el acceso a través de API de HBase que no son de Java, como C++, Python y Go. Este tema describe cómo instalar el SDK y acceder al servicio.
Contexto
El motor de tablas anchas de Lindorm permite el acceso desde lenguajes distintos a Java (como C++, Python y Go) mediante Thrift.
El motor de tablas anchas de Lindorm utiliza la definición de interfaz HBase Thrift2, por lo que es necesario descargar el archivo de definición de HBase Thrift2 para generar las interfaces específicas del lenguaje. En comparación con la definición de HBase Thrift1, la definición de interfaz HBase Thrift2 en Lindorm es más clara y ofrece una experiencia de llamada a la API similar a la de Java. Actualmente, el archivo de definición de HBase Thrift2 proporciona funciones más completas y resulta más fácil de usar que el archivo de definición de HBase Thrift1.
Requisitos previos
Descargue el paquete de instalación de Thrift.
Descargue el archivo de definición de HBase Thrift2.
Obtenga el endpoint para Access by using a non-Java ApsaraDB for HBase API. Para obtener más información, consulte View endpoints. En la página Database connection de su instancia de Lindorm, seleccione la pestaña LindormTable, expanda la sección ApsaraDB for HBase-compatible endpoints y copie el endpoint HTTP de la sección Access by using a non-Java ApsaraDB for HBase API correspondiente a la VPC o a la red pública. El puerto es 9190.
Acceso a LindormTable (ejemplo en Python)
Para obtener instrucciones sobre cómo usar el paquete de instalación de Thrift, consulte la documentación oficial de Apache Thrift. A continuación se describen los pasos para usar Thrift y acceder a LindormTable:
-
Use el archivo de definición de HBase Thrift2 para generar los archivos de interfaz del lenguaje deseado. Ejecute el siguiente comando:
thrift --gen <language> hbase.thriftNotaEl parámetro
languageespecifica la bandera del generador para el lenguaje destino, comopypara Python,php, ocpp. Para consultar la lista completa de lenguajes compatibles y sus banderas de generador correspondientes, revise la documentación oficial de Apache Thrift.Por ejemplo, para generar los archivos de interfaz de Python, establezca el parámetro
languageenpyy ejecute el siguiente comando:thrift --gen py hbase.thrift -
Cree un cliente para acceder al motor de tablas anchas de Lindorm.
El servidor Thrift en Lindorm usa HTTP para su capa de transporte. Por lo tanto, debe usar la implementación de transporte
ThttpCliental crear un cliente. Si la lista de control de acceso (ACL) está habilitada para su instancia, agregue dos encabezados personalizados al objetoThttpClientpara transmitir el nombre de usuario y la contraseña. Este paso no es necesario si la ACL está deshabilitada. Cada implementación específica de lenguaje deThttpClientproporciona una función para establecer encabezados personalizados. El siguiente ejemplo en Python muestra cómo crear un cliente y acceder a LindormTable.# -*- coding: utf-8 -*- # The following two modules are generated by running the 'pip install thrift' command. from thrift.protocol import TBinaryProtocol from thrift.transport import THttpClient # The following two modules are generated by running the 'thrift --gen py hbase.thrift' command. from hbase import THBaseService from hbase.ttypes import TColumnValue, TColumn, TTableName, TTableDescriptor, TColumnFamilyDescriptor, TNamespaceDescriptor, TGet, TPut, TScan # Configure the endpoint for LindormTable. url = "http://ld-bp17j28j2y7pm****-proxy-lindorm.lindorm.rds.aliyuncs.com:9190" transport = THttpClient.THttpClient(url) headers = {} # Set the username. headers["ACCESSKEYID"]="testuser"; # Set the password for the username. headers["ACCESSSIGNATURE"]="password" transport.setCustomHeaders(headers) protocol = TBinaryProtocol.TBinaryProtocolAccelerated(transport) client = THBaseService.Client(protocol) transport.open() # Close the connection after completing the operations. transport.close()
Ejemplos de código
Los ejemplos de código completos para otros lenguajes distintos a Java están disponibles en los siguientes enlaces de GitHub.