HDF 2.0流量处理实时推来自地层Hadoop


在Strata+ Hadoop世界大会日程开始之前,我有几个小时的时间,所以我决定写一篇小的HDF 2.0流来抓取所有关于Strata Hadoop大会的推文。

首先,我用GetTwitter阅读推文,并过滤这些术语:

  • 地层
  • stratahadoop
  • strataconf
  • NiFi
  • FutureOfData
  • ApacheNiFi
  • Hortonworks
  • Hadoop
  • ApacheHive
  • 糖化血红蛋白
  • 阿帕奇帕克
  • ApacheTez
  • 机器学习
  • ApachePhoenix
  • ApacheCalcite
  • ApacheStorm
  • 阿帕奇拉斯
  • ApacheKnox
  • 阿帕奇游侠
  • HDFS
  • 阿帕奇猪
  • 累积
  • 阿帕奇水槽
  • Sqoop
  • 阿帕奇猎鹰

投入

我用它从推特上下载了第一个图片网址。

这是我们的主要数据来源,也是最重要的。你必须有一个推特账户,一个推特开发者账户,并创建一个推特应用程序。然后你可以访问上面的关键字和标签。到目前为止,我在凤凰城已经收到了14211条推文。这包括我多次关闭它来测试和移动东西。我在添加片段时进行了这次现场直播。我不推荐这个开发过程,但是它有利于探索数据。

处理

路由属性:只处理带有真实消息的推文,有时它们会被损坏或丢失。不要浪费我们的时间。

调用shell脚本,这些脚本调用TensorFlow C++二进制文件和Python脚本。有很多方法可以做到这一点,但这是最简单的。

更新属性:更改我下载到HDFS的文件的文件名。

对于输出接收器

保存到HDFS的几个不同的目录中(第一张图片附后);原始的JSON推文,一组有限的字段,如句柄、消息、地理位置和一个经过完全处理的文件,我在TensorFlow Inception v3中添加了图像识别,用于Strategic推文的图像识别和使用VADER对推文文本的情感分析。

我把所有被HDF丰富了的推特,叫做张量流& Python情感分析,都放到了一个凤凰表中;

https://nifi-se.slack.com/messages/general/

形象化

现在有很多方法可以查看这些数据。

我使用了阿帕奇齐柏林飞艇,因为它是我的HDP 2.5集群的一部分,而且非常容易使用。我添加了一些表格和图表,并在凤凰城对数据进行了快速的SQL探索。

Linux外壳脚本

source /usr/local/lib/bazel/bin/bazel-complete.bash export JAVA_HOME=/opt/jdk1.8.0_101/ /bin/rm -rf /tmp/$@ hdfs dfs -get /twitter/rawimage/$@ /tmp/ /opt/demo/tensorflow/bazel-bin/tensorflow/examples/label_image/label_image --image="/tmp/$@" --output_layer="softmax:0" --input_layer="Mul:0" --input_std=128 --input_mean=128 --graph=/opt/demo/tensorflow/tensorflow/examples/label_image/data/tensorflow_inception_graph.pb --labels=/opt/demo/tensorflow/tensorflow/examples/label_image/data/imagenet_comp_graph_label_strings.txt 2>&1| cut -c48- /bin/rm -rf /tmp/$@ 
python /opt/demo/sentiment/sentiment2.py "$@"

Python脚本

如果您已经安装了Python 2.7,在前面的文章中,我已经展示了如何安装PiP和NLTK。很容易做一些简单的情绪分析。我也有一个版本,我只是返回极性分数(复合,负,中性和正)。