package org.radargun.service.demo.ispn; import java.util.Properties; import org.apache.spark.api.java.JavaPairRDD; import org.apache.spark.api.java.JavaRDD; import org.apache.spark.api.java.JavaSparkContext; import org.infinispan.spark.rdd.InfinispanJavaRDD; import org.radargun.service.SparkMapReduce; import static java.util.Arrays.stream; import static java.util.stream.Collectors.toList; /** * @author Matej Cimbora */ public class WordCountSource implements SparkMapReduce.SparkJavaRDDSource<String> { private transient JavaSparkContext sparkContext; private transient String hotrodServer = "127.0.0.1"; private transient String hotrodPort = "11222"; private transient int numPartitions = 2; public WordCountSource() {} @Override public JavaRDD<String> getSource() { if (sparkContext == null) { throw new IllegalStateException("Spark context has not been initialized yet"); } Properties infinispanProperties = new Properties(); infinispanProperties.put("infinispan.client.hotrod.server_list", hotrodServer + ":" + hotrodPort); infinispanProperties.put("infinispan.rdd.number_server_partitions", numPartitions); JavaPairRDD<String, String> javaPairRDD = InfinispanJavaRDD.createInfinispanRDD(sparkContext, infinispanProperties); JavaRDD<String> javaRDD = javaPairRDD.values().flatMap(s -> stream(s.split("[\\p{Punct}\\s&&[^'-]]+")).collect(toList())); return javaRDD; } @Override public void setSparkContext(JavaSparkContext context) { this.sparkContext = context; } public void setHotrodServer(String address) { this.hotrodServer = address; } public void setHotrodPort(String port) { this.hotrodPort = port; } public void setNumPartitions(String numPartitions) { this.numPartitions = Integer.parseInt(numPartitions); } }