`
flyingdutchman
  • 浏览: 358416 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

深入学习《Programing Hive》:HiveQL查询(3)

    博客分类:
  • Hive
阅读更多
        DISTRIBUTE BY
        我们都知道,MapReduce模型是默认是通过hashPartitioner()函数将key/value的keys的hash值来数据分发到对应的Reducers,DISTRIBUTE BY可以让用户来控制如何将key/value对分发到哪个Reducer。
        这在大多数的情况下通常很有用。但是在默写情况下,用户可能需要有自己来决定按某一个字段来将数据分发到Reducers,如下所示:
              hive> SELECT s.ymd,s.symbol,s.price_close  FROM stocks s
                  > DISTRIBUTE BY s.symbol
                  > SORT BY s.symbol ASC,s.ymd ASC;
        

        需要注意的是,DISTRIBUTE BY通常要和SORT BY使用,并且DISTRIBUTE BY必须使用在SORT BY之前。

        CLUSTER BY
        在上个使用DISTRIBUTE BY的示例中,由DISTRIBUTE BY按s.symbol字段将数据分发到相应的Reducers,然后又SORT BY对Reducer最终输出的数据按s.symbol和s.ymd做升序排序。
        CLUSTER BY关键字可以起到DISTRIBUTE BY和SORT BY相同的功能:
              hive> SELECT s.ymd,s.symbol,s.price_close  FROM stocks s
                  > CLUSTER BY s.symbol;
        

        使用DISTRIBUTE BYCLUSTER BY都可以起到对Reducers的输出做并行排倒序。

        类型转化(Casting)
        之前我们已经学习过数据类型转化的示例,如将一个数值转化为FLOAT类型,转换语法为cast(value AS TYPE),比如:
              SELECT name,salary FROM employees
              WHERE cast(salary AS FLOAT) < 100000.0
        

        如果salary不能转换成FLOAT类型的值的话,Hive会返回NULL。

        转换二进制类型的值
        从Hive 0.80开始,Hive开始支持二进制类型的值的转换。将BINARY的值b转换成STRING:
              SELECT (2.0 * cast(cast(b AS STRING) AS DOUBLE)) FROM src;
        

        同样也可以讲STRING类型转换成BINARY类型。

        采样查询
        有些时候,用户并不想对一个大数据集的数据做全部的分析处理,对于这种情况,Hive提供了对bucket table的采样查询功能:
              hive> SELECT * FROM numbers TABLESAMPLE(BUCKET 1 OUT OF 2 ON number)s;
        

        Hive中的桶下标是从1开始的。

        Block数据块数据采样(Block Sampling)
        Hive还提供了另外一种采样的语法——Block数据块数据采样,用户可以一个数据块的数据行(rows)采样:
              hive> SELECT * FROM numbersflat TABLESAMPLE(0.1 PERCENT) s;
        


        UNION ALL
        UNION ALL可以将两个或多个子查询的结果集合并到一块儿,这就要就要合并的结果集必须要有相同的列数,并且相对应的列要有相匹配的类型:
              SELECT log.ymd,log.level,log.message
                FROM(
                    SELECT l1.ymd,l1.level,l1.message,'log1' AS source FROM log1 l1
                  UNION ALL
                    SELECT l2.ymd,l3.level,l2.message,'log2' AS source FROM log2 l2
              ) log
              SORT BY log.ymd ASC
        
分享到:
评论

相关推荐

    HIVE编程指南

    HIVE编程指南中文版,是由programing hive翻译过来

    Programing1:编程的最终评估1

    下面我们将深入探讨这个评估可能涉及的一些关键知识点。 首先,基础编程语言的语法是必不可少的。无论是Python、Java、C++还是其他语言,掌握变量定义、数据类型(如整型、浮点型、字符串、布尔型等)、控制流程...

    Hive编程中文版

    Hive编程指南中文版翻译,Hive programing

    leetcode手册JAVA-test-programing-:测试-编程-

    只要它可以帮助正在学习新算法的人,它是否从某个地方复制并不重要。 图形示例也将非常有帮助。 不要忘记包括测试。 不要删除以前的算法实现。 只需使用您自己的实现添加一个新文件。 美化和清理您的代码以便于阅读...

    Programing with MFC Programing with MFC

    《Programming with MFC》是关于Microsoft Foundation Classes (MFC) 的编程指南,MFC 是微软为Windows应用程序开发提供的...通过深入学习MFC,开发者可以更好地理解和控制Windows应用程序的生命周期,提高开发效率。

    hive-programing

    直线-u'jdbc:hive2:// headnodehost:10001 /; transportMode = http'-f demo.hql #this用于将txt文件存储在azure中 直线-u'jdbc:hive2:// headnodehost:10001 /; transportMode = ...

    c++ programing and c

    c++ programingc++ programing and cc++ programing and cc++ programing and cc++ programing and cc++ programing and cc++ programing and cc++ programing and cc++ programing and cc++ programing and cc++ ...

    Algorithm-competitive-programing.zip

    3. **文件"competitive-programing-master"**:这个文件名暗示了压缩包可能包含一个完整的竞争编程学习资源库。通常,这样的资源可能包括练习题目、解决方案、参考资料、比赛模拟器甚至是训练教程。这些资料将有助于...

    programing-GIS:代码和笔记本

    通过深入研究这个"programing-GIS:代码和笔记本",学习者不仅可以掌握GIS编程的基本技能,还能了解如何将这些技能应用于实际问题,比如城市规划、环境保护、交通分析等领域。这将是一个宝贵的学习资源,帮助开发者将...

    The C Programing language

    #### 3. 数据类型 C语言支持多种数据类型,包括整型(int)、字符型(char)、浮点型(float/double)、布尔型(_Bool)等。开发者可以根据实际需求选择合适的数据类型来存储不同的值。 **示例代码:** ```c #include int...

    Python-programing:Python代码

    以上只是Python编程中的一些基础知识点,Python的生态庞大,还有更多高级特性和框架,如网络编程、并发处理、网络爬虫、机器学习、深度学习等,都需要进一步深入学习。Python-programing-main这个压缩包可能包含了...

    牛客的代码leetcode代码区别-common_programing:common_programing

    3. 规范编码习惯:观察他人的代码,我们可以吸收良好的编程习惯,如代码整洁、注释清晰等。 4. 适应面试环境:了解不同平台的偏好,能帮助我们在面试时更好地展示自己的技能。 5. 参与开源项目:如果这个项目是开源...

    集体智慧编程原书代码-programing collective intelligence

    3. 数据分析:运用统计学和机器学习方法对数据进行探索性分析,找出潜在模式和趋势。 4. 自然语言处理(NLP):处理文本数据,提取关键词、主题、情感等信息,用于文本分类、情感分析等任务。 5. 社交网络分析:...

    web-programing:belajar tentang membuat网站sederhana

    压缩包中的"web-programing-main"可能包含了示例代码、练习项目和教程资源,供学习者实践和巩固所学知识。通过实际操作,你可以更好地理解如何将理论应用于实践中,创建自己的简单网站。 总的来说,这个课程将引导...

    Competitive-Programing:来自各种在线平台的问题解决方案

    安装依赖项npm install node filename.js Python python filename.py 不Leetcode 等级朗格公司再来1个简单的JavaScript 2个简单的JavaScript 3简单的JavaScript 4简单的JavaScript 5简单的JavaScript 6简单的...

    visualization-programing:这是个人毕业设计

    可视化编程是一种将编程过程与视觉元素相结合的技术,它允许用户通过图形化界面构建代码,而无需直接编写文本形式的程序。...对于学习者来说,它提供了深入理解TypeScript和可视化编程原理的机会。

    C++ Programing 编程思想

    第1章 对象的演化 1 ...第3章 隐藏实现 42 第4章 初始化与清除 55 第5章 函数重载与缺省参数 69 第6章 输入输出流介绍 83 第7章 常量 124 第8章 内联函数 142 第9章 命名控制 157 第10章 引用和拷贝构造函数 176

Global site tag (gtag.js) - Google Analytics