Skip to content

Instantly share code, notes, and snippets.

View migue's full-sized avatar

Miguel Ángel Pastor Olivar migue

View GitHub Profile
@migue
migue / liferay-kafka.java
Created October 13, 2014 21:28
Small example of how you can send create/update rating's events to a Kafka broker
@Component(
immediate = true,
service = ModelListener.class
)
public class RatingsEntryModelListener extends BaseModelListener<RatingsEntry> {
@Override
public void onAfterCreate(RatingsEntry model)
throws ModelListenerException {
@Component(
immediate = true,
service = ModelListener.class
)
public class MBMessagesModelListener extends BaseModelListener<MBMessage> {
@Override
public void onAfterCreate(MBMessage model)
throws ModelListenerException {
@migue
migue / MessagesBoardCollector.scala
Created November 17, 2014 14:35
Collector of Message Boards messages from a Kafka topic using Spark Streaming
val sparkConf = new SparkConf().setAppName("KafkaMessageBoardsCollector")
val ssc = new StreamingContext(sparkConf, Seconds(5))
ssc.checkpoint("checkpoint")
val topicMap = topics.split(",").map((_,numThreads.toInt)).toMap
val kafkaStream = KafkaUtils.createStream(ssc, zkQuorum, group, topicMap).map(_._2)
@migue
migue / MessageBoardsKmeansTrain.scala
Created November 17, 2014 15:11
K-means train process on message boards
val messagesTable = sc.textFile(messagesInput).map(_.split(";")).map(m => MBMessage(m(4), m(5)))
val schema =
StructType(
StructField("title", StringType, false) ::
StructField("body", StringType, true) :: Nil)
val messagesSchemaRDD = sqlContext.applySchema(messagesTable, schema)
messagesSchemaRDD.registerTempTable("messagesTable")
@migue
migue / MessageBoardsFeaturize.scala
Created November 17, 2014 15:47
Featurize message boards
package com.liferay.message.boards.classifier
import org.apache.spark.mllib.linalg.Vector
import org.apache.spark.mllib.feature.HashingTF
object Utils {
val numFeatures = 1000
val tf = new HashingTF(numFeatures)
@migue
migue / MessageBoardsClassifier.scala
Created November 18, 2014 08:26
Liferay message boards classifier
val ssc = new StreamingContext(conf, Seconds(5))
val topicMap = topics.split(",").map((_,numThreads.toInt)).toMap
val kafkaStream = KafkaUtils.createStream(ssc, zkQuorum, group, topicMap).map(_._2)
val model = new KMeansModel(ssc.sparkContext.objectFile[Vector](modelFile.toString).collect())
val filteredMessages = kafkaStream
.filter(m => model.predict(Utils.featurize(m)) == clusterNumber.toInt)
@migue
migue / gist:4690167
Last active December 12, 2015 01:18
Small script to choose a random element in a list. It is used to raffle conference tickets among the MadridJUG community members
import scala.util.Random
def winner(members:List[String]):String = {
new Random(System.currentTimeMillis()).shuffle(members).head
}
// write the names of all the members involved in the raffle
val qcon = List("Jorge Baez", "Daniel Jiménez", "Gonzalo Gómez", "Jorge Nota", "Jose Ignacio Dominguez", "Daniel Hernández", "Manuel Carrasco")
@migue
migue / Metric.java
Last active December 15, 2015 19:19
/**
* Domain model representing the metrics of our system. All the metrics at our
* system should implement this interface
*
* @author migue
*
*/
public interface Metric {
public String name();
...
void activate(ComponentContext componentContext) {
System.out.println("Starting the metrics manager. Waiting for metrics providers . . .");
_executorService.execute(new Runnable() {
@Override
public void run() {
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="metrics" immediate="true">
<scr:implementation class="com.github.migue.metrics.internal.manager.MetricsManager" />
<scr:reference
interface="com.github.migue.metrics.spi.MetricsProvider"
cardinality="0..n"
policy="dynamic"
bind="addMetricsProvider"
unbind="removeMetricsProvider"/>