Após criar um projeto externo na configuração do data lakehouse, use instruções SQL para consultar e modificar dados armazenados no Data Lake Formation (DLF) e no Object Storage Service (OSS), ou em um cluster Hadoop externo, sem sair do ambiente SQL do MaxCompute.
Pré-requisitos
Antes de começar, verifique se você tem:
Um projeto externo criado na página Lake and Warehouse Integration (Data Lakehouse) no console do DataWorks
Acesso ao cliente do MaxCompute
Execute todas as instruções SQL no projeto do MaxCompute ao qual o projeto externo está mapeado, e não no próprio projeto externo. Não é possível executar jobs diretamente em um projeto externo.
Ao referenciar uma tabela em um projeto externo, use o formato external_project_name.table_name.
Persista parâmetros de sessão
Muitas operações exigem comandos SET. Para evitar repeti-los a cada sessão, adicione-os ao arquivo odps_config.ini no diretório de instalação do cliente MaxCompute. O sistema aplica os parâmetros desse arquivo automaticamente na inicialização.
Gerencie um projeto externo baseado em DLF e OSS
Não é possível criar tabelas diretamente em um projeto externo. Crie todas as tabelas no projeto do MaxCompute mapeado.
Insira dados
Tabela não particionada:
-- Switch to the MaxCompute project mapped to the external project.
use doc_test_prod;
-- Insert a row into a non-partitioned table.
insert into table ext_mcdlf_ddl.ddl_test values(1,"ddl_test_1");
Tabela particionada:
-- Switch to the MaxCompute project mapped to the external project.
use doc_test_prod;
-- Insert rows into a specific partition.
insert overwrite table ext_mcdlf_ddl.range_ptstring_ptint partition (pt1 = 'ds1', pt2=2) values (4, 'val4'), (5, 'val5');
Visualize informações da tabela
-- Switch to the MaxCompute project mapped to the external project.
use doc_test_prod;
-- List all tables in the external project.
show tables in doc_test_prod;
-- View the schema of a specific table.
desc extended ext_mcdlf_ddl.ddl_test;
Consulte dados da tabela
-- Switch to the MaxCompute project mapped to the external project.
use doc_test_prod;
-- Query a non-partitioned table.
select * from ext_mcdlf_ddl.ddl_test limit 10;
-- Query a partitioned table with a partition filter.
select * from ext_mcdlf_ddl.range_ptstring_ptint where pt1='ds1';
Parâmetros especiais para DLF + OSS
Alguns cenários exigem parâmetros de sessão adicionais antes da execução das instruções SQL:
-- Required if the Optimized Row Columnar (ORC) version is later than ORC-135.
set odps.ext.oss.orc.native=true;
-- Required to enable Hive-compatible data types.
-- MaxCompute supports Hive syntax only after you enable this setting.
set odps.sql.hive.compatible=true;
-- Enable multipart upload for the current session.
set odps.sql.unstructured.oss.commit.mode=true;
-- Enable multipart upload for the entire project.
setproject odps.sql.unstructured.oss.commit.mode=true;
Para mais informações, consulte Operações de tabela, INSERT INTO e INSERT OVERWRITE e Upload multipart.
Gerencie um projeto externo baseado em uma fonte de dados Hadoop externa
Use as instruções a seguir para consultar dados de tabelas Hive de uma fonte de dados Hadoop externa.
-- Switch to the MaxCompute project mapped to the external project.
use <main_project_name>;
-- Enable Hive-compatible mode.
-- Required for E-MapReduce (EMR) tables; not required for MaxCompute tables.
set odps.sql.hive.compatible=true;
-- Optional: specify the username used to access the Hadoop data source.
set odps.external.hadoop.user=<hadoop_name>;
-- Query data from the Hive table.
select * from <my_hive_table> limit 10;
O sistema não oferece suporte a instruções DDL em tabelas Hadoop externas, exceto para adicionar e remover partições. Para obter a lista completa da sintaxe DDL compatível, consulte Visão geral do SQL do MaxCompute.
Crie uma tabela com o mesmo esquema de uma tabela externa
Use CREATE TABLE...LIKE para criar uma tabela do MaxCompute com o mesmo esquema de uma tabela na fonte de dados externa. A nova tabela copia os nomes das colunas, os comentários das colunas e os comentários da tabela de origem, mas não copia a configuração de ciclo de vida nem os dados.
-- Create a MaxCompute table with the same schema as external_project.testtbl.
create table from_exe_tbl like external_project.testtbl;
-- Verify the schema was copied correctly.
desc from_exe_tbl;
-- Query the new table (it starts empty; data is not copied from the source).
SELECT * from from_exe_tbl;
Para obter mais detalhes sobre a sintaxe e as opções de CREATE TABLE...LIKE, consulte Operações de tabela.
Próximos passos
Para conceder acesso a outros usuários em um projeto externo ou nas respectivas tabelas, consulte Conceder permissões de projeto externo a outros usuários.