• HIVE表 DML 操作——第4关:将 select 查询结果写入文件


    第4关:将 select 查询结果写入文件


    任务描述

    本关任务:根据编程要求将select查询结果写入文件

    相关知识

    为了完成本关任务,你需要掌握:1.单文件写入,2.多文件写入。

    可以把Hive查询结果写入或导出到文件中,与查询结果插入到表中类似,导出 Hive表中的数据到文件也有两种方法,分别是单文件写入和多文件写入。

    单文件写入
    INSERT OVERWRITE [LOCAL] DIRECTORY directory
    [ROW FORMAT row_format] [STORED AS file_format]
    SELECT select_statement FROM from_statements;
    
    • 1
    • 2
    • 3

    若指定LOCAL关键字,查询结果写入本地文件系统中(OS 文件系统);否则,查询结果写入到分布式文件系统中(HDFS)。

    row_format:
    DELIMITED [FIELDS TERMINATED BY char [ESCAPED BY char]] [COLLECTION ITEMS TERMINATED BY char][MAP KEYS TERMINATED BY char] [NULL DEFINED AS char]
    
    • 1
    • 2

    row_format个属性说明参见 Hive DDL操作(一) 创建表部分。

    • 如将shopping表中数据写入到/home/example目录下:
    insert overwrite local directory '/home/example'
    select * from shopping;
    
    • 1
    • 2

    会在/home/example目录下生成000000_0文件。

    多文件写入
    FROM from_statement
    INSERT OVERWRITE  [LOCAL] DIRECTORY directory1
    SELECT select_statement1
    [INSERT OVERWRITE  [LOCAL] DIRECTORY directory2
    SELECT select_statement2];
    
    • 1
    • 2
    • 3
    • 4
    • 5
    编程要求

    test4数据库中有student表,表中数据如下:

    Snonameagesexscore(Chinese-Math-English)
    001Xiaohong18female96-88-90.5
    002Xiaoliang17male95-88-93.5
    003Xiaoming19male86.5-98-91
    004Xiaoguang18male88-80-94
    005Xiaohua16female97-58.5-88
    • 查询student表中的前两条数据写入到本地文件/home/test4目录下
    • 查询student表中男生的数据写入到本地文件/home/test4_1目录下,女生的数据写入到本地文件/home/test4_2目录下
    由于hive启动时间较长,测评时请耐心等待,大概需要时间:1-2分钟。
    
    • 1
    测试说明

    平台会对你编写的命令进行测试:

    若操作成功,会显示如下信息:

    test4目录下文件内容为:
    2Xiaoliang17male95.088.093.5
    1Xiaohong18female96.088.090.5
    test4_1目录下文件内容为:
    2Xiaoliang17male95.088.093.5
    3Xiaoming19male86.598.091.0
    4Xiaoguang18male88.080.094.0
    test4_2目录下文件内容为:
    1Xiaohong18female96.088.090.5
    5Xiaohua16female97.058.588.0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    开始你的任务吧,祝你成功!


    --使用test4数据库
    use test4;
    --Begin
    insert overwrite local directory '/home/test4'
    select * from student limit 2;
    
    from student
    insert overwrite local directory '/home/test4_1'
    select * where sex = 'male'
    insert overwrite local directory '/home/test4_2'
    select * where sex = 'female'
    
    --End
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
  • 相关阅读:
    Mybatis (2)
    【开发篇】十六、SpringBoot整合JavaMail实现发邮件
    npm ERR! Cannot find module ‘libnpmexec‘
    MATLAB程序设计与应用 3.1 特殊矩阵
    springboot集成netty实现websocket
    Vue中数组操作方法有哪些?
    代码随想录算法训练营第五十八天| 583. 两个字符串的删除操作 72. 编辑距离
    Spring——Bean注入几种方式(放入容器)
    写在冬日的第一天--一个女程序员第十九年工作总结
    MVVM中wpf设置控件是否可见
  • 原文地址:https://blog.csdn.net/qq_51916951/article/details/127544659