hive数据导入导出

一、导入数据4种方式

建表语句

  1. create table test(
  2. name string,
  3. friends array,
  4. children map<string, int>,
  5. address struct<street:string, city:string>
  6. )
  7. row format delimited fields terminated by ','
  8. collection items terminated by '_'
  9. map keys terminated by ':'
  10. lines terminated by '\n';
  11.  
  12. row format delimited fields terminated by ',' 列分隔符
  13. collection items terminated by '_' --MAP STRUCT ARRAY 的分隔符(数据分割符号)
  14. map keys terminated by ':' MAP中的keyvalue的分隔符
  15. lines terminated by '\n'; 行分隔符

1、本地文件导入到Hive表,需提前创建表

  1. row format delimited fields terminated by '|'
  2. lines terminated by '\n'
  3. stored as textfile;
  4. load data local inpath "/tmp/user/data/demo_local.parquet" into table db_tmp.demo_local;

2、HDFS文件导入到Hive表,需提前创建表

  1. load data inpath "/tmp/user/data/demo_hdfs.parquet" into table db_tmp.demo_hdfs;

3、Hive表导入到Hive表

  1. insert into table demo_hive select * from demo_hive_b;

4、创建表时从其他Hive表导入

  1. create table demo_a as select * from demo_hive_b;

5、通过sqoop将mysql库导入到Hive表

  1. -- 默认导入到default
  2. sqoop import --connect
  3. jdbc:mysql://127.0.0.1:3306/casedb
  4. --username root
  5. --password password
  6. --table demo --hive-import
  7. --create-hive-table -m 1
  8.  
  9. -- 指定导入的数据库
  10. sqoop import --connect
  11. jdbc:mysql://127.0.0.1:3306/casedb
  12. --username root
  13. --password root --table demo
  14. --hive-import --create-hive-table
  15. --hive-table database.demo -m 1

二、导出数据

1、导出到本地

  1. insert overwrite local directory
  2. "/home/hadoop/data/"
  3. row format dilimited
  4. fields terminated by ","
  5. select * from demo_hive_b;

2、导出到HDFS

  1. insert overwrite directory
  2. "/home/hadoop/data/"
  3. row format dilimited
  4. fields terminated by ","
  5. select * from demo_hive_b;

3、Hive命令行导出

  1. # Linux bash终端
  2.  
  3. # 重定向方式
  4. hive -e "select * from demo_hive_b" >>
  5. /home/hadoop/data/demo_output.txt
  6.  
  7. # sql文件方式
  8. echo "select * from demo_hive_b" >
  9. /home/hadoop/data/demo_output.sql
  10. hive -f /home/hadoop/data/demo_output.sql >>
  11. /home/hadoop/data/demo_output.txt

4、导出文件时,会遇本来表中本来字段值为null的字段导出时为\n

  1. insert overwrite directory '/data/files/map_table_4'
  2. ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
  3. WITH SERDEPROPERTIES (
  4. 'field.delim'=',',
  5. 'serialization.format'= '',
  6. 'serialization.null.format'=''
  7. ) STORED AS TEXTFILE
  8. select foo, null, bar from map_table;

三、备注

1)设置 alter table name SET SERDEPROPERTIES('serialization.null.format' = '\N'); 

则:底层数据保存的是'\N',通过查询显示的是'NULL'
这时如果查询为空值的字段可通过 语句:a is null 或者 a='\\N'

2)设置 alter tablename SET SERDEPROPERTIES('serialization.null.format' = 'NULL');
则:底层数据保存的是'NULL',通过查询显示的是'NULL'
这时如果查询为空值的字段可通过 语句:a is null 或者 a='NULL'

3)设置 alter tablename SET SERDEPROPERTIES('serialization.null.format' = '');
则:底层数据保存的是'',通过查询显示的是'NULL'
'' 与 length(xx)=0
'' 表示的是字段不为null且为空字符串,此时用 a is null 是无法查询这种值的,必须通过 a='' 或者 length(a)=0 查询。

hive之数据导入导出的更多相关文章

  1. 2.11 Hive中数据导入导出Import和Export使用

    https://cwiki.apache.org/confluence/display/Hive/LanguageManual+ImportExport 一.Export.Import Export ...

  2. kettle连接Hive中数据导入导出(6)

    1.hive往外写数据 http://wiki.pentaho.com/display/BAD/Extracting+Data+from+Hive+to+Load+an+RDBMS 连接hive

  3. 数据仓库Hive数据导入导出

    Hive库数据导入导出 1.新建表data hive (ebank)> create table data(id int,name string) > ROW FORMAT DELIMIT ...

  4. 如何利用sqoop将hive数据导入导出数据到mysql

    运行环境  centos 5.6   hadoop  hive sqoop是让hadoop技术支持的clouder公司开发的一个在关系数据库和hdfs,hive之间数据导入导出的一个工具. 上海尚学堂 ...

  5. 从零自学Hadoop(16):Hive数据导入导出,集群数据迁移上

    阅读目录 序 导入文件到Hive 将其他表的查询结果导入表 动态分区插入 将SQL语句的值插入到表中 模拟数据文件下载 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并 ...

  6. Hive 实战(1)--hive数据导入/导出基础

    前沿: Hive也采用类SQL的语法, 但其作为数据仓库, 与面向OLTP的传统关系型数据库(Mysql/Oracle)有着天然的差别. 它用于离线的数据计算分析, 而不追求高并发/低延时的应用场景. ...

  7. Hive常用操作之数据导入导出

    一.Hive数据导入导出 1.hive数据导出 很多时候,我们在hive中执行select语句,希望将最终的结果保存到本地文件或者保存到hdfs系统中或者保存到一个新的表中,hive提供了方便的关键词 ...

  8. 利用sqoop将hive数据导入导出数据到mysql

    一.导入导出数据库常用命令语句 1)列出mysql数据库中的所有数据库命令  #  sqoop list-databases --connect jdbc:mysql://localhost:3306 ...

  9. Sqoop -- 用于Hadoop与关系数据库间数据导入导出工作的工具

    Sqoop是一款开源的工具,主要用于在Hadoop相关存储(HDFS.Hive.HBase)与传统关系数据库(MySql.Oracle等)间进行数据传递工作.Sqoop最早是作为Hadoop的一个第三 ...

随机推荐

  1. 配置Webpack Dev Server 实战操作方法步骤

    本文摘要:配置 Webpack Dev Server 可以解决本地开发前端应用时,手动执行 webpack 命令或 yarn build 命令,再去浏览器中访问 dist/index.html 的麻烦 ...

  2. 《Python高手之路 第3版》这不是一本常规意义上Python的入门书!!

    <Python高手之路 第3版>|免费下载地址 作者简介  · · · · · · Julien Danjou 具有12年从业经验的自由软件黑客.拥有多个开源社区的不同身份:Debian开 ...

  3. mysql 8.0.28 查询语句执行顺序实测结果

    TL;NRs 根据实测结果,MySQL8.0.28 中 SQL 语句的执行顺序为: (8) SELECT (5) DISTINCT <select_list> (1) FROM <l ...

  4. WebGPU实现Ray Packet

    大家好~本文在如何用WebGPU流畅渲染百万级2D物体?基础上进行优化,使用WebGPU实现了Ray Packet,也就是将8*8=64条射线作为一个Packet一起去访问BVH的节点.这样做的好处是 ...

  5. KingbaseES V8R6C5集群部署启动securecmdd服务配置案例

    案例说明: 对于KingbaseES V8R6C5版本在部集群时,需要建立kingbase.root用户在节点间的ssh互信,如果在生产环境禁用root用户ssh登录,则通过ssh部署会失败:在图形化 ...

  6. Oracle_FDW 使用介绍

    本文以例子的形式介绍 KingbaseES(Postgresql)数据库如何通过 oracle_fdw 扩展访问Oracle数据库.以下例子在PG12.3 与 KingbaseES V8R6进行过实际 ...

  7. 【Android 逆向】ARM CPP 类对象

    #include <stdio.h> class aclass{ private: int m; char c; public: aclass(int i, char ch) { prin ...

  8. 详谈 MySQL 8.0 原子 DDL 原理

    柯煜昌 青云科技研发顾问级工程师 目前从事 RadonDB 容器化研发,华中科技大学研究生毕业,有多年的数据库内核开发经验. 文章字数 3800+,阅读时间 15 分钟 背景 MySQL 5.7 的字 ...

  9. LVGL 入门使用教程

    一.准备资料 开发板:ESP32-S3 开发环境:VS Code + PlatformIO 串口屏驱动 TFT-eSPI:https://github.com/Bodmer/TFT_eSPI 触摸驱动 ...

  10. http服务(postman调用方法及反参)

    #region 监听url #region 监听url路径请求 static HttpListener httpobj; private void listeningUrl() { //提供一个简单的 ...