La longueur fixe et la longueur délimitée

Ce projet vise à mettre en œuvre une longueur fixe et un SERDE (Serializer/Deserializer) délimité pour Apache HIVE.

  • Actuellement, la plupart des SerDe disponibles soutiennent soit la longueur fixe ou la sérialisation/desérialisation des fichiers délimité.
  • Un seul serpent pour tout usage.

caractéristiques

  • Soutenu à la fois la longueur fixe et la sérialisation/desérialisation de données délimité
  • La valeur de la colonne Range Basd a été soutenue.
  • Il soutient les deux cas en une seule définition.

Propriétés Serde

Les propriétés suivantes s’appliquent à Serde.

  • Étiquette : format.string- obligatoire - définit le format d'enregistrement complet
  • Mise à jour.format.column.seperator- (optionnel) par défaut "#" - séparateur entre les formats de colonne dans 'input.format.string'
  • Étiquette : null.format- (optionnel) par défaut "space" - fichier null format. valeurs possibles "space" et "blanc"

Voir l’exemple pour le comprendre : Dites que vous avez 'FL2#FL10#DM♰#DM,#FL20' comme 'input.format.string' et '#' comme 'input.format.column.seperator'. Après avoir divisé 'FL2#FL10#DM♰#DM,#FL20' par '#', vous obtiendrez le format pour chaque colonne dans la table.

Ci-dessous sont les colonnes en format de 'input.format.string'

  • FL2
  • FL10
  • La DM est
  • le DM,
  • FL20

Nous comprenons de quoi parlent ces formats de colonnes.

  • Chaque format de colonne commence soit par 'FL' ou 'DM' ou 'RN'
  • 'FL' pour la colonne de longueur fixe,après 'FL' vous avez un nombre qui représente la longueur de la valeur de la colonne dans l'enregistrement d'entrée
  • 'DM' pour la colonne délimitée, après 'DM' vous avez un délimiteur de colonne qui la séparera de la valeur de la prochaine colonne.
  • 'RN' pour la colonne de gamme, après 'RM' vous avez la colonne N1:N2 où N1 et N1 sont l'indice de début et de fin sur la valeur de la colonne dans la ligne de rang.

Commencez par

Réservatoire de clones et construction.

 git clone https://github.com/sanjivsingh/FixedLengthAndDelimitedSerde.git  
 cd FixedLengthAndDelimitedSerde  
 mvn clean install 

Lorsque la construction est terminée, il fautRésuméRésuméRésuméRésuméRésuméRésuméRésumédans le directeur cible.

Comment utiliser

Créer un fichier avec des données d'échantillon /tmp/FixedLengthAndDelimitedSerdeRegexSerDe.txt

 01mycolumn122015-07-18|100.50,my column 005 values 
 02mycolumn222015-07-19|100.51,my column 015 values 

Ajoutez JAR

 HIVE> add jar /tmp/FixedLengthAndDelimitedSerde-0.0.1-SNAPSHOT.jar ;
 

Créer une table

  
  HIVE>CREATE TABLE FixedLengthAndDelimitedSerdeTest (
    column1 STRING, -- string(2)
    column2 STRING, -- string(10)
    column3 STRING, -- date in format "yyyy-MM-dd" terminated by '|'
    column4 STRING, -- decimal terminated by ','
    column5 STRING  -- string(20)
 )
 ROW FORMAT SERDE 'com.googlecode.hive.serde.FixedLengthAndDelimitedSerde'
 WITH SERDEPROPERTIES  (
 'input.format.string'='FL2#FL10#DM|#DM,#FL20'
 )STORED AS TEXTFILE;

Téléchargez le fichier à table

 HIVE> load data local inpath '/tmp/FixedLengthAndDelimitedSerdeRegexSerDe.txt' overwrite into table FixedLengthAndDelimitedSerdeTest ;

Sélectionnez de la table

  HIVE> select * from FixedLengthAndDelimitedSerdeTest ;
 +---------+------------+------------+---------+----------------------+--+
 | column1 | column2    | column3    | column4 | column5              | 
 +---------+------------+------------+---------+----------------------+--+
 | 01      | mycolumn12 | 2015-07-18 | 100.50  | my column 005 values |
 | 02      | mycolumn22 | 2015-07-19 | 100.51  | my column 015 values |
 +---------+------------+------------+---------+----------------------+--+

Ici, vous allez, votre fichier avec un modèle de données complexe chargé dans la table et vous êtes en mesure de demander.