2017-02-28 3 views
1

私はcassandraを初めて使用しています。私は主に過去数ヶ月のハイブを使用してきました。最近私は、私がハイブで行ったことのいくつかを、代わりにカッサンドラで行う必要があるプロジェクトを開始しました。カサンドラ集計から

本質的に、私は複数の行の集約をクエリ上の単一のマップにする方法を見つけることを試みています。

ハイブでは、単にグループを「地図」集約で作成します。似たようなことをするためにカサンダに存在する方法はありますか?

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 

答えて

0

マッピングクエリ結果がマップ(または任意の他のタイプ/構造/クラス)する責任である:ここでは

は私がやって探していたタスクがない作業ハイブクエリの例です。通常は簡単なタスクです(ただし、このマップをどのコンテキストで使用するかは指定していません)。

ここに実際の質問は約GROUP BYのカサンドラです。これは箱からはサポートされていません。 Cassandraのstandard aggregate functionsを確認するか、user defined functionを作成してみてください。Cassandra Wayは事前にクエリを知っていて、それに応じてスキーマを設計し、後で書き込み段階で重労働を起こし、後で単純なクエリを実行します。したがって、グループ化/集約は、専用のcounter tablesを使用して達成することができます。

もう1つの選択肢は、追加のレイヤー(Apache Sparkなど)でデータ処理を行うことです。あなたはCassandraの上でHiveを使うことを考えましたか?

関連する問題