使用Amazon EMR和Tableau分析和可视化数据

引言

针对不同格式和大小的数据,Hadoop生态圈提供了丰富的工具进行分析并提取价值。最初,Hadoop生态圈专注于分析大批量数据,提供了类似MapReduce、Pig和Hive等组件。而当下,Hadoop已提供了大量用于交互式数据查询的工具,比如Impala、Drill和Presto。本篇文章将教会你如何使用Amazon Elastic MapReduce(Amazon EMR)来分析Amazon Simple Storage Service(Amazon S3)上存储的数据,并使用Tableau配合Impala进行可视化。

工具介绍

Amazon Elastic Map Reduce:Amazon EMR是一个基于Web的服务,使用它用户可以便捷及合算地处理海量数据。Amazon EMR使用了Apache Hadoop这个开源框架,在Amazon Elastic Compute Cloud(Amazon EC2)实例组成的集群中进行分布式数据处理。

Impala: Hadoop生态圈中的一个开源工具,当下已可在EMR中使用进行基于SQL的交互式即席查询。取代使用类似Hive的MapReduce引擎,Impala利用了大规模并行处理引擎(MPP)的优势,类似传统关系型数据库管理系统(RDBMS)中使用的方法,Impala可以实现更快的查询响应时间。

鉴于Hive和Impala都提供了类似SQL的能力,并且可以共享相同的Metastore(为表格和分割元数据提供的资源库),它们在Hadoop生态圈中互不冲突,各司其职。对比Impala,Hive的批处理形式需要更多响应时间,因此在与类似Tableau等工具配合进行交互式数据分析时颇显乏力。Impala同样存在许多限制,因为内存处理的性质,它需要使用大量的内存资源,从而单查询可操作数据量必然会受到集群可用内存资源限制,但是Hive就完全没有这样的限制——相同硬件上,它可以处理更大的数据集,从而更适合大数据集上的ETL负载。

Tableau:是个商业智能解决方案,它结合了数据分析和报表形成一个持续可视化分析过程,易于用户认知和使用。Tableau可以交付非常快速的分析、可视化和商业智能,它可以直接连接到AWS和其他数据源。在最新版本的Tableau Desktop中,用户可以使用Amazon EMR专用ODBC驱动将之与运行在Amazon EMR上的Hive或者Impala连接。具体如何将Amazon EMR作为Tableau的一个数据源,你可以联系Tableau取得帮助。

实例解析

在本文中,我们将展示如何让Amazon EMR作为Tableau的一个数据源,并把Tableau与Impala连接进行交互式可视化分析。

使用Amazon EMR来分析Google Books n-grams

Google Books n-grams数据集已免费存储于Amazon S3的AWS Public Data Sets上,N-grams是大量item组成的固定大小元组。在这里,item是Google Book语料库中抽取的单词。“n”指的是元祖中的元素个数,因此5-gram代表了5个单词或者字母。

传统情况下,Apache Hadoop运行在HDFS上,但是它同样支持Amazon S3作为其文件系统。而对比Hive可以直接查询Amazon S3存储的数据,Impala则需要HDFS的支持。

Google Books n-gram当下已经支持Hadoop友好的文件格式,最大体积可达2.2 TB。该数据集使用SequenceFile格式进行存储,并且使用了块级(block-level)的LZO压缩方式。行号使用LongWritable来存储,并作为SequenceFile的键;原始数据使用TextWritable进行存储,并作为SequenceFile的值。

鉴于使用块级的LZO压缩,SequenceFile需要进一步的进行转换,因为Impala不可以直接建立或对其插入数据,Impala只可以查询LZO压缩的Text表格。Hive则原生支持了使用LZO压缩的SequenceFile格式,并且可以查询存储在Amazon S3上的外部数据。因此,使用它将S3上的数据转换成(储存在HDFS上)Impala支持的格式是个非常不错的选择。

开启一个Amazon EMR集群

首先,我们需要建立一个安装Impala和Hive的Amazon EMR集群。

1. 使用AWS CLI建立一个Amazon EMR集群。如果之前你没有使用CLI的经验,AWS提供了一个说明用于安装和配置。下面是使用CLI建立Amazon EMR集群的语句,同时返回了该集群的唯一识别符。

aws emr create-cluster --name ImpalaCluster--ami-version 3.1.0 --instance-groupsInstanceGroupType=MASTER,InstanceCount=1,InstanceType=m1.medium InstanceGroupType=CORE,InstanceCount=2,InstanceType=m1.medium--ec2-attributes KeyName=keyPairName,AvailabilityZone=availabilityZone --applications Name=Hive,Name=Impala --no-auto-terminate

注意:运行该语句前,将keyPairName和availabilityZone字符串替换成合适的值。在下面步骤里,你还需要使用这条语句执行得到的唯一识别符去替换j- XXXXXXXXXXXX字符串。

2. 5到10分钟后,集群建立完成,其状态会显示成等待。如果需要检查集群的初始化状态,你可以运行下面的命令:

aws emr describe-cluster --cluster-id j-XXXXXXXXXXXX--query 'Cluster.Status.State' --output text

3. 当你的集群进入“WAITING”状态后,你可以使用下面的语句连接到主节点。

aws emr ssh --cluster-id j-XXXXXXXXXXXX --key-pair-file keyFilePath

注意: 使用私钥文件的路径替换字符串keyFilePath。

为来自Amazon S3上的数据建立External Table

通过建立EXTERNAL TABLE可以让Amazon EMR引用来自外部的数据源。建立到这个数据的引用非常简单,这里并不会产生数据迁移。

1. 登入主节点后,开启Hive shell:

$ hive

2. 使用CREATE TABLE语句定义数据源。在这里例子中,我们将使用一个English 1-grams数据集。

hive> CREATE EXTERNAL TABLEeng_1M_1gram(token STRING, year INT, frequency INT, pages INT,books INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS SEQUENCEFILE LOCATION 's3://datasets.elasticmapreduce/ngrams/books/20090715/eng-1M/1gram';在HDFS中建立一个Replica Table

为了使用Impala,我们需要建立一个储存在HDFS中的副本表格。在副本表格中,我们将使用Parquet取代Sequence File 格式。Parquet是个面向列的二进制文件格式,旨在服务高效大规模查询。

1. 在Hive中建立副本表格:

hive> CREATE TABLEeng_1M_1gram_paraquet(token STRING, year INT, frequency INT, pages INT, booksINT) ROW FORMAT SERDE 'parquet.hive.serde.ParquetHiveSerDe' STORED ASinputformat 'parquet.hive.DeprecatedParquetInputFormat' outputformat'parquet.hive.DeprecatedParquetOutputFormat';

2. 调整好mapred.min.split.size设置,因为储存在Amazon S3中的数据是个单文件。

hive> set mapred.min.split.size=134217728;

这个设置告诉hive至少分割成128 MB的文件进行处理。这可以防止你处理数据时只使用一个映射器,因为这不会利用MapReduce的分布式特性。

3. 使用select查询将数据插入到这个表格中。我们从原始数据表格中读取数据,并将之插入新表格。

hive> INSERT OVERWRITE TABLE eng_1M_1gram_paraquet SELECT lower(token), year, frequency, pages, books FROM eng_1M_1gram WHERE year >= 1890 AND token REGEXP "^[A-Za-z+'-]+quot;;

这个查询同时还演示了一个典型的用例——转换数据让下游工具(比如Tableau)可以更便捷的使用。在这个查询中,第一步是过滤掉1890年之前的数据。同时还使用正则表达式过滤掉非字母或常用标点之外的数据。而为了使用相同格式以便后续步骤可以更方便的查询,我们还使用内置函数将所有字母转换成小写格式。

4. 在上述所有步骤完成后,退出Hive。

让副本表格在Impala中可用

在这里,为Hive和Impala使用了同一个Metastore。因此,在表格对Imapa查询可用之前,我们需要更新Impala中的元数据。INVALIDATE METADATA语句可以失效元数据,并在Impala查询发生之前为其重新加载所需的元数据。

1. 登入Impala。

$ impala-shell

2. 无效给Impala副本表格准备的元数据

impala> invalidate metadata;

3. 退出Impala shell,并且关闭到Amazon EMR集群的SSH连接。

使用Tableau可视化Impala传来的数据

下一个步骤,你需要使用在Windows或者MacOSX主机上安装的Tableau Desktop。如果你还没有安装Tableau,你可以使用Amazon EC2,在其上安装本例需要使用的Tableau。你同样需要一些步骤让Amazon EMR对Tableau可用。当然,你可以通过联系Tableau取得帮助。

1. 在主机上安装Tableau Desktop需要使用的ODBC驱动,从而你可以将Tableau
Desktop连接到Amazon EMR上的Impala上。

A. 下载驱动

B. 解压下载文件。可能会建立一个名为ImpalaODBC的文件夹。

C. 将之复制到所需文件中以备安装。

Windows:ImpalaODBC\1.0.16.1017\Windows\SimbaImpalaODBC64.msi MacOSX: ImpalaODBC/1.0.16.1017/MacOSX/SimbaImpalaODBC.dmg

D. 运行上面的包,按照提示安装ODBC驱动。

2. 修改Amazon EMR集群的Master Security Group,让Tableau可以连接到运行在Amazon EMR集群主节点上的Impala服务器。

A. 点击AWS Management Console中的Amazon EC2标签来打开Amazon EC2控制台。

B. 在导航面板中,选择Network和Security group下的Security Groups。

C. 在Security Groups列表中,选择Elastic MapReduce-master。

D. 在靠近下方的面板中,点击Inbound标签。

E. 在Port Range字段类型20150,标记Source字段的默认值。

F. 点击Add Rule,然后点击Apply Rule Changes。

3. 按Tableau指示允许Amazon EMR作为Tableau的一个数据连接选项。点击A可以看到如下图所示的页面。

图1

4. 在Server字段中填写主节点的DNS,然后点击Connect按钮。你可以使用以下语句获得DNS:

aws emr describe-cluster --cluster-idj-XXXXXXXXXXXX --query 'Cluster.MasterPublicDnsName' --output text

5. 在下一个页面中,从schema下拉框中选择default模式,将名为“eng_1m_1g_paraquet”的表格拖到下图左上角的面板中,然后点击Go to Worksheet按钮。

图2

这将打开一个Tableau workbook,Dimension和Measure会自动填充。现在,我们已经可以使用Tableau与运行在Amazon EMR上的Impala。

视频演示建立交互式可视化

下面的视频将演示如何使用Tableau进行一些交互式可视化。首先,我们需要为每年发布的书籍建立一个trend-line。

视频1

视频请点击:https://s3.amazonaws.com/rbhartia/Video1.mp4

建立一个过滤器

下面这个视频演示如何建立一个过滤器,它将允许用户为trend-line选择一个指定的1-Gram。1905年左右,1-gram里“computer”单词的忽然增加可能就比较有趣。如果你对这个增加有自己的看法,请进行评论。

视频2

视频请点击:https://s3.amazonaws.com/rbhartia/Video2.mp4

关闭Amazon EMR Cluster

当你完成上述所有步骤后,请别忘记在AWS控制台中关闭这个Amazon EMR集群。你可以通过下方的CLI语句完成:

aws emr terminate-cluster --cluster-id j-XXXXXXXXXXXX

如果你只是为演示这个步骤才建立的Amazon EMR集群,请别忘记关闭。

总结

在这篇文章中,我们演示了如何使用Amazon EMR、Impala和Tableau快速可视化分析Amazon S3中的数据。我们演示了如何使用Impala提供一个快速分析,以及如何使用Tableau的数据探索功能,因此我们可以快速的挖掘数据并且可视化来验证猜想。你可以使用同样的方法来快速分析所有Amazon S3上的数据,包括AWS CloudTrail日志或者Amazon S3访问日志。

原文链接:http://blogs.aws.amazon.com/bigdata/post/TxFSE0F3ZOO24E/Using-Amazon-EMR-and-Tableau-to-Analyze-and-Visualize-Data

如您需要了解AWS最新资讯或是技术文档可访问AWS中文技术社区;如您有更多的疑问请在AWS技术论坛提出,稍后会有专家进行答疑。

订阅“AWS中文技术社区”微信公众号,实时掌握AWS技术及产品消息!

AWS中文技术社区为广大开发者提供了一个Amazon Web Service技术交流平台,推送AWS最新资讯、技术视频、技术文档、精彩技术博文等相关精彩内容,更有AWS社区专家与您直接沟通交流!快加入AWS中文技术社区,更快更好的了解AWS云计算技术。

(译者/薛童阳 责编/王玉平)

时间: 2025-01-20 12:11:44

使用Amazon EMR和Tableau分析和可视化数据的相关文章

分析零距离 数据可视化产品选型指南

文章讲的是分析零距离 数据可视化产品选型指南,大数据的核心不是"大",也不是"数据",而是蕴含在其中的商业价值.作为挖掘数据背后潜在价值的重要手段,商业智能和分析平台成为大数据部署中的关键环节.然而,获取价值的难点并不在于数据分析应用的部署,而在于专业数据分析人才的缺乏.市场研究机构IDC甚至认为,数据分析人才的欠缺可能会成为影响大数据市场发展的重要因素. "让每个人都成为数据分析师"是大数据时代赋予的要求,数据可视化的出现恰恰从侧面缓解了专业数

可视化数据包分析工具-CapAnalysis

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://chenguang.blog.51cto.com/350944/1325742 可视化数据包分析工具-CapAnalysis 我们知道,Xplico是一个从pcap文件中解析出IP流量数据的工具,本文介绍又一款实用工具-CapAnalysis(可视化数据包分析工具),将比Xplico更加细致的分析功能,先别着急安装,下面我们首先了解Pcap包的基本结构,然后告诉你如何使用,最后是

MySQL 慢查询日志分析及可视化结果

MySQL 慢查询日志分析及可视化结果 MySQL 慢查询日志分析 pt-query-digest分析慢查询日志 pt-query-digest --report slow.log 报告最近半个小时的慢查询: pt-query-digest --report --since 1800s slow.log 报告一个时间段的慢查询: pt-query-digest --report --since '2013-02-10 21:48:59' --until '2013-02-16 02:33:50'

福利 | 分析554条数据科学面试问题,给你靠谱求职攻略

◆ ◆ ◆ 导言 全世界顶尖的数据科学团队正在做着令人难以置信的工作,分析世上最有意思的数据集. 相比20世纪的研究者,谷歌(Google)拥有更多与人类利益相关的数据,而优步(Uber)每天无缝地协调着超过一百万人的行程.价格.借助机器学习和人工智能,顶尖的数据科学团队正在改变我们摄取和处理数据的方式,而且他们提出的众多确实可行的见解,影响了数百万人的生活.初出校门的你们.或者准备跳槽的你们,是不是激情澎湃地想要加入这史诗般的工作? 假若这些顶级数据科学团队的面试都有类似的模式,可以让求职者掌

为什么可视化数据有一定的误差值?

看得见的大数据 大数据到底是什么?大数据能做什么?已经讨论得太多太多,但是还是有很多值得聊一聊的,比如,大数据信息可视化,这是 大数据应用于实际中必须要解决的问题. 早在18世纪,英国统计学家普莱费尔·兰伯特就提出了统计信息可视化的理念,经过长期的发展,信息可视化技术到今天已经成为大数据展示的重要手段,信息可视化作为视觉信息转换技术,以提高数据表现效果为目的,可以更直观对大数据进行浏览与观察,明确数据相关性和隐藏特征. 因此,在整个大数据开发利用的闭环中,让大数据能够被感知并看到,是必不可少的一

简要分析全球大数据发展六大趋势

当前,大数据已成为继物联网.云计算之后的信息技术产业中最受关注的热点领域之一.随着大数据从概念渗透转向应用发展,大数据产业正处在蓬勃发展的孕育期与机遇期.大数据技术将在开源环境下不断提升,大数据产业将依赖快速聚集的社会资源,在数据和应用驱动的创新下,不断丰富商业模式,构建出多层多样的市场格局,大数据产业生态也将得到不断完善.大数据产业将成为引领信息技术产业发展的核心引擎,推动社会进步的重要力量. 一.开源成为技术创新主要模式 经过多年来的高速发展,大数据相关的数据采集.存储.分析.可视化等多个基

分析至上 大数据项目部署的五大愿景

文章讲的是分析至上 大数据项目部署的五大愿景,如果你正在尝试构建大数据应用或分析系统,你可能会清楚的意识到该领域缺少哪些功能.笔者将人们对大数据的愿景归纳为五大需求,分别是SQL(或SQL-like)分析.快速部署.高级分析.实时分析和网络分析选件. 好消息是人们正在努力应对这些问题,SQL分析选件就是其中之一.大批数据管理和数据分析专家们对SQL非常熟悉,自然想要利用SQL知识搞清楚Hadoop集群和NoSQL数据库中的数据.Apache Hadoop软件的发行商都在规划.测试,甚至已经发布了

基于数据包分析的大数据技术解决网络安全问题

1.网络攻击简介 网络攻击是利用网络存在的漏洞和安全缺陷对网络系统的硬件.软件及其系统中的数据进行的攻击.网络信息系统所面临而对威胁来自很多方面,而且会随着时间的变化而变化.从宏观上看,这些威胁可分为人为威胁和自然威胁. 自然威胁来自于各种自然灾害.恶劣的场地环境.电磁干扰.网络设备的自然老化等.这些威胁是无目的性的,但会对网络通信系统造成损害,威胁通信安全. 而人为威胁是对网络信息系统的人为攻击,通常是通过寻找系统的弱点,以非授权方式达到破坏.欺骗和窃取数据信息等目的.两者相比,精心设计的人为

分析|如何用大数据服务"武装"你的商业决策

从"十三五"规划中提出"国家大数据战略"起,到近期热议的"两会"政府工作报告中首提"人工智能",无疑,大数据和人工智能在整个国家政策及社会发展中的重要地位已开始逐步凸显.大数据的影响不仅仅体现在技术与制造过程上,同时也体现在管理者对企业的决策思维与过程中.不同于传统的基于经验的决策模式,大数据技术的应用将全面升级企业管理及商业决策的过程,使管理者的决策过程向更智能化.更有据可依的趋势迈进. 数据的爆发引起决策环境的巨变 今天,