我是新来的火花,我正试图从以下架构的HBASE表中获取我的facebook数据:
我想对它做一个火花工作,如下所述。以下是获取JavaPairRDD的代码。
SparkConf sparkConf = new SparkConf().setAppName("HBaseRead").setMaster("local[2]");
sparkConf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer");
sparkConf.set("spark.kryoserializer.buffer.mb", "256");
sparkConf.set("spark.kryoserializer.buffer.max", "512");
JavaSparkContext sc = new JavaSparkContext(sparkConf);
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum", "localhost:2181");
conf.set("hbase.regionserver.port", "60010");
String tableName = "fbData";
conf.set("hbase.master", "localhost:60010");
conf.set(TableInputFormat.INPUT_TABLE, tableName);
JavaPairRDD<ImmutableBytesWritable, Result> hBaseRDD = sc.newAPIHadoopRDD(conf, TableInputFormat.class,
ImmutableBytesWritable.class, Result.class);
现在使用RDD的map()我可以使用类型列获取发布/评论/回复的JavaRDD:
JavaRDD<Post> results = hBaseRDD.map(new Function<Tuple2<ImmutableBytesWritable, Result>, Post>() {
//fetching posts
return post;
}
现在我有3个JavaRDD用于帖子,评论和回复。 POJO Post有评论和回复字段。所以我想使用父帖子ID添加评论和回帖。我怎样才能用Spark完成这个任务?我想到的方法是遍历所有帖子,然后遍历所有评论和回复。提前致谢。
答案 0 :(得分:1)
这样做的一种方法是制作3个RDDs JavaPairRDDs,并将注释中的字段作为关键字。然后,您可以使用join方法。
假设结果和评论RDD是对RDD,那么你可以这样做:
JavaPairRDD<??> aggregatedResults = results.join(comments)
我不知道您将使用哪种类型的组合对象。