你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用 Azure 流分析进行社交媒体分析
本文介绍如何通过将实时 X 事件引入 Azure 事件中心,然后使用流分析对其进行分析来生成社交媒体情绪分析解决方案。 可以编写 Azure 流分析查询来分析数据并存储结果以供将来使用,或者创建 Power BI 面板来实时提供见解。
社交媒体分析工具可帮助组织了解热门话题。 热门话题是在社交媒体中有大量博文的主题和态度。 情绪分析(也称为“观点挖掘”)使用社交媒体分析工具来确定大众对产品和理念的态度。
实时 X 趋势分析就是一个很好的分析工具示例,因为井号标签订阅模型使你可以侦听特定关键字(井号标签)并开发源的情绪分析。
方案:实时社交媒体情绪分析
一家拥有新闻媒体网站的公司关注如何打造特色网站内容,使之迅速贴近其读者,以便增加相较于其竞争对手的竞争优势。 该公司通过对 X 数据执行实时情绪分析,以便在贴近读者的主题上使用社交媒体分析。
若要标识 X 上的实时热门话题,公司需要关于关键主题推文量及情绪的实时分析。
先决条件
本操作指南将引导你使用客户端应用程序连接到 X,并查找具有特定话题标签(可设置)的推文。 以下列表提供了运行应用程序并使用 Azure 流分析来分析推文的先决条件。
如果还没有 Azure 订阅,可以创建一个免费帐户。
X 帐户。
TwitterClientCore 应用程序,用于读取 X 源。 若要获取此应用程序,请下载 TwitterClientCore。
安装 .NET Core CLI 版本 2.1.0。
以下是要实现的解决方案体系结构。
为流式处理输入创建事件中心
示例应用程序生成事件并将其推送到事件中心。 Azure 事件中心是适合流分析的首选事件引入方法。 有关详细信息,请参阅 Azure 事件中心文档。
创建事件中心命名空间和事件中心
按照快速入门:使用 Azure 门户创建事件中心中的说明,创建事件中心命名空间和名为“socialx-eh”的事件中心。 可使用其他名称。 如果使用其他名称,请记下该名称,稍后会用到。 不需要为事件中心设置任何其他选项。
授予对事件中心的访问权限
在进程可以将数据发送到事件中心之前,事件中心需要允许访问的策略。 访问策略生成包含授权信息的连接字符串。
在事件中心命名空间左侧的导航栏中,选择位于“实体”部分的“事件中心”。 然后,选择刚创建的事件中心。
在左侧的导航栏中,选择位于“设置”下的“共享访问策略” 。
注意
对于命名空间和事件中心,以下有“共享访问策略”选项。 确保在事件中心的上下文中工作,而不是在命名空间中工作。
在“共享访问策略”页上,选择命令栏上的“+ 添加”。 然后为“策略名”输入“socialx-access”,并选中“管理”复选框。
选择创建。
部署策略后,从共享访问策略列表中选择策略。
找到标记为“连接字符串主键”的框,然后选择连接字符串旁边的复制按钮。
将连接字符串粘贴到文本编辑器中。 对此连接字符串稍加编辑,以便在下一部分中使用。
连接字符串如下所示:
Endpoint=sb://EVENTHUBS-NAMESPACE.servicebus.windows.net/;SharedAccessKeyName=socialx-access;SharedAccessKey=XXXXXXXXXXXXXXX;EntityPath=socialx-eh
请注意,连接字符串包含多个键值对,用分号分隔:Endpoint
、SharedAccessKeyName
、SharedAccessKey
和 EntityPath
。
注意
为安全起见,已删除示例中的部分连接字符串。
配置并启动 X 客户端应用程序
客户端应用程序直接从 X 获取推文事件。为此,它需要有权调用 Twitter 流式处理 API。 若要配置该权限,可在 X 中创建一个应用程序,该应用会生成唯一凭据(例如 OAuth 标记)。 然后,可配置客户端应用程序,以便在其执行 API 调用时使用这些凭据。
创建 X 应用程序
如果还没有可用于本操作指南的 X 应用程序,可以创建一个。 你必须已有 X 帐户。
注意
X 中创建应用程序以及获取密钥、机密和令牌的确切过程可能会改变。 如果这些说明与你在 X 网站上看到的内容不符,请参阅 X 开发人员文档。
在 Web 浏览器中,转到 X 开发人员,创建开发者帐户,然后选择“创建应用”。 你可能会看到一条消息,指出你需要申请 X 开发人员帐户。 可以随意执行此操作,在你的申请获得批准后,应该会看到一封确认电子邮件。 批准开发人员帐户可能需要几天时间。
在“创建应用程序” 页中提供新应用的详细信息,然后选择“创建 Twitter 应用程序” 。
在应用程序页中选择“密钥和令牌” 选项卡,复制“使用者 API 密钥” 和“使用者 API 密钥” 的值。 此外,在“访问令牌和访问令牌机密”下选择“创建”以生成访问令牌。 复制“访问令牌”和“访问令牌机密”的值。
保存 X 应用程序的检索值。 在后面的步骤中会用到这些值。
注意
X 应用程序的密钥和机密提供对 X 帐户的访问权限。 与 X 密码一样,请将此信息视为敏感信息对待。 例如,不要在你提供给其他人的应用程序中嵌入此信息。
配置客户端应用程序
我们创建了一个客户端应用程序,该应用程序使用 Twitter 流式处理 API 连接到 X 数据,来收集有关特定主题集的推文事件。
运行应用程序之前,需要提供某些信息,例如 Twitter 密钥和事件中心连接字符串。
请确保已下载 TwitterClientCore 应用程序,如先决条件中所述。
使用文本编辑器打开 App.config 文件。 对
<appSettings>
元素进行以下更改:- 将
oauth_consumer_key
设置为 Twitter 使用者密钥(API 密钥)。 - 将
oauth_consumer_secret
设置为Twitter 使用者机密(API 密钥)。 - 将
oauth_token
设置为 Twitter 访问令牌。 - 将
oauth_token_secret
设置为 Twitter 访问令牌机密。 - 将
EventHubNameConnectionString
设置为连接字符串。 - 将
EventHubName
设置为事件中心名称(即实体路径的值)。
- 将
打开命令行并导航到 TwitterClientCore 应用所在的目录。 使用命令
dotnet build
生成项目。 然后使用命令dotnet run
运行应用。 应用会将推文发送到事件中心。
创建流分析作业
既然推文事件正在从 X 实时流式传输,那就可以设置一个流分析作业来实时分析这些事件。
在 Azure 门户中,导航到资源组并选择“+ 添加”。 然后搜索“流分析作业”并选择“创建” 。
将作业命名为
socialx-sa-job
,然后指定订阅、资源组和位置。为获得最佳性能,最好将作业和事件中心放置在同一区域,这样就不需要在不同区域之间传输数据。
选择“创建”。 部署完成后,导航到作业。
指定作业输入
在流分析作业中,选择“作业拓扑”下左侧菜单中的“输入” 。
选择“+ 添加流输入”>“事件中心”。 使用以下信息填写“新建输入”窗体:
设置 建议的值 说明 输入别名 TwitterStream 输入输入的别名。 订阅 用户的订阅<> 选择要使用的 Azure 订阅。 事件中心命名空间 asa-x-eventhub 事件中心名称 socialx-eh 选择“使用现有”。 然后,选择已创建的事件中心。 事件压缩类型 Gzip 数据压缩类型。 保留剩余的默认值,然后选择“保存”。
指定作业查询
流分析支持简单的声明性查询模型,该模型用于描述转换。 若要了解有关语言的详细信息,请参阅 Azure 流分析查询语言参考。 本操作指南会帮助你创作和测试多个针对 X 数据的查询。
若要比较各个主题的提及次数,可使用翻转窗口每五秒按主题获取提及次数。
在作业“概述”中,选择“查询”框右上角附近的“编辑查询” 。 Azure 会列出为作业配置的输入和输出,并允许创建查询,以便在将输入流发送到输出时对其进行转换。
在查询编辑器中将查询更改为以下内容:
SELECT * FROM TwitterStream
消息中的事件数据应该出现在查询下方的“输入预览”窗口中。 确保将“视图”设置为“JSON” 。 如果看不到任何数据,请确保数据生成器正在向事件中心发送事件,并且已选择“Gzip”作为输入的压缩类型。
选择“测试查询”,并注意查询下方的“测试结果”窗口中的结果 。
将代码编辑器中的查询更改为以下代码,然后选择“测试查询”:
SELECT System.Timestamp as Time, text FROM TwitterStream WHERE text LIKE '%Azure%'
此查询返回包含关键字 Azure 的所有推文。
创建输出接收器
现已定义事件流、用于引入事件的事件中心输入,以及用于通过流执行转换的查询。 最后一步是为作业定义输出接收器。
本操作指南介绍将聚合的推文事件从作业查询写入 Azure Blob 存储。 也可以将结果推送到 Azure SQL 数据库、Azure 表存储、事件中心或 Power BI,具体取决于应用程序需求。
指定作业输出
在左侧导航菜单的“作业拓扑”部分下,选择“输出” 。
在“输出”页中,选择“+ 添加”和“Blob 存储/Data Lake Storage Gen2”:
- 输出别名:使用名称
TwitterStream-Output
。 - 导入选项:选择“从订阅选择存储”。
- 存储帐户: 选择存储帐户。
- 容器: 选择“新建”,并输入
socialx
。
- 输出别名:使用名称
选择“保存”。
启动作业
指定作业输入、查询和输出。 已准备好启动流分析作业。
请确保 TwitterClientCore 应用程序正在运行。
在作业概述中,选择“开始”。
在“启动作业”页中,为“作业输出开始时间”选择“现在”,然后选择“开始” 。
获取支持
如需获取进一步的帮助,可前往 Azure 流分析的 Microsoft 问答页面。