1

したがって、私のプロジェクト フローは Kafka -> Spark Streaming -> HBase です。

ここで、前のジョブで作成されたテーブルを調べ、集計を行い、別のテーブルに別の列形式で格納する HBase からデータを再度読み取りたいと考えています。

Kafka -> Spark Streaming (2ms) -> HBase -> Spark Streaming (10ms) -> HBase

Spark Streaming を使用して HBase からデータを読み取る方法がわかりません。SparkOnHbase( http://blog.cloudera.com/blog/2014/12/new-in-cloudera-labs-sparkonhbase/ ) ライブラリである Cloudera Lab Project を見つけましたが、取得方法がわかりません。 HBase からのストリーム処理用の inputDStream。これを行うのに役立つポインタまたはライブラリ リンクがある場合は、それを提供してください。

4

2 に答える 2

0

queueStream: StreamingContextを使用して、RDD のキューから DStream を作成できます。

JavaSparkContext sc = new JavaSparkContext(conf);
org.apache.hadoop.conf.Configuration hconf = HBaseConfiguration.create();
JavaHBaseContext jhbc = new JavaHBaseContext(sc, hconf);
Scan scan1 = new Scan();           
scan1.setAttribute(Scan.SCAN_ATTRIBUTES_TABLE_NAME, tableName.getBytes());

// Create RDD
         rdd = jhbc.hbaseRDD(tableName, scan1, new Function<Tuple2<ImmutableBytesWritable, Result>, Tuple2<ImmutableBytesWritable, Result>>() {
            @Override
            public Tuple2<ImmutableBytesWritable, Result> call(Tuple2<ImmutableBytesWritable, Result> immutableBytesWritableResultTuple2) throws Exception {
                return immutableBytesWritableResultTuple2;
            }
        });

   // Create streaming context and queue
   JavaSparkStreamingContext ssc = new JavaSparkStramingContext(sc);

   Queue<JavaRDD<Tuple2<ImmutableBytesWritable, Result> >> queue =new Queue<JavaRDD<Tuple2<ImmutableBytesWritable, Result>>>( );
        queue.enqueue(rdd);

JavaDStream<Tuple2<ImmutableBytesWritable, Result>> ssc.queueStream(queue);

PS: Spark を使用することもできます (そのためのストリーミングなし)。

于 2016-07-26T14:31:17.643 に答える
0

Splice Machine (オープン ソース) には、spark ストリーミングの実行を示すデモがあります。

http://community.splicemachine.com/category/tutorials/data-ingestion-streaming/

このユース ケースのサンプル コードを次に示します。

https://github.com/splicemachine/splice-community-sample-code/tree/master/tutorial-kafka-spark-streaming

于 2016-08-03T20:47:57.897 に答える