O ApsaraDB for ClickHouse permite consultar dados no Alibaba Cloud Object Storage Service (OSS) e exportar dados do ClickHouse para o OSS.
Pré-requisitos
-
Requisitos do OSS:
Ative o OSS. Para mais detalhes, consulte Activate OSS.
O usuário RAM deve ter permissões de leitura e gravação em objetos do OSS. Para mais detalhes, consulte Overview of permissions and access control.
-
Requisitos do cluster:
Crie uma conta de banco de dados. Para mais detalhes, consulte Account Management.
Pré-requisitos
-
Crie um bucket do OSS. Para mais informações, consulte Create buckets in the console.
ImportanteO bucket do OSS deve estar na mesma região do seu cluster ApsaraDB for ClickHouse.
Este exemplo utiliza um bucket chamado ck-test-oss.
-
Carregue um objeto no OSS.
Este exemplo usa o objeto test.csv. Carregue esse objeto no OSS. Para mais informações, consulte Upload objects.
Se utilizar seu próprio objeto, garanta que o formato seja compatível com o ApsaraDB for ClickHouse. O ApsaraDB for ClickHouse oferece suporte a todos os formatos, exceto Protobuf e CapnProto. Para mais informações, consulte Formatos de arquivo suportados pelo ClickHouse.
Consulte dados do OSS
Método 1: Tabela externa do OSS
Enterprise ou Community-compatible (22,8 ou posterior)
-
Faça logon no banco de dados.
Faça logon no console do ApsaraDB for ClickHouse.
Na página Clusters, clique em aba Clusters of Community-compatible Edition ou Enterprise Edition Clusters e, em seguida, clique em ID do cluster desejado.
Na página Cluster Information, clique em Log On to Database no canto superior direito.
Na caixa de diálogo Connect to Instance, insira a conta e a senha do banco de dados e clique em Log On.
-
Crie uma tabela externa do OSS.
Uma tabela externa do OSS no ApsaraDB for ClickHouse permite consultar objetos armazenados no OSS diretamente, sem importar dados para o armazenamento local, possibilitando a separação entre armazenamento e computação.
Sintaxe:
CREATE TABLE <table_name> [ON cluster default] ( 'col_name1' col_type1, 'col_name2' col_type2, ... ) ENGINE = OSS('https://<bucket-name>.<oss-endpoint>/<file-name>', '<access-key-id>', '<access-key-secret>', '<file-format-name>');A tabela a seguir descreve os parâmetros.
Parâmetro
Descrição
Exemplo
table_name
Nome da tabela.
oss_test_tb
col_name1,col_name2
Nomes das colunas.
user_name
col_type1,col_type2
Tipos de dados das colunas.
ImportanteO esquema da tabela externa do OSS deve ser consistente com os dados no OSS.
String
bucket-name
Nome do bucket do OSS.
ck-test-oss
oss-endpoint
Endpoint interno para acessar o bucket do OSS a partir de uma instância ECS via VPC. Para mais informações, consulte Regions and endpoints.
ImportanteCertifique-se de que o bucket do OSS e seu cluster ApsaraDB for ClickHouse estejam na mesma região.
oss-cn-hangzhou-internal.aliyuncs.com
file-name
Nome do objeto no bucket do OSS.
test.csv
access-key-id
AccessKey ID do usuário RAM para acessar dados do OSS.
yourAccessKeyID
access-key-secret
AccessKey secret do usuário RAM para acessar dados do OSS.
Use um AccessKey existente ou crie um novo. Para mais informações, consulte Create an AccessKey.
ImportantePara reduzir o risco de vazamento do AccessKey, o AccessKey secret é exibido apenas no momento da criação e não pode ser recuperado posteriormente. Armazene o AccessKey secret de forma segura.
yourAccessKeySecret
file-format-name
Formato do objeto.
ImportanteO valor deve ser um formato de arquivo compatível com o ClickHouse, diferenciando maiúsculas de minúsculas. Para mais informações, consulte formatos de arquivo suportados pelo ClickHouse.
CSV
Exemplo:
CREATE TABLE oss_test_tb ON cluster default ( id UInt8, user_name String, age UInt16, city String, access_url String ) ENGINE = OSS('http://ck-test-oss.oss-cn-hangzhou-internal.aliyuncs.com/test.csv', 'LTAI****************', 'yourAccessKeySecret','CSV') -
Consulte dados do OSS.
SELECT * FROM oss_test_tb;Resultado retornado:
+--------------+---------------------+---------------+----------------+----------------------+ | id | user_name | age | city | access_url | +--------------+---------------------+---------------+----------------+----------------------+ | 1 | tick | 32 | shanghai | http://example.com | +--------------+---------------------+---------------+----------------+----------------------+ Returned rows: [1], Time elapsed: [183ms]
Community-compatible (21,8 ou anterior)
-
Faça logon no banco de dados.
Faça logon no console do ApsaraDB for ClickHouse.
Na página Clusters, clique em aba Clusters of Community-compatible Edition e, em seguida, clique em ID do cluster desejado.
Na página Cluster Information, clique em Log On to Database no canto superior direito.
Na caixa de diálogo Connect to Instance, insira a conta e a senha do banco de dados e clique em Log On.
-
Crie uma tabela externa do OSS.
Sintaxe:
CREATE TABLE <table_name> [ON cluster default] ( 'col_name1' col_type1, 'col_name2' col_type2, ... ) ENGINE = OSS('<oss-endpoint>', '<access-key-id>', '<access-key-secret>', '<oss-file-path>', '<file-format-name>');A tabela a seguir descreve os parâmetros.
Parâmetro
Descrição
Exemplo
table_name
Nome da tabela.
oss_test_tb
col_name1,col_name2
Nomes das colunas.
user_name
col_type1,col_type2
Tipos de dados das colunas.
ImportanteO esquema da tabela externa do OSS deve ser consistente com os dados no OSS.
String
oss-endpoint
Endpoint interno para acessar o bucket do OSS a partir de uma instância ECS via VPC. Para mais informações, consulte Regions and endpoints.
ImportanteCertifique-se de que o bucket do OSS e seu cluster ApsaraDB for ClickHouse estejam na mesma região.
oss-cn-hangzhou-internal.aliyuncs.com
access-key-id
AccessKey ID do usuário RAM para acessar dados do OSS.
yourAccessKeyID
access-key-secret
AccessKey secret do usuário RAM para acessar dados do OSS.
Use um AccessKey existente ou crie um novo. Para mais informações, consulte Create an AccessKey.
ImportantePara reduzir o risco de vazamento do AccessKey, o AccessKey secret é exibido apenas no momento da criação e não pode ser recuperado posteriormente. Armazene o AccessKey secret de forma segura.
yourAccessKeySecret
oss-file-path
Caminho de armazenamento do objeto, geralmente no formato
oss://<bucket-name>/<path-to-file>.NotaO parâmetro
oss-file-pathoferece suporte a correspondência aproximada com curingas. Para mais informações, consulte Use wildcards for fuzzy matching of storage paths in OSS.oss://ck-test-oss/test.csv
file-format-name
Formato do objeto.
ImportanteO valor deve ser um formato de arquivo compatível com o ClickHouse, diferenciando maiúsculas de minúsculas. Para mais informações, consulte formatos de arquivo suportados pelo ClickHouse.
CSV
Exemplo:
CREATE TABLE oss_test_tb ON cluster default ( id UInt8, user_name String, age UInt16, city String, access_url String ) ENGINE = OSS('oss-cn-hangzhou-internal.aliyuncs.com', 'LTAI****************', 'yourAccessKeySecret', 'oss://ck-test-oss/test.csv', 'CSV'); -
Consulte dados do OSS.
SELECT * FROM oss_test_tb;Resultado retornado:
+--------------+---------------------+---------------+----------------+----------------------+ | id | user_name | age | city | access_url | +--------------+---------------------+---------------+----------------+----------------------+ | 1 | tick | 32 | shanghai | http://example.com | +--------------+---------------------+---------------+----------------+----------------------+ Returned rows: [1], Time elapsed: [183ms]
Método 2: Função de tabela
Enterprise ou Community-compatible (22,8 ou posterior)
-
Faça logon no banco de dados.
Faça logon no console do ApsaraDB for ClickHouse.
Na página Clusters, clique em aba Clusters of Community-compatible Edition ou Enterprise Edition Clusters e, em seguida, clique em ID do cluster desejado.
Na página Cluster Information, clique em Log On to Database no canto superior direito.
Na caixa de diálogo Connect to Instance, insira a conta e a senha do banco de dados e clique em Log On.
-
Use uma função de tabela para consultar dados.
Sintaxe:
SELECT * FROM oss('https://<bucket-name>.<oss-endpoint>/<file-name>','<access-key-id>', '<access-key-secret>', '<file-format-name>', '<col_name> <col_type>(,...)');Os parâmetros são os mesmos utilizados na criação de uma tabela externa do OSS. Para detalhes, consulte Parameter descriptions.
Exemplo:
SELECT * FROM oss('http://testBucketName.oss-cn-shanghai-internal.aliyuncs.com/test.csv', 'LTAI****************', 'yourAccessKeySecret', 'CSV', 'id UInt8, user_name String, age UInt16, city String, access_url String')Resultado retornado:
+--------------+---------------------+---------------+----------------+----------------------+ | id | user_name | age | city | access_url | +--------------+---------------------+---------------+----------------+----------------------+ | 1 | tick | 32 | shanghai | http://example.com | +--------------+---------------------+---------------+----------------+----------------------+ Returned rows: [1], Time elapsed: [183ms]
Community-compatible (21,8 ou anterior)
-
Faça logon no banco de dados.
Faça logon no console do ApsaraDB for ClickHouse.
Na página Clusters, clique em aba Clusters of Community-compatible Edition e, em seguida, clique em ID do cluster desejado.
Na página Cluster Information, clique em Log On to Database no canto superior direito.
Na caixa de diálogo Connect to Instance, insira a conta e a senha do banco de dados e clique em Log On.
-
Use uma função de tabela para consultar dados.
Sintaxe:
SELECT * FROM oss('<oss-endpoint>', '<access-key-id>', '<access-key-secret>', '<oss-file-path>', '<file-format-name>', '<col_name> <col_type>(,...)');Os parâmetros são os mesmos utilizados na criação de uma tabela externa do OSS. Para detalhes, consulte Parameter descriptions.
Exemplo:
SELECT * FROM oss('oss-cn-hangzhou-internal.aliyuncs.com', 'LTAI****************', 'yourAccessKeySecret', 'oss://ck-test-oss/test.csv', 'CSV', 'id UInt8, user_name String, age UInt16, city String, access_url String');Resultado retornado:
+--------------+---------------------+---------------+----------------+----------------------+ | id | user_name | age | city | access_url | +--------------+---------------------+---------------+----------------+----------------------+ | 1 | tick | 32 | shanghai | http://example.com | +--------------+---------------------+---------------+----------------+----------------------+ Returned rows: [1], Time elapsed: [183ms]
Exporte dados do ClickHouse ou grave dados no OSS
Notas de uso
Enterprise Edition ou Community-compatible Edition 22,8 ou posterior
Ao exportar ou gravar dados no OSS, defina s3_truncate_on_insert=1 ou s3_create_new_file_on_insert=1. Se nenhum dos parâmetros for definido ou se ambos forem definidos como 0, a operação falhará caso já exista um arquivo no caminho de destino.
-
s3_truncate_on_insert=1: O ApsaraDB for ClickHouse verifique se existe um arquivo no caminho de destino.Caso exista, o ClickHouse sobrescreve o arquivo existente com os novos dados.
Indicado para exportações ou gravações com substituição total. No entanto, prossiga com cautela, pois essa operação exclui os dados originais.
-
s3_create_new_file_on_insert=1: O ClickHouse verifique se existe um arquivo no caminho de destino.-
Se houver um arquivo existente, o ClickHouse cria um novo arquivo no diretório e grava os dados nele. O novo arquivo segue o padrão de nomenclatura:
nome do arquivo alvo + número sequencial (começando em 0 e incrementando de 1 em 1) + nome do formato de arquivo.Por exemplo, se o arquivo alvo for
test.csv, a primeira operação criatest0.csve a segunda criatest1.csv. Recomendado para exportações ou gravações incrementais, evitando a substituição de dados existentes.
-
Community-compatible Edition 21,8 ou anterior
Ao exportar ou gravar dados, apenas um único arquivo do OSS é utilizado. Os novos dados substituem o conteúdo do arquivo original. Prossiga com cautela.
Etapa 1: Faça logon no banco de dados
Faça logon no console do ApsaraDB for ClickHouse.
Na página Clusters, clique em aba Clusters of Community-compatible Edition ou Enterprise Edition Clusters e, em seguida, clique em ID do cluster desejado.
No canto superior direito da página Cluster Information, clique em Log On to Database.
Na caixa de diálogo Connect to Instance, insira a conta e a senha do banco de dados e clique em Log On.
Etapa 2: (Opcional) Prepare os dados para exportação
Caso precise preparar dados de amostra para exportar do ApsaraDB for ClickHouse para o OSS, siga estas etapas.
Se já possuir dados para exportar, pule esta etapa.
-
Crie uma tabela de acordo com a edição do seu cluster.
Este exemplo cria uma tabela em um cluster Community-compatible Edition de réplica única. Se o seu cluster for de réplica dupla executando Enterprise Edition ou Community-compatible Edition, consulte Create a table.
CREATE TABLE test_tb_local ON cluster default ( id UInt8, user_name String, age UInt16, city String, access_url String ) ENGINE = MergeTree() ORDER BY id; -
Insira dados de amostra.
INSERT INTO test_tb_local VALUES (13, 'tick', 25, 'shanghai', 'http://example.com'); -
(Opcional) Visualize os dados.
Execute a instrução a seguir para verifique se os dados foram inseridos.
SELECT * FROM test_tb_local;
Etapa 3: Crie uma tabela externa do OSS
Enterprise Edition ou Community-compatible Edition 22,8 ou posterior
Sintaxe:
CREATE TABLE <table_name> [ON cluster default]
(
'col_name1' col_type1,
'col_name2' col_type2,
...
)
ENGINE = OSS('https://<bucket-name>.<oss-endpoint>/<file-name>', '<access-key-id>', '<access-key-secret>', '<file-format-name>');
A tabela a seguir descreve os parâmetros.
|
Parâmetro |
Descrição |
Exemplo |
|
table_name |
Nome da tabela. |
oss_test_tb |
|
col_name1,col_name2 |
Nomes das colunas. |
user_name |
|
col_type1,col_type2 |
Tipos de dados das colunas. Importante
O esquema da tabela externa do OSS deve ser consistente com os dados no OSS. |
String |
|
bucket-name |
Nome do bucket do OSS. |
ck-test-oss |
|
oss-endpoint |
Endpoint interno para acessar o bucket do OSS a partir de uma instância ECS via VPC. Para mais informações, consulte Regions and endpoints. Importante
Certifique-se de que o bucket do OSS e seu cluster ApsaraDB for ClickHouse estejam na mesma região. |
oss-cn-hangzhou-internal.aliyuncs.com |
|
file-name |
Nome do objeto no bucket do OSS. |
test.csv |
|
access-key-id |
AccessKey ID do usuário RAM para acessar dados do OSS. |
yourAccessKeyID |
|
access-key-secret |
AccessKey secret do usuário RAM para acessar dados do OSS. Use um AccessKey existente ou crie um novo. Para mais informações, consulte Create an AccessKey. Importante
Para reduzir o risco de vazamento do AccessKey, o AccessKey secret é exibido apenas no momento da criação e não pode ser recuperado posteriormente. Armazene o AccessKey secret de forma segura. |
yourAccessKeySecret |
|
file-format-name |
Formato do objeto. Importante
O valor deve ser um formato de arquivo compatível com o ClickHouse, diferenciando maiúsculas de minúsculas. Para mais informações, consulte formatos de arquivo suportados pelo ClickHouse. |
CSV |
Exemplo:
CREATE TABLE oss_test_tb ON cluster default
(
id UInt8,
user_name String,
age UInt16,
city String,
access_url String
)
ENGINE = OSS('http://ck-test-oss.oss-cn-hangzhou-internal.aliyuncs.com/test.csv', 'LTAI****************', 'yourAccessKeySecret','CSV')
Community-compatible Edition 21,8 ou anterior
Sintaxe:
CREATE TABLE <table_name> [ON cluster default]
(
'col_name1' col_type1,
'col_name2' col_type2,
...
)
ENGINE = OSS('<oss-endpoint>', '<access-key-id>', '<access-key-secret>', '<oss-file-path>', '<file-format-name>');
A tabela a seguir descreve os parâmetros.
|
Parâmetro |
Descrição |
Exemplo |
|
table_name |
Nome da tabela. |
oss_test_tb |
|
col_name1,col_name2 |
Nomes das colunas. |
user_name |
|
col_type1,col_type2 |
Tipos de dados das colunas. Importante
O esquema da tabela externa do OSS deve ser consistente com os dados no OSS. |
String |
|
oss-endpoint |
Endpoint interno para acessar o bucket do OSS a partir de uma instância ECS via VPC. Para mais informações, consulte Regions and endpoints. Importante
Certifique-se de que o bucket do OSS e seu cluster ApsaraDB for ClickHouse estejam na mesma região. |
oss-cn-hangzhou-internal.aliyuncs.com |
|
access-key-id |
AccessKey ID do usuário RAM para acessar dados do OSS. |
yourAccessKeyID |
|
access-key-secret |
AccessKey secret do usuário RAM para acessar dados do OSS. Use um AccessKey existente ou crie um novo. Para mais informações, consulte Create an AccessKey. Importante
Para reduzir o risco de vazamento do AccessKey, o AccessKey secret é exibido apenas no momento da criação e não pode ser recuperado posteriormente. Armazene o AccessKey secret de forma segura. |
yourAccessKeySecret |
|
oss-file-path |
Caminho de armazenamento do objeto, geralmente no formato Nota
O parâmetro |
oss://ck-test-oss/test.csv |
|
file-format-name |
Formato do objeto. Importante
O valor deve ser um formato de arquivo compatível com o ClickHouse, diferenciando maiúsculas de minúsculas. Para mais informações, consulte formatos de arquivo suportados pelo ClickHouse. |
CSV |
Exemplo:
CREATE TABLE oss_test_tb ON cluster default
(
id UInt8,
user_name String,
age UInt16,
city String,
access_url String
)
ENGINE = OSS('oss-cn-hangzhou-internal.aliyuncs.com', 'LTAI****************', 'yourAccessKeySecret', 'oss://ck-test-oss/test.csv', 'CSV');
Etapa 4: Exporte ou grave dados no OSS
Use uma instrução INSERT INTO na tabela externa do OSS para exportar ou gravar dados no OSS. Para detalhes da sintaxe, consulte INSERT INTO.
Exporte dados do ClickHouse
Enterprise Edition ou Community-compatible Edition 22,8 ou posterior
-
Exportação com substituição total (exporta dados para o OSS e substitui os dados existentes).
INSERT INTO oss_test_tb SETTINGS s3_truncate_on_insert = 1 SELECT * FROM test_tb_local; -
Exportação incremental (exporta dados para o OSS sem substituir os dados existentes).
INSERT INTO oss_test_tb SETTINGS s3_create_new_file_on_insert = 1 SELECT * FROM test_tb_local;Esta operação cria um novo arquivo no bucket do OSS. O novo arquivo segue o padrão de nomenclatura:
nome do arquivo alvo + número sequencial (começando em 0 e incrementando de 1 em 1) + nome do formato de arquivo.Por exemplo, se o nome do arquivo alvo especificado ao criar a tabela externa do OSS for
test.csv, o novo arquivo será nomeado comotest0.csv. Ao execute a operação novamente, o novo arquivo serátest1.csv. Use o OSS console para visualize o novo arquivo.
Community-compatible Edition 21,8 ou anterior
A exportação de dados do ApsaraDB for ClickHouse para o OSS substitui os dados existentes. Prossiga com cautela.
INSERT INTO oss_test_tb SELECT * FROM test_tb_local;
Grave dados
Enterprise Edition ou Community-compatible Edition 22,8 ou posterior
-
Grave novos dados no OSS e substitua os dados existentes.
INSERT INTO oss_test_tb SETTINGS s3_truncate_on_insert = 1 VALUES (14, 'tick', 25, 'shanghai', 'http://example.com'); -
Grave novos dados no OSS sem substituir os dados existentes.
INSERT INTO oss_test_tb SETTINGS s3_create_new_file_on_insert = 1 VALUES (14, 'tick', 25, 'shanghai', 'http://example.com');Esta operação cria um novo arquivo no bucket do OSS. O novo arquivo segue o padrão de nomenclatura:
nome do arquivo alvo + número sequencial (começando em 0 e incrementando de 1 em 1) + nome do formato de arquivo.Por exemplo, se o nome do arquivo alvo especificado ao criar a tabela externa do OSS for
test.csv, o novo arquivo será nomeado comotest0.csv. Ao execute a operação novamente, o novo arquivo serátest1.csv. Use o OSS console para visualize o novo arquivo.
Community-compatible Edition 21,8 ou anterior
A gravação de dados do ApsaraDB for ClickHouse no OSS substitui os dados existentes. Prossiga com cautela.
INSERT INTO oss_test_tb SETTINGS s3_truncate_on_insert = 1 VALUES (14, 'tick', 25, 'shanghai', 'http://example.com');
Mais operações: Importe dados do OSS para o ClickHouse
Se utilizar o OSS como armazenamento intermediário para migração de dados, também será necessário importar os dados do OSS para o cluster de destino. Para mais informações, consulte Import data from OSS.