J'utilise serde pour lire des données avec un format spécifique avec délimiteur |regex pour la chaîne de délimiteur spécifique dans Hive serde
Une ligne de mes données peut ressemble: key1 = valeur2 | key2 = valeur2 | key3 = "va, Lues", et je créer la table ruche comme ci-dessous:
CREATE EXTERNAL TABLE(
field1 STRING,
field2 STRING,
field3 STRING
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
"input.regex" = "([^\\|]*)\\|([^\\|]*)\\|([^\\|]*)",
"output.format.string" = "%1$s %2$s %3$s"
)
STORED AS TEXTFILE;
Je dois extraire toutes les valeurs, ignorer tous les quotas s'ils existent. Résultat ressemble à un
value2 value2 va , lues
Comment puis-je changer mon expression rationnelle actuelle pour les valeurs de extractig?
Quel est votre résultat de sortie courant pour l'entrée donnée? – horcrux
key1 = valeur2 key2 = valeur2 key3 = "va, lues" – rmnvnv
Alors changez simplement ceci: '" input.regex "=" [^ \\ | =] * = \ "? ([^ \\ |] *) \ "? \\ | [^ \\ | =] * = \"? ([^ \\ |] *) \ "? \\ | [^ \\ | =] * = \"? ([^ \\ | ] *) \ "?", ' – horcrux