Voici quelques informations sur vos questions :
-
Les fichiers de flux entrés dans PutHiveQL sont sortis après avoir été envoyés à Hive (ou si l'envoi échoue), de sorte que le format de sortie (et le contenu) est identique au format/contenu d'entrée.
-
La table de sortie doit être créée au préalable, mais vous pouvez envoyer à PutHiveQL une instruction "CREATE TABLE IF NOT EXISTS" et il créera la table pour vous.
-
Je n'ai pas connaissance d'un modèle existant, mais une approche de base pourrait être la suivante :
QueryDatabaseTable -> ConvertAvroToJSON -> SplitJson -> EvaluateJsonPath -> UpdateAttribute (facultatif) -> ReplaceText -> PutHiveQL
-
QueryDatabaseTable effectuera des récupérations incrémentielles de votre table MySQL.
-
ConvertAvroToJSON convertira les enregistrements dans un format que vous pouvez manipuler (il n'y a actuellement pas beaucoup de processeurs qui gèrent Avro).
-
SplitJson va créer un fichier de flux pour chacun des enregistrements/rangs.
-
EvaluateJsonPath peut extraire des valeurs des enregistrements et les mettre dans attributs du fichier de flux
-
UpdateAttribute pourrait ajouter des attributs contenant des informations sur le type. Ceci est optionnel, utilisé si vous utilisez des instructions préparées pour PutHiveQL
-
ReplaceText construit une instruction HiveQL (INSERT, par exemple) avec des paramètres (si vous voulez des instructions préparées) ou des valeurs codées en dur. paramètres (si vous voulez des instructions préparées) ou des valeurs codées en dur à partir des attributs
-
PutHiveQL exécute la ou les instructions pour obtenir les enregistrements dans Hive.
Dans NiFi 1.0, il y aura une ConvertirAvroToORC il s'agit d'un moyen plus efficace d'introduire des données dans Hive (ainsi que de les interroger à partir de Hive). Cette approche consiste à convertir les résultats de QueryDatabaseTable en fichiers ORC, qui sont ensuite placés dans HDFS (en utilisant PutHDFS), et cela génère une instruction DDL Hive partielle pour créer la table pour vous (en utilisant les informations de type des enregistrements Avro). Vous passez cette instruction (après avoir rempli l'emplacement cible) à PutHiveQL, et vous pouvez immédiatement commencer à interroger votre table.
Il est également prévu de créer un PutHiveStreaming qui prend les enregistrements Avro en entrée, de sorte que le flux serait simplement QueryDatabaseTable -> PutHiveStreaming, qui insérerait les enregistrements directement dans Hive (et est beaucoup plus efficace que de multiples instructions INSERT).