Ich benutze serde, um Daten mit spezifischem Format mit Trennzeichen | zu lesenregex für spezifische Trennzeichenfolge in Hive serde
Eine Zeile meiner Daten kann aussehen wie: key1 = Wert2 | key2 = Wert2 | key3 = "va, Lues", und ich erstellen Sie die Struktur Tabelle wie folgt:
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;
Ich muss extrahiere alle Werte, ignoriere alle Kontingente, wenn sie existieren. Ergebnis sieht aus wie ein
value2 value2 va , lues
Wie kann ich meine aktuelle regexp für extractig Werte ändern?
Was Ihr aktuelles Ausgabeergebnis für den angegebenen Eingang ist? – horcrux
key1 = value2 key2 = value2 key3 = "va, lues" – rmnvnv
Ändere das einfach: '" input.regex "=" [^ \\ | =] * = \ "? ([^ \\ |] *) \ "? \\ | [^ \\ | =] * = \"? ([^ \\ |] *) \ "? \\ | [^ \\ | =] * = \"? ([^ \\ | ] *) \ "?", ' – horcrux