Une fois le projet externe créé dans la configuration lakehouse, utilisez des instructions SQL pour interroger et modifier les données stockées dans Data Lake Formation (DLF) et Object Storage Service (OSS), ou dans un cluster Hadoop externe, sans quitter l'environnement SQL MaxCompute.
Prérequis
Avant de commencer, assurez-vous d'avoir :
Créé un projet externe sur la page Lake and Warehouse Integration (Data Lakehouse) de la console DataWorks
Accès au client MaxCompute
Exécutez toutes les instructions SQL dans le projet MaxCompute auquel le projet externe est mappé, et non dans le projet externe lui-même. Vous ne pouvez pas exécuter de tâches directement dans un projet externe.
Pour faire référence à une table d'un projet externe, utilisez le format nom_projet_externe.nom_table.
Persister les paramètres de session
De nombreuses opérations nécessitent des commandes SET. Pour éviter de les saisir à chaque session, ajoutez-les au fichier odps_config.ini du répertoire d'installation de votre client MaxCompute. Les paramètres de ce fichier s'appliquent automatiquement au démarrage.
Gérer un projet externe basé sur DLF et OSS
Vous ne pouvez pas créer de table dans un projet externe. Effectuez toutes les créations de tables dans le projet MaxCompute mappé.
Insérer des données
Table non partitionnée :
-- 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");
Table partitionnée :
-- 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');
Consulter les informations d'une table
-- 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;
Interroger les données d'une table
-- 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';
Paramètres spécifiques pour DLF + OSS
Certains scénarios requièrent des paramètres de session supplémentaires avant l'exécution des instructions 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;
Pour plus d'informations, consultez les rubriques Opérations sur les tables, INSERT INTO et INSERT OVERWRITE et Téléchargement en plusieurs parties.
Gérer un projet externe basé sur une source de données Hadoop externe
Utilisez les instructions suivantes pour interroger les données des tables Hive à partir d'une source de données Hadoop externe.
-- 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;
Les instructions DDL sur les tables Hadoop externes ne sont pas prises en charge, sauf pour l'ajout et la suppression de partitions. Pour obtenir la liste complète de la syntaxe DDL prise en charge, consultez la rubrique Présentation de MaxCompute SQL.
Créer une table avec le même schéma qu'une table externe
Utilisez CREATE TABLE...LIKE pour créer une table MaxCompute ayant le même schéma qu'une table de la source de données externe. La nouvelle table copie les noms de colonnes, les commentaires de colonnes et les commentaires de table de la table source, mais pas le paramètre de cycle de vie ni les données.
-- 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;
Pour plus d'informations sur la syntaxe et les options de CREATE TABLE...LIKE, consultez la rubrique Opérations sur les tables.
Étapes suivantes
Pour accorder à d'autres utilisateurs l'accès à un projet externe ou à ses tables, consultez la rubrique Accorder des permissions sur un projet externe à d'autres utilisateurs.