`
superlxw1234
  • 浏览: 542629 次
  • 性别: Icon_minigender_1
  • 来自: 西安
博客专栏
Bd1c0a0c-379a-31a8-a3b1-e6401e2f1523
Hive入门
浏览量:43276
社区版块
存档分类
最新评论
文章列表
关键字:Hive元数据、Hive元数据表结构   之前在 “[一起学Hive]之一–Hive概述,Hive是什么”中介绍过,Hive自己维护了一套元数据,用户通过HQL查询时候,Hive首先需要结合元数据,将HQL翻译成MapReduce去执行。 本文介绍一下Hive元数据中重要的一些表结构及用途,以Hive0.13为例。   文章最后面,会以一个示例来全面了解一下,Hive的元数据是怎么生成和存储的。   13.1 存储Hive版本的元数据表(VERSION) 该表比较简单,但很重要。 VER_ID SCHEMA_VERSION VERSION_COMMENT ...
关键字:Spark算子、Spark RDD分区、Spark RDD分区元素数量     Spark RDD是被分区的,在生成RDD时候,一般可以指定分区的数量,如果不指定分区数量,当RDD从集合创建时候,则默认为该程序所分配到的资源的CPU核数,如果是从HDFS文件创建,默认为文件的Block数。   可以利用RDD的mapPartitionsWithIndex方法来统计每个分区中的元素及数量。   关于mapPartitionsWithIndex的介绍可以参考 mapPartitionsWithIndex的介绍:   http://lxw1234.com/archives/ ...
关键字:SparkSQL读取HBase、SparkSQL自定义外部数据源     前面文章介绍了SparSQL通过Hive操作HBase表。   SparkSQL从1.2开始支持自定义外部数据源(External DataSource),这样就可以通过API接口来实现自己的外部数据源。这里基于Spark1.4.0,简单介绍SparkSQL自定义外部数据源,访问HBase表。     HBase中表如下:   create 'lxw1234',{NAME => 'f1',VERSIONS => 1},{NAME => 'f2',VERSIONS => ...
关键字: Spark读取HBase、SparkSQL读取HBase、SparkSQL整合Hive读取HBase表、Spark任务本地化调度机制 这里的SparkSQL是指整合了Hive的spark-sql cli(关于SparkSQL和Hive的整合,见文章后面的参考阅读). 本质上就是通过Hive访问HBase表,具体就是通过hive-hbase-handler(关于Hive和HBase的整合,见文章后面的参考阅读).   环境篇 hadoop-2.3.0-cdh5.0.0 apache-hive-0.13.1-bin spark-1.4.0-bin-hadoop2.3 hbase- ...
关键字:Hive整合HBase、Hive操作HBase表   十二、Hive整合HBase,操作HBase表   HBase是被设计用来做k-v查询的,但有时候,也会遇到基于HBase表的复杂统计,写MR很不效率。Hive考虑到了这点,提供了操作HBase表的接口。   关于Hive操作HBase表的原理,请参考我之前的博文: http://superlxw1234.iteye.com/blog/2008274   值得商榷的是,使用Hive操作HBase中的表,只是提供了便捷性,对于性能上,较MapReduce并不会提升太多,请大家酌情使用。   下面来看使用方法(基 ...
关键字: Hive 优化、HQL 优化、Hive数据倾斜     十一、Hive SQL的优化   本章只是从HQL层面介绍一下,日常开发HQL中需要注意的一些优化点,不涉及Hadoop层面的参数、配置等优化。   其中大部分是我之前发过的博客文章,这里整理了下。   11.1 使用分区剪裁、列剪裁   在SELECT中,只拿需要的列,如果有,尽量使用分区过滤,少用SELECT *。   在分区剪裁中,当使用外关联时,如果将副表的过滤条件写在Where后面,那么就会先全表关联,之后再过滤,比如:   SELECT a.id   FROM lxw1234_a ...
        关键字:Hive Join、Hive LEFT|RIGTH|FULL OUTER JOIN、Hive LEFT SEMI JOIN、Hive Cross Join         Hive中除了支持和传统数据库中一样的内关联、左关联、右关联、全关联,还支持LEFT SEMI JOIN和CROSS JOIN,但这两种JOIN类型也可以用前 ...
关键词:Hive MapJoin、Hive Common Join、Hive Reduce Join、Hive Join 九、Hive中Join的原理和机制 笼统的说,Hive中的Join可分为Common Join(Reduce阶段完成join)和Map Join(Map阶段完成join)。本文简单介绍一下两种join的原理和机制。 9.1 Hive Common Join 如果不指定MapJoin或者不符合MapJoin的条件,那么Hive解析器会将Join操作转换成Common Join,即:在Reduce阶段完成join. 整个过程包含Map、Shuffle、Reduce阶段。 ...
         关键字:Hive SELECT、ORDER BY、SORT BY、DISTRIBUTE BY、CLUSTER BY、Hive子查询、Hive虚拟列   八、Hive的查询语句SELECT         在所有的数据库系统中,SELECT语句是使用最多,也最复杂的一块,Hive中的查询语句SELECT支持的语法当然也比较复杂,本文只能尽力去介绍。   8.1 基础查询语法           Hive中的SELECT基础语法和标准SQL语法基本一致,支持WHERE、DISTINCT、GROUP BY、ORDER BY、HAVING、LIMIT、子查询等; 语法如 ...
       Spark也有数据本地化的概念(Data Locality),这和MapReduce的Local Task差不多,如果读取HDFS文件,Spark则会根据数据的存储位置,分配离数据存储最近的Executor去执行任务。          这么理解没错,我搭建的Spark集群情况是这样:          15台DataNode节点的HDFS集群,我在每个DataNode上都部署了一个Spark Worker,并且,启动Spark Application的时候,每个Worker都有一个Executor,这样理论上来说,只要读取HDFS文件,Spark都可以使用本地任务来读取 ...
     在Hive中,如果一个很大的表和一个小表做join,Hive可以自动或者手动使用MapJoin,将小表的数据加载到DistributeCache中,从而在使用Map Task扫描大表的同时,完成join,这对join的性能提升非常多。        在SparkSQL中,目前还不支持自动或者手动使用MapJoin。变通的方法是,将小表进行cache,然后再和大表做join。 SparkSQL中cache的作用就是将小表数据广播到每一个Worker的内存中,和加载到DistributeCache中是一个道理。     具体实现如下:    create tabl ...
      Spark1.4发布,除了重量级的SparkR,其中的SparkSQL支持了我期待已久的窗口分析函数(window functions),关于Hive中窗口分析函数的用法可参考 Hive分析函数系列 文章。      在我们的数据平台中,90%以上的离线分析任务都是使用Hive实现,其中必然会使用很多窗口分析函数,如果SparkSQL支持窗口分析函数, 那么对于后面Hive向SparkSQL中的迁移的工作量会大大降低,因此迫不及待将Spark1.4下载试用一下。       关于Spark1.4的安装配置,和1.3无异,安装配置步骤可参考 Spark1.3.1安装配置运行。    ...
      Hive提供的几种用户交互接口中,最常用的就是命令行接口。本文简单介绍一下Hive命令行接口(Hive Command Line)及Hive交互Shell(Hive Interactive Shell)的一些使用。   七、使用Hive命令行 7.1 Hive Command Line 输入$HIVE_HOME/bin/hive –H 或者 –help可以显示帮助选项:   -d,–define <key=value> 定义一个变量值,这个变量可以在Hive交互Shell中引用,后面会介绍用法,比如:-d A=B –database <da ...
       前面文章介绍了Hive中是支持分区的。        关系型数据库(如Oracle)中,对分区表Insert数据时候,数据库自动会根据分区字段的值,将数据插入到相应的分区中,Hive中也提供了类似的机制,即动态分区(Dynamic Partition),只不过,使用Hive的动态分区,需要进行相应的配置。        先看一个应用场景,源表t_lxw1234的数据如下: SELECT day,url FROM t_lxw1234; 2015-05-10 url1 2015-05-10 url2 2015-06-14 url1 2015-06-14 url2 20 ...
      在Hive中建好表之后,需要将数据加载进来,以便做后续查询分析,本文介绍向Hive表中加载数据的几种方式。 6.1 建表时候直接指定        如果你的数据已经在HDFS上存在,已经为结构化数据,并且数据所在的HDFS路 ...
Global site tag (gtag.js) - Google Analytics