先生,我想使用 Apache hive、flume 对 twitter 数据进行情感分析现在我有一个 twitter 帐户,并且我已经设置了 conf 文件。但是问题在于数据格式。它没有加载到蜂巢中。请帮助我,我在里面工作了一个月。
2 回答
我认为您可以配置 Flume 代理以从 Twitter 获取数据。你的问题是数据的格式。
Apache Flume 提供了几种 Sink 类型。其中两个对您的要求很有用。
- HDFS 接收器
- 蜂巢水槽
使用 HDFS 接收器:
- 使用 TwitterSource 和 HDFS Sink 配置 Flume 代理。
- 提供您的 Twitter OAuth 详细信息,即 Flume Agent 的密钥。
- 一旦代理配置完成,然后启动它。
- 该代理将获取数据,即来自 Twitter 的推文,并将其作为 JSON 文档存储在 HDFS 路径中。
- 一旦数据在 HDFS 中可用,使用带有位置子句的 JSON SerDe 创建 Hive 外部表。
JSON SerDe 代码链接:https ://github.com/cloudera/cdh-twitter-example/blob/master/hive-serdes/src/main/java/com/cloudera/hive/serde/JSONSerDe.java
使用蜂巢水槽:
Flume 允许使用 Hive Sink 将数据写入 Hive Table。所以我们需要配置Flume代理如下:
TwiiterSource --> Channel --> Hive Sink
- 使用 TwitterSource 和 Hive Sink 配置 Flume 代理。
- 提供您的 Twitter OAuth 详细信息,即 Flume Agent 的密钥。
- 一旦代理配置完成,然后启动它。
- 该代理将获取数据,即来自 Twitter 的推文并将其存储在 Hive 表中。这使用 JSON SerDe。
Hive Sink 有一个称为serializer的参数来告诉 SerDe 的类型。
支持的序列化器:DELIMITED和JSON
因此,请使用上述解决方案中的任何一种方式配置您的 Flume 代理。
请使用此文档链接获取有关接收器参数 (HDFS + Hive) 的更多详细信息
你可以尝试添加这个jar文件
hive-serdes-1.0-SNAPSHOT.jar
您可以关注以下博客以获取使用 Hive 执行情绪分析的完整参考。
https://acadgild.com/blog/sentiment-analysis-on-tweets-with-apache-hive-using-afinn-dictionary/