Importe datos desde Object Storage Service (OSS) a Alibaba Cloud ClickHouse mediante un motor de tabla o una función de tabla para consultar, analizar y procesar registros.
Requisitos previos
Active Object Storage Service (OSS). Para obtener más información, consulte Activate OSS.
Debe haber creado un bucket en la misma región que el clúster de Alibaba Cloud ClickHouse. Para ver las instrucciones sobre cómo crear un bucket, consulte Create a bucket.
La cuenta utilizada para acceder a OSS debe tener permisos de lectura sobre los objetos del bucket. Para obtener más información, consulte Overview.
Preparación de datos
Guarde los siguientes datos de prueba como test.csv y cárguelos en OSS. El separador de columnas predeterminado es la coma (,). Para ver las instrucciones de carga, consulte Upload files.
1,yang,32,shanghai,http://example1.com
2,wang,22,beijing,http://example2.com
3,xiao,23,shenzhen,http://example3.com
4,jess,45,hangzhou,http://example4.com
5,jack,14,shanghai,http://example5.com
6,tomy,25,hangzhou,http://example6.com
7,lucy,45,shanghai,http://example7.com
8,tengyin,26,shanghai,http://example8.com
9,wangli,27,shenzhen,http://example9.com
10,xiaohua,37,shanghai,http://example10.com
Procedimiento
Conéctese al clúster de Alibaba Cloud ClickHouse. Para obtener más información, consulte Connect to a cluster.
-
Cree una tabla local llamada
oss_test_tbl_local.ImportanteEl esquema de la tabla de Alibaba Cloud ClickHouse debe coincidir con el esquema de la tabla externa de OSS y con el formato de los datos en OSS. Para evitar fallos de análisis sintáctico y excepciones en el clúster, gestione los campos nulos con cuidado.
Seleccione la sentencia CREATE TABLE adecuada según la configuración de réplicas de su clúster. Puede consultar esta configuración en la página Cluster Information, dentro de la sección Cluster Properties de la consola.
Puede seleccionar un motor de tabla según sus necesidades empresariales. Para obtener más información, consulte Table engines.
Single-replica edition
CREATE TABLE oss_test_tbl_local ON CLUSTER default ( id UInt8, user_name String, age UInt16, city String, access_url String ) ENGINE = MergeTree() ORDER BY id;Double-replica edition
CREATE TABLE oss_test_tbl_local ON CLUSTER default ( id UInt8, user_name String, age UInt16, city String, access_url String ) ENGINE = ReplicatedMergeTree('/clickhouse/tables/{database}/{table}/{shard}', '{replica}') ORDER BY id; -
(Opcional) Cree una tabla distribuida llamada
oss_test_tbl_distributed.NotaCree una tabla distribuida si desea distribuir los datos entre todas las tablas locales del clúster.
CREATE TABLE oss_test_tbl_distributed ON CLUSTER default ( id UInt8, user_name String, age UInt16, city String, access_url String ) ENGINE = Distributed(default, default, oss_test_tbl_local, rand()); -
Importe datos desde OSS a Alibaba Cloud ClickHouse.
Alibaba Cloud ClickHouse admite dos métodos para importar datos desde OSS: motores de tabla y funciones de tabla.
ImportanteSeleccione la sentencia adecuada según la versión de su clúster. Puede consultar la versión en la página Cluster Information, dentro de la sección Cluster Properties de la consola.
Método 1: Uso de un motor de tabla
Método 2: Uso de una función de tabla
-
Consulte la tabla distribuida
oss_test_tbl_distributedpara comprobar la importación de datos.SELECT * FROM oss_test_tbl_distributed;Resultado esperado:
┌─id─┬─user_name─┬──age──┬───city─────┬─────access_url────────┐ │ 1 │ yang │ 32 │ shanghai │ http://example1.com │ │ 2 │ wang │ 22 │ beijing │ http://example2.com │ │ 3 │ xiao │ 23 │ shenzhen │ http://example3.com │ │ 4 │ jess │ 45 │ hangzhou │ http://example4.com │ │ 5 │ jack │ 14 │ shanghai │ http://example5.com │ │ 6 │ tomy │ 25 │ hangzhou │ http://example6.com │ │ 7 │ lucy │ 45 │ shanghai │ http://example7.com │ │ 8 │ tengyin │ 26 │ shanghai │ http://example8.com │ │ 9 │ wangli │ 27 │ shenzhen │ http://example9.com │ │ 10 │ xiaohua │ 37 │ shanghai │ http://example10.com │ └────┴───────────┴───────┴────────────┴───────────────────────┘
Coincidencia de comodines para rutas de almacenamiento de OSS
Para simplificar el análisis de varios archivos pequeños que comparten una convención de nombres, el parámetro oss-file-path admite los siguientes comodines:
*: Coincide con cualquier nombre de archivo o directorio. Por ejemplo,/dir/*coincide con todos los archivos del directorio/dir.{x,y,z}: Coincide con cualquier valor incluido entre llaves. Por ejemplo,file_{x,y,z}coincide confile_x,file_yofile_z.{num1..num2}: Coincide con cualquier valor dentro del rango expandido denum1anum2. Por ejemplo,file_{1..3}coincide confile_1,file_2yfile_3.?: Coincide con cualquier carácter individual. Por ejemplo,file_?coincide confile_a,file_b,file_c, etc.
Ejemplo
Los archivos cargados utilizan la siguiente estructura de directorios.
oss://testBucketName/
doc-data/
oss-import/
small_files/
access_log_csv_1.txt
access_log_csv_2.txt
access_log_csv_3.txt
Ejemplos:
oss://testBucketName/doc-data/oss-import/small_files/*
oss://testBucketName/doc-data/oss-import/small_files/access*
oss://testBucketName/doc-data/oss-import/small_files/access_log_csv_{1,2,3}.txt
oss://testBucketName/doc-data/oss-import/*/access_log_csv_{1,2,3}.txt
oss://testBucketName/doc-data/oss-import//
oss://testBucketName/doc-data/oss-import/*/access_log_csv_{1..3}.txt
oss://testBucketName/doc-data/oss-import/*/access_log_csv_?.txt