2016-07-25 13 views
0

So mein Projekt Fluss Kafka -> Spark-Streaming -> HBaseLesen von Daten aus HBase durch Funken Streaming

Jetzt möchte ich wieder Daten von HBase lesen, die sich über den Tisch durch den vorherigen Auftrag erstellt gehen und tun einige Aggregation und speichern sie in einer anderen Tabelle in verschiedenen Spaltenformat

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

Nun weiß ich nicht, wie man lesen Daten aus HBase mit Spark Streaming. Ich habe ein Cloudera Lab-Projekt gefunden, das die SparkOnHbase (http://blog.cloudera.com/blog/2014/12/new-in-cloudera-labs-sparkonhbase/) -Bibliothek ist, aber ich kann nicht herausfinden, wie man einen InputDStream für die Stream-Verarbeitung von HBase erhält. Bitte geben Sie irgendwelche Hinweise oder Bibliothek Links, wenn es welche gibt, die mir dabei helfen.

Antwort

0

Sie können DSTREAM aus Queue von RDDs mit queueStream erstellen: StreamingContext

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: Sie könnten nur Funken verwenden (ohne dass für das Streaming)

+0

Ja ich wollte nur meinen Funken Job den ersten Streaming-Job jagen. (Ich denke, einfacher Spark ist einfacher als diese). Ich werde das ausprobieren, aber ich benutze Scala und frage mich, ob die gleiche Strategie auch für Scala funktionieren wird ... Danke! –

+0

Sie können natürlich zweimal von Kafka lesen. – miroB