2017-02-28 2 views
1

Ich bin neu in Cassandra, ich habe hauptsächlich Hive in den letzten Monaten verwendet. Kürzlich habe ich ein Projekt gestartet, bei dem ich einige Dinge tun muss, die ich mit Cassandra gemacht habe.Cassandra Aggregat zu Karte

Im Wesentlichen versuche ich, eine Möglichkeit zu finden, ein Aggregat aus mehreren Zeilen in einer einzigen Karte auf Abfrage zu tun.

In Bienenstock, mache ich einfach eine Gruppe von, mit einem "map" Aggregat. Gibt es in Cassandra einen Weg, etwas Ähnliches zu tun?

Hier ein Beispiel für eine Arbeits hive Abfrage ist, die die Aufgabe hat ich bin auf der Suche nach:

select 
     map(
     "quantity", count(caseid) 
     , "title" ,casesubcat 
     , "id" , casesubcatid 
     , "category", named_struct("id",casecatid,'title',casecat) 
    ) as casedata 
from caselist 
group by named_struct("id",casecatid,'title',casecat) , casesubcat, casesubcatid 

Antwort

0

Mapping Abfrageergebnisse (eine andere Art/Struktur/Klasse Ihrer Wahl oder) Karte ist Verantwortung der Client-Anwendung und ist in der Regel eine triviale Aufgabe (aber Sie haben nicht angegeben, in welchem ​​Kontext diese Karte verwendet wird).

Aktuelle Frage hier ist über GROUP BY in Cassandra. Dies wird nicht standardmäßig unterstützt. Sie können Cassandras standard aggregate functions überprüfen oder versuchen, user defined function zu erstellen, aber Cassandra Way kennt Ihre Abfrage im Voraus, entwirft Ihr Schema entsprechend, macht schweres Heben in der Schreibphase und vereinfachtes Abfragen danach. Somit kann die Gruppierung/Aggregation oft unter Verwendung von dedizierten counter tables erreicht werden.

Eine weitere Option ist die Datenverarbeitung in zusätzlichen Ebenen (z. B. Apache Spark). Hast du darüber nachgedacht, Hive auf Cassandra zu verwenden?