sanjivsingh-FixedLengthAndDelimitedSerde
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.