私はHadoop/Sparkでいくつかのシグナル分析を行い、プロセス全体をどのように構築するかについて助言が必要です。ビッグデータシグナル解析:シグナルデータを保存して問い合わせるためのより良い方法
信号が、今私たちはSqoopで読まれ、に似てスキーマを使用して、HDFS上のファイルに変換されますことを、データベースに格納されています。
<Measure ID> <Source ID> <Measure timestamp> <Signal values>
信号値は浮動小数点で作られた単なる文字列です
コンマで区切られた数字。我々は、対話型/バッチクエリを記述したいと思い
00S001 2015/04/22T10:00:00.000Z 0.0,1.0,200.0,30.0 ... 100.0
000124 S001 2015/04/22T10:05:23.245Z 0.0,4.0,250.0,35.0 ... 10.0
...
000126 S003 2015/04/22T16:00:00.034Z 0.0,0.0,200.0,00.0 ... 600.0
:
は、信号の上に集約関数を適用1000.0の上にピークを持っていた信号を選択するには
SELECT *
FROM SIGNALS
WHERE MAX(VALUES) > 1000.0
値。
は1500.0を超え、少なくとも一つの信号を有するソースを選択する
SELECT SOURCEID, MAX(VALUES) FROM SIGNALS GROUP BY SOURCEID HAVING MAX(MAX(VALUES)) > 1500.0
集合にわたって集約を適用します。
は5.0 kHzで濾過された後に100.0上に少なくとも値を有する信号を選択するためにサンプル
SELECT *
FROM SIGNALS
WHERE MAX(LOW_BAND_FILTER("5.0 KHz", VALUES)) > 100.0)
介してユーザ定義関数を適用します。
我々はためにいくつかの助けを必要とする:HDFS上の信号データを書き込むための正しいファイル形式を見つける
- 。私はApache Parquetを考えました。どのようにデータを構造化しますか?
- データ分析の適切なアプローチを理解してください。さまざまなデータセット(Sparkでデータを処理し、HDFSで結果を永続化するなど)を作成するか、元のデータセットからクエリ時にすべてを実行する方がよいでしょうか?
- は、私が書いたようなクエリを作成するのに最適なツールですか?私たちはCloudera Enterprise Hadoopを実行しているので、Impalaも使用できます。
- 元のデータセットとは異なる派生データセットを作成する場合、データの系列をどのように追跡することができますか?つまり、データが元のバージョンからどのように生成されたかを知ることができますか?
ありがとうございました!
ありがとう、私はあなたの提案されたアプローチを試みるつもりです。 **今日**から始めて、HiveをスキップしてSpark SQLに賛成することを提案しますか? –
間違いなく、Spark SQL、Impalaから選択し、[Hive-on-Spark](https://cwiki.apache.org/confluence/display/Hive/Hive+on+Spark%3A+Getting+Started)をリリースしました。 。テクノロジを混在させることができます:データを準備するバッチ処理にSparkを使用し、Impalaまたは[Presto](https://prestodb.io/)で準備データをクエリします。 –