Aller au contenu principal
Version: 1.3.1.0

Modes de lecture

HWC prend en charge plusieurs modes de lecture. Choisissez un mode selon les exigences de sécurité, les performances et la taille des données.

Configuration :

spark.datasource.hive.warehouse.read.mode=secure_access
spark.datasource.hive.warehouse.read.jdbc.mode=cluster

Lecteur direct (LLAP)

direct_reader_v1 et direct_reader_v2 lisent les données ORC directement via LLAP sans faire transiter les requêtes par HS2. C'est l'option la plus rapide mais elle n'applique pas les politiques Ranger/HS2. Utilisez-la pour des pipelines ETL de confiance.

Caractéristiques principales :

  • Lit un instantané cohérent d'une seule table au moment de la requête.
  • Nécessite les permissions HDFS pour accéder aux données de la table.
  • N'applique pas l'autorisation Hive (Ranger) au niveau HS2.
  • Ne prend pas en charge les écritures ni les insertions en streaming.

Mode JDBC

jdbc_cluster et jdbc_client envoient les requêtes à HS2 et renvoient les résultats à Spark. Utilisez JDBC lorsque vous avez besoin de l'application des autorisations HS2 et de la sémantique des requêtes fournie par Hive.

  • jdbc_client : les résultats transitent par le driver (plus simple, plus lent).
  • jdbc_cluster : HS2 envoie les résultats aux executors (mieux pour les gros volumes de résultats).

Mode accès sécurisé

secure_access exécute la requête dans HS2 et met les résultats en staging dans un répertoire temporaire via un workflow CTAS. Spark lit ensuite les données ORC mises en staging. C'est le mode recommandé pour les clusters protégés par Ranger.

Prérequis :

  • Définir spark.datasource.hive.warehouse.load.staging.dir avec une URI qualifiée.
  • S'assurer que le répertoire de staging a les permissions appropriées.

Remarques :

  • Les UDF Spark ne sont pas prises en charge car la requête est exécutée par Hive.
  • Les lectures peuvent échouer avec des erreurs de verrou si une autre transaction détient un verrou exclusif ; réessayer après commit.
  • Le cache peut être désactivé avec spark.hadoop.secure.access.cache.disable=true.