认识SparkSql1.1SparkSql概述1.1.1SparkSql与DataFrameSparkSql特点:SparkSql 能够处理多种数据原SparkSql提升了hive的计算速度(spark)与计算复杂度(可以使数据仓库使用机器学习)。SparkS ql不仅是数据仓库的引擎,还是数据挖掘的引擎Hive+SparkSql+DataFrame组成了目前在国内的大数据主流技术组合。 Hive:负责低成本的数据仓库存储SparkSql:负责高速的计算DataFrame:负责复杂的数据挖掘1.1.2DataF rame与RDD的差异DataFrame:是一个分布式的面向列组成的数据集,与RDD不同的是,DataFrame是以列为单位的,因 此在优化DataFrame时,能够针对列进行优化,了解数据集内部的细节信息。RDD:是分布式弹性数据集,其特点时面向行,也就是说在 优化时,无法了解每一行内元数据具体的信息。因此RDD只能够基于行进行优化。例如对于dataframe,若内部数据有30列,而我们只 需要10列,那么我们可以利用dataframe的特点仅仅展示这10列,而对于RDD是做不到的,因为我们根本无法得知其内部数据的具体 情况。NameageteleDataframe中数据表现形式RecordRecordRecordRDD中数据表现形式 在rdd中我们无法知道record内部具体的细节。1.1.3SparkSql的发展Hive:sqlonhadoopSha rk:hiveonspark(把HQL翻译成Spark上的RDD)SparkSql:sqlonspark(摆脱了Hiv e代码)Hive到shark的变化在于更换了物理引擎(Hadoop--->Spark)1.2Hive概述1.2.1hiv e的基本原理Hive工作原理上包含两大过程:将接收来的HSql语句转化为MapReduce程序把产生的MapReduce代码及资 源打包成jar包并自动发布到Hadoop集群中运行。Hive的框架包含四个部分:驱动程序(Driver)Compiler:负责将 HQL语句转化为Mapreduce程序Optimizer:负责语意分析、优化、逻辑策略生成Executor:负责执行2)3 种服务模式Cli:hive的命令行模式webUI:hive的web模式JDBC/ODBC:hive的远程访问 模式(重点),该模式需要借助ThriftServer服务器来实现3)Metastore元数据库(关系型数据库)该元素据库用于存 储hive的元素数据,主要包括两种:系统自带默认的Derby,缺点是只允许一个会话链接,只适合简单的测试。外加的独立mysql元数 据库,能够支持多用户会话。4)Hadoop:Hadoop是Hive的基石,hive用hdfs存储真实数据,hive用mr进行计算 。1.2.2Hive的搭建Hive的搭建有3种方式:嵌入式安装:使用的是本地的Derby元数据库。本地安装:使用的是本地的my sql数据库。远程安装:使用的是非本地的mysql数据库。(1需要给root用户受于可以被远程链接的权限,2注意需要将mysql的 驱动器jar包导入到hive中。)1.2.3Hive的使用案例1、从网站上下载需要分析的数据(http://www.sogou .com/labs)从该网站上下载用户查询日志:日志说明:第一列表示用户访问时间第二列表示用户id第三列表示用户输入的 关键词第四列表示搜索内容出现在搜索结果的第几行第五列表示用户单击的是搜索出来的页面上的第几行第六列表示用户单击的超链接启动h ive创建hive库:createdatabasehive创建表:createtableSogouQ1(IDStrin g,websesionstring,wordstring,s_seqint,c_seqint,websitestring )rowformatdelimitedfieldsterminatedby''\t''linesterminated by''\n'';将本地数据导入到hive的表中:loaddatalocalinpath''/home/hadoop/Sog ouQ.reduced''intotableSogouQ1;3、数据分析(1)统计用户访问日志的总记数selectcoun t()fromSogouQ1;结果:1724264(2)统计百度访问的条数selectcount()fromSogouQ1wherewebsitelike''%baidu%''; |
|