大数据频道 频道

MemSQL情绪分析,为总统大选操碎了心

  【IT168 评论】MemSQL诞生时最大的标签便是其号称是“世界上最快的分布式关系型数据库”。MemSQL也是继SAP、Oracle、IBM、微软之后第5家同时进入Gartner分析型和操作型数据库魔力象限的公司。这在当时引起不小骚动。根据Gartner发布的2016年数据仓库和数据管理解决方案关键能力报告,MemSQL位列操作系统数据仓库用例榜首,这在很大程度上基于其对连续数据加载和操作型BI查询用例的贡献。

MemSQL情绪分析,为总统大选操碎了心

  即便如此,话题之外的MemSQL可能并没有多少人了解,这点单从少得可怜的百度百科词条就看得出来。MemSQL结合基于磁盘的列存储分析,为使用案例提供了一个内存中的数据库管理系统。但大部分MemSQL客户没有足够的经验应对升级或版本迁移带来的困难,因为它太新了。今天,小编就与大家分享一个关于MemSQL的案例。

  前段时间的美国总统大选辩论几乎是本月最值得关注的一件事了,更有好事之徒将辩论截图做成了各种表情包,在微博上广为流传。MemSQL通过对Twitter上有关的评论转发等内容进行实时分析,最后给出了两位演讲者的情绪变化过程。MemSQL如何实现的呢?

  首先,写一个Python脚本用来收集Twitter平台上所有包含“Hillary”、“hillary”、“Trump”、“trump”单词的内容,使用Hillary和Trump作为该内容的描述标签。之后,该脚本会将这些内容实时送到Apache Kafka队列中,然后在经过MemSQL管道。具体的步骤如下所示:

  创建管道:

  CREATEPIPELINE`twitter_pipeline`

  ASLOAD DATAKAFKA‘your-kafka-host-ip:9092/your-kafka-topic’

  INTOTABLE`tweets`

  创建表CREAT TABLE:

  CREATE TABLE`tweets`(

  `id`bigint(20)DEFAULTNULL,

  `ts`timestamp NOTNULLDEFAULTCURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

  `tweet`JSON COLLATE utf8_bin,

  `text`astweet::$text PERSISTED text CHARACTER SET utf8 COLLATE utf8_general_ci,

  `retweet_count`astweet::%retweet_count PERSISTED int(11),

  `candidate`asCASE

  WHEN(text LIKE'%illary%')THEN'Clinton'

  WHEN(text LIKE'%rump%')THEN'Trump'

  ELSE'Unknown'ENDPERSISTED text CHARACTER SET utf8 COLLATE utf8_general_ci,

  `created`asFROM_UNIXTIME(`tweet`::$created_at)PERSISTED datetime,

  KEY`id`(`id`)/*!90619 USING CLUSTERED COLUMNSTORE */,

  /*!90618 SHARD */KEY`id_2`(`id`)

  注意:创建tweet作为columnstore表,因此它可以用于大数据分析,我们也可以利用MemSQL的持久化计算列解析JSON数据,MemSQL本机支持JSON数据格式。

  运行twitter_pipeline时,tweet中的数据如下所示:

  memsql>SELECT *from tweets LIMIT1\G

  ***************************1.row ***************************

  id:786409507039485952

  ts:2016-10-1303:33:53

  tweet: {"created_at":1476329611,"favorite_count":0,"id":

  786409507039485952,"retweet_count":0,"text":

  "RT @BlackWomen4Bern: This will be an interesting Halloween this year...expect me to tweet some epic Hillary costumes...I expect there will…","username":"hankandmya12"}

  text:RT@BlackWomen4Bern:Thiswill be an interesting Halloween thisyear...expect me totweet some epic Hillary costumes...Iexpect there will…

  retweet_count:0

  candidate:Clinton

  created:2016-10-1303:33:31

  1row inset(0.03sec)

  接下来,创建第二个管道,还是来自同样的Kafka,但不直接存储在表中,利用Python自然语言包,实时分析情绪变化。

  创建第二个管道:

  CREATE PIPELINE`twitter_sentiment_pipeline`

  ASLOAD DATA KAFKA'your-kafka-host-ip:9092/your-kafka-topic'

  WITH TRANSFORM('http://download.memsql.com/pipelines-twitter-demo/transform.tar.gz','transform.py','')

  INTO TABLE`tweet_sentiment`

  将两个MemSQL管道的数据结合,利用SQL执行分析。例如,可以创建一个统计直方图反映情绪变化,语句如下:

  SELECT

  sentiment_bucket,

  SUM(IF(candidate="Clinton",tweet_volume,0))asclinton_tweets,

  SUM(IF(candidate="Trump",tweet_volume,0))astrump_tweets

  FROM tweets_per_sentiment_per_candidate_timeseriest

  GROUP BY sentiment_bucket

  ORDER BY sentiment_bucket;

  最后,构造一个UI。使用WebSockets React可视化候选人的情绪,实时绘制图表,如下所示:

MemSQL情绪分析,为总统大选操碎了心

  看完这个小案例,有木有开启对MemSQL的新认知呢。看起来,两位候选人的情绪波动半斤八两啊!除了速度快,MemSQL很大的一个优势就是可以与MySQL结合。当磁盘中MySQL数据需要更少的性能和更高的持久性时,MemSQL则扮演一个高性能内存层的角色。MemSQL使用一个SQL接口和MySQL API,这意味着开发者不必学习新的东西。 这意味着开发者很容易上手,有兴趣的不妨尝试一下吧。

0
相关文章