PrestoDB es un motor de consultas SQL distribuido y de código abierto para big data que utiliza una arquitectura de procesamiento masivamente paralelo (MPP). Admite diversas fuentes de datos, como MySQL, Elasticsearch y Tablestore. Una vez que conecte PrestoDB a Tablestore, podrá usar PrestoDB para consultar, analizar, escribir e importar datos en Tablestore.
Contexto
PrestoDB es un motor de consultas SQL distribuido y de código abierto para big data que utiliza una arquitectura MPP. Admite diversas fuentes de datos, como MySQL, Elasticsearch y Tablestore. PrestoDB se puede utilizar como herramienta de consulta, herramienta de extracción, transformación y carga (ETL) de datos, herramienta de pruebas de carga y motor de consulta unificado para satisfacer las necesidades de procesamiento de datos en distintos escenarios.
Como herramienta de consulta, PrestoDB admite consultas SQL para el desarrollo diario y la resolución de problemas.
Como herramienta ETL de datos, PrestoDB permite replicar datos entre tablas o instancias y copiar información desde distintas fuentes de datos.
Como herramienta de pruebas de carga, PrestoDB admite el escaneo o la escritura de datos por lotes.
Como motor de consulta unificado dentro de una capa intermedia de datos, PrestoDB permite establecer conexiones con varias fuentes de datos distintas.
Para usar Tablestore con PrestoDB, primero debe establecer una conexión. Una vez establecida, podrá usar PrestoDB para consultar, analizar, escribir e importar datos en Tablestore.
Requisitos previos
-
Cuenta con un servidor que ejecuta Linux o macOS y tiene instalado el siguiente software. Este tema usa un servidor Linux como ejemplo.
NotaSi no dispone de un servidor Linux, puede usar una instancia de Elastic Compute Service (ECS). Para obtener más información, consulte Create an instance using the wizard.
Java 8 (64 bits) y un entorno de desarrollo de Python 3 instalados.
PrestoDB instalado.
-
Descargue el archivo prestodb-tablestore-connector correspondiente a su versión de PrestoDB. Cargue y descomprima el archivo en el directorio
pluginde la carpeta de instalación de PrestoDB.A continuación se describe la compatibilidad entre las versiones del plugin prestodb-tablestore-connector y las versiones de PrestoDB.
Versión del plugin
Versión de PrestoDB
Descripción
0.280
Primera versión. Este plugin es compatible con PrestoDB 0.280 y versiones posteriores.
Dispone de la información obligatoria de Tablestore, como la cuenta de acceso, los detalles de la instancia y la información de la tabla.
-
Creó un AccessKey para un usuario de Resource Access Management (RAM) que tenga permisos para operar Tablestore. Para obtener más información, consulte Obtain an AccessKey pair.
NotaSi el usuario de RAM no tiene los permisos necesarios para operar Tablestore, debe otorgárselos antes de continuar. Para obtener más información, consulte Grant permissions to a RAM user using a RAM policy.
Notas
Esta función solo aplica a wide table models.
-
El modo de escritura predeterminado de PrestoDB es UpdateRow. El modo de escritura PutRow no es compatible. Si desea escribir datos en Tablestore mediante PrestoDB, compruebe que el parámetro Allow Update de la tabla de datos de Tablestore esté establecido en Yes. De lo contrario, la operación de escritura de datos fallará.
ImportanteNo es posible escribir datos en una tabla mediante PrestoDB si esta utiliza un tiempo de vida (TTL) de índice de búsqueda. Esto se debe a que el parámetro Allow Update debe establecerse en No cuando se usa un TTL de índice de búsqueda (el valor no es -1).
Para usar el modo de escritura PutRow, únase al grupo de DingTalk 36,165,029,092 (
Tablestore Technical Support-3) para contactarnos.
Consulte la configuración de Allow Update en la pestaña Basic Details de la tabla de datos en la consola, o bien llamando a la operación DescribeTable.
Asignación de tipos de campos
Tablestore y PrestoDB utilizan tipos de datos distintos. A continuación se describe la asignación entre los tipos de campos.
|
Tipo de campo de Tablestore |
Tipo de campo de PrestoDB |
|
string |
varchar |
|
integer |
bigint |
|
double |
double |
|
boolean |
boolean |
|
binary |
varbinary |
Procedimiento
Para usar Tablestore con PrestoDB, conecte PrestoDB a Tablestore, ejecute la interfaz de línea de comandos (CLI) SQL de PrestoDB, cree un esquema y una tabla de asignación, y luego use SQL para operar con los datos.
Paso 1: Conectar PrestoDB a Tablestore
Después de instalar PrestoDB, configure el catálogo y el esquema de PrestoDB para conectarse a Tablestore. El archivo de configuración del catálogo se encuentra en etc/catalog/tablestore.properties.
Detalles de la configuración
Procedimiento
Paso 2: Ejecutar la CLI SQL de Presto
Una vez establecida la conexión, inicie Presto Server y ejecute las instrucciones SQL.
-
Obtenga el archivo ejecutable del cliente.
-
Descargue el cliente de PrestoDB.
Este tema utiliza presto-cli-0.280-executable.jar como ejemplo.
Guarde el cliente de PrestoDB en el directorio
binde la carpeta de instalación de PrestoDB.-
En el directorio
binde la carpeta de instalación de PrestoDB, ejecute el siguiente comando para obtener el archivo ejecutable del cliente.# Rename the PrestoDB client file to presto. Replace presto-cli-0.280-executable.jar with the name of your client version. mv presto-cli-0.280-executable.jar presto # Grant the user permissions to operate the presto file. chmod +x presto
-
-
En el directorio
binde la carpeta de instalación de PrestoDB, ejecute el comando para iniciar Presto Server.ImportanteAl iniciar Presto Server, debe arrancar el coordinador y como mínimo un worker.
# You can start the server in the foreground or background. The foreground mode is more convenient for viewing operational logs. # Method 1: Run in the background ./launcher start # Method 2: Run in the foreground ./launcher run -
En el directorio
binde la carpeta de instalación de PrestoDB, ejecute el siguiente comando para iniciar la CLI SQL.NotaDe forma predeterminada, PrestoDB se ejecuta en el puerto 8080. Para cambiarlo, modifique el ajuste
http-server.http.porten el archivoetc/config.properties.Después de modificar los ajustes de configuración, reinicie el servidor para que los cambios surtan efecto.
En el comando,
./prestoes la ruta relativa del archivo ejecutable del cliente dentro del directoriobinde la carpeta de instalación de PrestoDB.
./presto --server localhost:8080 --catalog tablestore --schema defaultA continuación se describen los elementos de configuración.
Elemento de configuración
Ejemplo
Obligatorio
Descripción
--server
localhost:8080
Sí
URI de Presto Server. Sustituya el valor según sea necesario. Este ajuste debe coincidir con el parámetro
discovery.uridel archivoetc/config.propertiesubicado en el directorio de instalación de PrestoDB.--catalog
tablestore
Sí
Nombre del archivo de configuración del catálogo. Establézcalo en
tablestore, igual que el nombre del archivo de configuración del catálogo creado.--schema
default
Sí
Configuración del esquema. Mantenga el valor predeterminado.
Paso 3: Crear un esquema y una tabla de asignación
Cuando utilice el modo de configuración dinámica de esquema con una tabla de metadatos, cree manualmente un esquema para configurar la instancia de Tablestore conectada y llevar a cabo la autenticación de usuarios. Después, cree una tabla de asignación para la tabla de Tablestore con el fin de consultar y analizar datos.
Si utiliza el modo de configuración de esquema con archivo estático local, omita este paso.
-
Ejecute el siguiente comando para crear un esquema.
El siguiente ejemplo muestra cómo crear un esquema llamado testdb para acceder a la instancia de Tablestore myinstance.
CREATE SCHEMA tablestore.testdb WITH ( endpoint = 'https://myinstance.cn-hangzhou.ots.aliyuncs.com', instance_name = 'myinstance', access_id = '************************', access_key = '********************************' );En la siguiente tabla se describen los parámetros.
Parámetro
Ejemplo
Obligatorio
Descripción
endpoint
https://myinstance.cn-hangzhou.ots.aliyuncs.com
Sí
Endpoint de la instancia de Tablestore. Para obtener más información, consulte Endpoints.
instance_name
myinstance
Sí
Nombre de la instancia de Tablestore. Para obtener más información, consulte Instances.
access_id
Sí
AccessKey ID de la cuenta de Alibaba Cloud o del usuario de RAM.
access_key
Sí
AccessKey secret de la cuenta de Alibaba Cloud o del usuario de RAM.
-
Ejecute el comando
use <SCHEMA_NAME>;para utilizar el esquema que creó.Sustituya
<SCHEMA_NAME>por el nombre del esquema creado. Ejecute el comandoshow schemas;para obtener la lista de esquemas. -
Ejecute el siguiente comando para crear una tabla de asignación para la tabla de datos de Tablestore.
ImportanteTenga en cuenta lo siguiente al crear una tabla de asignación:
Compruebe que los tipos de campo de la tabla de asignación coincidan con los de la tabla de datos de Tablestore. Para obtener más información, consulte Field type mapping.
El nombre de la tabla de asignación debe coincidir con el nombre de la tabla en Tablestore.
La propiedad
table_namede la instrucción CREATE TABLE asigna la tabla de PrestoDB a la tabla real en Tablestore. Varias tablas de asignación con nombres distintos pueden apuntar a la misma tabla de datos de Tablestore.La tabla de asignación debe incluir todas las columnas de clave principal de la tabla de datos, pero puede contener solo un subconjunto de las columnas de atributos.
Los nombres y el orden de las columnas de clave principal en la tabla de asignación deben coincidir con los de la tabla de datos de Tablestore. Asigne cada columna de atributos a su equivalente en Tablestore mediante el parámetro
origin_name.
Suponga que la tabla de datos se llama main_table e incluye dos columnas de clave principal, gid y uid, además de tres columnas de atributos: col1, col2 y col3.
El siguiente ejemplo de SQL crea una tabla de asignación con el mismo nombre para la tabla de datos main_table de Tablestore.
CREATE TABLE if not exists main_table ( gid bigint, uid bigint, c1 boolean with (origin_name = 'col1'), c2 bigint with (origin_name = 'col2'), c3 varchar with (origin_name = 'col3') ) WITH ( table_name = 'main_table' );
Paso 4: Usar SQL para operar con datos
Antes de usar SQL para operar con datos de Tablestore, compruebe que haya ejecutado el comando use <SCHEMA_NAME>; para utilizar el esquema correspondiente.
Mediante instrucciones SQL puede consultar las configuraciones de esquema y los metadatos de las tablas, así como leer y escribir datos en las tablas de Tablestore. Para ver más ejemplos de SQL, consulte Common SQL examples.
-
Consultar las configuraciones de esquema.
-
Obtener la lista de esquemas
show schemas; -
Obtener la lista de tablas de un esquema específico
show tables;
-
-
Consultar los metadatos de una tabla específica
Sustituya
<TABLE_NAME>por el nombre real de la tabla.describe <TABLE_NAME>; -
Operaciones con datos.
Lea y escriba datos de Tablestore.
-
Escribir datos
-
Insertar una fila de datos
El siguiente ejemplo inserta una fila de datos en main_table.
insert into main_table values(10001,10001,true,100,'hangzhou'); -
Importar datos por lotes
ImportanteAntes de importar datos por lotes, compruebe que la tabla de destino esté creada y que su esquema coincida con el de la tabla de datos de origen.
El siguiente ejemplo importa los datos de las columnas gid, uid, c1, c2 y c3 de main_table hacia sampletable, donde gid es mayor que 0 y uid es menor que 10,000.
insert into sampletable select gid, uid, c1, c2, c3 from main_table where gid > 0 and uid < 100000;
-
-
Leer datos
El siguiente ejemplo consulta las filas de sampletable donde el valor de la columna gid es mayor que 0, el valor de la columna uid es menor que 10 y c1 es true.
select * from sampletable where gid > 0 and uid < 10 and c1 = true;
-
Facturación
Cuando utiliza un motor de cómputo para acceder a Tablestore, el servicio mide y factura su uso según el rendimiento de lectura y escritura de solicitudes específicas. Para obtener más información, consulte Billing overview.
Referencias
Puede usar otros motores de cómputo, como MaxCompute, Spark, Function Compute y Flink, para consultar y analizar datos en las tablas de Tablestore. Para obtener más información, consulte Compute and analysis overview. También puede aprovechar las funciones de consulta SQL y agregación de índices de búsqueda de Tablestore para consultar y analizar datos en las tablas. Para obtener más información, consulte SQL query y Search index.
También puede utilizar el servicio de integración de datos de DataWorks para migrar datos de Tablestore entre tablas o instancias. Para obtener más información, consulte Synchronize data from a Tablestore table to another Tablestore table.
Si desea visualizar datos en gráficos u otros formatos, utilice DataV o Grafana. Para obtener más información, consulte Data visualization.