Tous les produits
Search
Centre de documentation

Tablestore:Utilisation d'EMR

Dernière mise à jour :Aug 08, 2026

Connectez EMR à un lac de données Object Storage Service (OSS) en utilisant le mode cache JindoFS.

Contexte

EMR peut se connecter à un lac de données OSS via le mode cache JindoFS ou le mode de stockage par blocs JindoFS.

  • Le mode cache assure la compatibilité avec OSS natif en stockant les fichiers sous forme d'objets. Pour améliorer l'efficacité des accès au sein du cluster EMR, les fichiers fréquemment consultés sont mis en cache localement. Cette approche préserve le format de fichier d'origine, garantissant une compatibilité totale avec les autres clients OSS. Pour plus d'informations, consultez Instructions d'utilisation du mode cache JindoFS.

  • Le mode de stockage par blocs offre une efficacité maximale pour la lecture, l'écriture et l'accès aux métadonnées. Dans ce mode, les données sont stockées sous forme de blocs dans OSS et un cache local accélère les opérations. Un service Namespace local gère les métadonnées pour garantir des performances d'accès élevées. Pour plus d'informations, consultez Instructions d'utilisation du mode de stockage par blocs JindoFS.

Prérequis

  • Vous avez créé un cluster EMR. Pour plus d'informations, consultez Créer un cluster.

    Lors de la création du cluster, tenez compte des points suivants :

    • Le cluster EMR et le bucket OSS doivent appartenir au même compte Alibaba Cloud. Pour des résultats optimaux, ils doivent également se trouver dans la même région.

    • Lors de la création du cluster, activez Assign Public Network IP et Log on to Cluster in SSH Mode. Ces options connectent le cluster au réseau public et vous permettent de vous connecter à distance au serveur via un shell.

    • Les services bigboot et smartdata sont requis pour les configurations ultérieures. S'ils ne sont pas sélectionnés par défaut, veillez à les sélectionner.

  • Vous avez créé une tâche Data Lake Delivery. Pour plus d'informations, consultez Démarrage rapide.

Procédure

  1. Connectez-vous à OSS et activez la mise en cache via le mode cache JindoFS dans EMR. Pour plus d'informations, consultez Instructions d'utilisation du mode cache JindoFS.

    Cette fonctionnalité utilise les disques locaux pour mettre en cache les blocs de données fréquemment accédés. Par défaut, elle est désactivée et toutes les opérations de lecture accèdent directement aux données depuis OSS. Lorsque la mise en cache est activée, le service Jindo gère automatiquement le cache local et le vide selon un seuil haut. Configurez le ratio de cache en fonction de vos besoins.

  2. Démarrez Spark SQL.

    1. Utilisez un outil de connexion à distance, tel que PuTTY, pour vous connecter au serveur principal EMR.

    2. Exécutez la commande suivante pour démarrer Spark SQL.

      spark-sql --master yarn --num-executors 5 --executor-memory 1g --executor-cores 2
  3. Créez une table externe pointant vers le répertoire de données OSS à l'aide d'une instruction SQL.

    Récupérez l'instruction SQL depuis la console Table Store. L'instruction SQL suivante est fournie à titre de référence uniquement.

    CREATE EXTERNAL TABLE  lineitem (l_orderkey bigint,l_linenumber bigint,l_receiptdate string,l_returnflag string,l_tax double,l_shipmode string,l_suppkey bigint,l_shipdate string,l_commitdate string,l_partkey bigint,l_quantity double,l_comment string,l_linestatus string,l_extendedprice double,l_discount double,l_shipinstruct string) PARTITIONED BY (`year` int, `month` int) STORED AS PARQUET  LOCATION  'jfs://test/' ;

    Sur la page Deliver Data to OSS de l'instance, dans la colonne Actions de la tâche de livraison, cliquez sur View Statement to Create Table pour afficher et copier l'instruction SQL.

  4. Exécutez l'instruction SQL suivante pour charger les partitions de données depuis la source de données OSS.

    Dans la commande, lineitem correspond au nom de la table externe que vous avez créée.

    msck repair table lineitem;
    20/09/22 15:17:04 INFO [main] SparkSQLQueryListener: execution is called
    20/09/22 15:17:04 INFO [main] SparkSQLQueryListener: Spark user root executed on 1600759024916 with spark sql successfully.
    Time taken: 1.377 seconds
    20/09/22 15:17:04 INFO [main] SparkSQLCLIDriver: Time taken: 1.377 seconds
    spark-sql> msck repair table lineitem;
    20/09/22 15:17:20 INFO [main] AlterTableRecoverPartitionsCommand: Recover all the partitions in jfs://test/
    20/09/22 15:17:20 INFO [main] AbstractJindoFileSystem: Jboot log name is /var/log/bigboot/jboot-INFO-1600759040539-
    20/09/22 15:17:20 INFO [main] OssStore: Filesystem support for magic committers is enabled, write buffer size 1048576
    20/09/22 15:17:21 INFO [main] FsStats: cmd=listStatus, src=jfs://test/, dst=null, size=1, parameter=, time-in-ms=444, version=2.7.301
    20/09/22 15:17:21 INFO [main] FsStats: cmd=listStatus, src=jfs://test/year=2020, dst=null, size=2, parameter=, time-in-ms=151, version=2.7.301
    20/09/22 15:17:21 INFO [main] AlterTableRecoverPartitionsCommand: Found 2 partitions in jfs://test/
    20/09/22 15:17:21 INFO [main] FsStats: cmd=listStatus, src=jfs://test/year=2020/month=8, dst=null, size=21, parameter=, time-in-ms=163, version=2.7
    20/09/22 15:17:21 INFO [main] FsStats: cmd=listStatus, src=jfs://test/year=2020/month=9, dst=null, size=21, parameter=, time-in-ms=86, version=2.7
    20/09/22 15:17:21 INFO [main] AlterTableRecoverPartitionsCommand: Finished to gather the fast stats for all 2 partitions.
    20/09/22 15:17:22 INFO [main] AlterTableRecoverPartitionsCommand: Recovered all partitions (2).
    20/09/22 15:17:22 INFO [main] SparkSQLQueryListener: command is called
    20/09/22 15:17:22 INFO [main] SparkSQLQueryListener: Spark user root executed on 1600759042070 with spark sql successfully.
    20/09/22 15:17:22 INFO [main] SparkSQLQueryListener: execution is called
    20/09/22 15:17:22 INFO [main] SparkSQLQueryListener: Spark user root executed on 1600759042100 with spark sql successfully.
    Time taken: 1.693 seconds
    20/09/22 15:17:22 INFO [main] SparkSQLCLIDriver: Time taken: 1.693 seconds
    spark-sql>
  5. Interrogez les données.

    select * from lineitem limit 1;
    20/09/22 15:18:51 INFO [main] SparkSQLQueryListener: execution is called
    20/09/22 15:18:51 INFO [main] SparkSQLQueryListener: Spark user root executed on 1600759131254 with spark sql successfully.
    20/09/22 15:18:51 INFO [main] FsStats: cmd=getFileStatus, src=jfs://test/_index, dst=null, size=-1, parameter=null, time-in-ms=22, version=2.7.301
    20/09/22 15:18:51 INFO [main] PrunedInMemoryFileIndex: It took 1 ms to list leaf files for 2 paths.
    20/09/22 15:18:51 INFO [main] SparkSQLQueryListenerHelper: Partitioned table:default.lineitem;cols:l_orderkey,l_linenumber,l_receiptdate,l_returnflag,l_tax,l_shipmode,l_suppkey,l_shipdate,_commitdate,l_partkey,l_quantity,l_comment,l_linestatus,l_extendedprice,l_discount,l_shipinstruct;parts:year=2020/month=8,year=2020/month=9;paths:jfs://test/year=2020/month=8,jfs://test/year=2020/month=9.
    20/09/22 15:18:51 INFO [main] NativeClient: JindoTable put 2 records.
    44095908	1	1996-09-19	N	0.03	SHIP	5928453 1996-08-28	1996-06-19	145353442	10.0	lly ironic theo O	14881.8 0.08	TAKE BACK RETURN
    020	8
    Time taken: 6.22 seconds, Fetched 1 row(s)
    20/09/22 15:18:51 INFO [main] SparkSQLCLIDriver: Time taken: 6.22 seconds, Fetched 1 row(s)
    spark-sql>