Erstellung von name_tab:ngrams ohne Worte Aufträge in Hive
CREATE TABLE name_tab (country string,
new_item ARRAY<STRUCT<ngram:array<string>,
estfrequency:double>>);
Insert-Anweisung:
INSERT OVERWRITE TABLE name_tab
SELECT country, ngrams(sentences(var2),3,100) as word_map
FROM bdd
GROUP BY country;
Erstellung von name_tab_new:
CREATE TABLE name_tab_new (country string, ngram1 string, ngram2 string, ngram3 string, estfrequency double);
Anweisung Insert:
INSERT OVERWRITE TABLE name_tab_new
SELECT country , X.ngram[0], X.ngram[1], X.ngram[2], X.estfrequency
FROM name_tab
LATERAL VIEW explode(new_item) Z as X;
Diese Anfragen in Hive arbeiten. Es erstellt Ngrams nach Land. Das Problem: Für ein Land gibt es einen Unterschied zwischen diesem Ngram {aa, bb, cc}
und diesem Ngram {bb, aa, cc}
.
Ich möchte eine Lösung, die die Wörter Bestellungen nicht wichtig ist. Für ein Land möchte ich keinen Unterschied zwischen {aa, bb, cc}
und {bb, aa, cc}
. Ich will nur einen von ihnen.
Vielen Dank
Ergebnisse Beispiel:
* England, Brot, Sandwich, Saft, 120
England, Schreibtisch, Stuhl, Werkzeug, 54
England, Sandwich, Brot, Saft, 32
Italien, Meer, Roma, Coliseo, 47 *
Eigentlich möchte ich, dass:
* England, Brot, Sandwich, Saft, 152
England, Schreibtisch, Stuhl, Werkzeug, 54
Italien, Meer, Roma, Coliseo, 47 *
Ich hoffe, es gibt eine Option in der Ngrams-Funktion für die Nichtberücksichtigung der Reihenfolge.
In der Tabelle bdd ist die Variable "var2" eine Liste mehrerer Wörter, die durch ein Leerzeichen getrennt sind.
In der Tabelle name_tab haben wir:
Erste Zeile England, { "ngram": [ "Brot", "Sandwich", "Saft"], "estfrequency": 120,0}, { "ngram": ["Schreibtisch", "Stuhl", "Werkzeug"], "estfrequency": 54.0}, {"ngram": ["Sandwich", "Brot", "Saft"], "estfrequency": 32.0}
Zweite Linie Italien, { "ngram": [ "Meer", "Roma", "Coliseo"], "estfrequency": 47.0}
Ihre Frage nicht klar ist, liefern eine Datenprobe einschließlich der erforderlichen Ergebnisse. –
Ich hatte ein Beispiel. Danke – Camel
Ich sehe nicht, wie dieses Beispiel diesen Pfosten bezieht –