SerDe 介绍

Hive 使用如下FileFormat 类读写 HDFS files:

TextInputFormat/HiveIgnoreKeyTextOutputFormat: 读写普通HDFS文本文件.
SequenceFileInputFormat/SequenceFileOutputFormat: 读写SequenceFile格式的HDFS文件.

Hive 使用如下SerDe 类(反)序列化数据:
MetadataTypedColumnsetSerDe: 读写csv、tsv文件和默认格式文件
ThriftSerDe: 读写Thrift 序列化后的对象.

DynamicSerDe: 读写Thrift序列化后的对象, 不过不需要解读schema中的ddl.

hive通过java写入csv文件:http://blog.csdn.net/zengmingen/article/details/52637483

CSV Serde

CSV格式的文件也称为逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号。在本文中的CSV格式的数据就不是简单的逗号分割的),其文件以纯文本形式存储表格数据(数字和文本)。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。

默认的分隔符:

DEFAULT_ESCAPE_CHARACTER \
DEFAULT_QUOTE_CHARACTER  "     //如果没有,则不需要指定
DEFAULT_SEPARATOR        ,

建表语句:

CREATE TABLE csv_table(a string, b string) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' WITH SERDEPROPERTIES (   "separatorChar" = "\t",   "quoteChar"     = "'",   "escapeChar"    = "\\")  STORED AS TEXTFILE;
separatorChar:分隔符
quoteChar:引号符
escapeChar:转意符

实验操作

准备数据

从数据库导出。

文件1:user1.csv

文件2:user2.csv

文件3:user3.csv

创建表

hive (zmgdb)> create table csv_t1(a string,b string,c string)
            > row format serde
            > 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
            > with
            > SERDEPROPERTIES
            > ("separatorChar"=",")  
            > STORED AS TEXTFILE;

引号符“

hive (zmgdb)> create table csv_t2(a string,b string,c string)
            >  row format serde
            > 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
            > with
            > SERDEPROPERTIES
            >  ("separatorChar"=",","quotechar"="\"")
            >  STORED AS TEXTFILE;
OK
Time taken: 0.072 seconds

转义符\

hive (zmgdb)> create table csv_t3(a string,b string,c string)
            >  row format serde
            > 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
            > with
            > SERDEPROPERTIES
            >  ("separatorChar"=",","escapeChar"    = "\\" )
            >  STORED AS TEXTFILE;
OK
Time taken: 0.088 seconds

导入

hive (zmgdb)> load data local inpath '/data/user1.csv' into table csv_t1;
Loading data to table zmgdb.csv_t1
OK
Time taken: 0.536 seconds

hive (zmgdb)> load data local inpath '/data/user2.csv' into table csv_t2;
Loading data to table zmgdb.csv_t2
OK
Time taken: 0.181 seconds

hive (zmgdb)> load data local inpath '/data/user3.csv' into table csv_t3;
Loading data to table zmgdb.csv_t3

查询

hive (zmgdb)> select * from csv_t1;
OK
csv_t1.a        csv_t1.b        csv_t1.c
%       root    Y
hello110        root    Y
127.0.0.1       root    Y
::1     root    Y
localhost       hive    N
%       hive    Y
Time taken: 0.74 seconds, Fetched: 6 row(s)

hive (zmgdb)> select * from csv_t2;
OK
csv_t2.a        csv_t2.b        csv_t2.c
%       root    Y
hello110        root    Y
127.0.0.1       root    Y
::1     root    Y
localhost       hive    N
%       hive    Y
Time taken: 0.068 seconds, Fetched: 6 row(s)

hive (zmgdb)> select * from csv_t3;
OK
csv_t3.a        csv_t3.b        csv_t3.c
%       root    Y
hello110        'root'  Y
127.0.0.1       NULL    NULL
::1     root    Y
localhost       hive    N
%       hive    Y
Time taken: 0.07 seconds, Fetched: 6 row(s)

补充

如果文件内容的引号符,分隔符,转义符,不是默认的,也不是建表语句指定的,则原样导入。

文件user4.csv:引号符是中文单引号

导入csv_t1表

hive (zmgdb)> load data local inpath '/data/user4.csv' into table csv_t1;
Loading data to table zmgdb.csv_t1

OK
Time taken: 0.191 seconds

hive (zmgdb)> select * from csv_t1;
OK
csv_t1.a        csv_t1.b        csv_t1.c
%       root    Y
hello110        root    Y
127.0.0.1       root    Y
::1     root    Y
localhost       hive    N
%       hive    Y
‘111111’        ‘root’  ‘Y’
‘112222’        ‘r2222’ ‘Y’
Time taken: 0.06 seconds, Fetched: 14 row(s)
hive (zmgdb)>

Hive 导入CSV文件相关推荐

  1. Hive导入csv文件

    现有文件为csv格式,需要导入hive中,设csv内容如下 1001,zs,23 1002,lis,24 首先创建表 create table if not exists csv2(uid int,u ...

  2. 向oracle中导入*.csv文件

    向oracle中导入*.csv文件 1.什么是*.csv,如何得到? 里面存放的是数据表.每行代表数据库表格的一行, 每行中,每两个数据中间由逗号","分割. *.csv可以通过& ...

  3. Oracle数据库表导出和导入csv文件操作

    Oracle数据库表导出和导入csv文件操作 数据库是Oracle 9i 1.导出csv文件 这个十分简单,用pl/sql工具即可,首先选中要导出的表,右键选择Query data,在左侧出现的窗口中 ...

  4. python导入csv文件-jupyter 导入csv文件方式

    先将准备的文件上传到自己的jupyter工作空间 import numpy as np import pandas as pd housing = pd.read_csv('housing.csv') ...

  5. python导入csv文件-python如何导入csv文件格式

    1.通过标准的Python库导入CSV文件 Python提供了一个标准的类库CSV文件.这个类库中的reader()函数用来导入CSV文件.当CSV文件被读入后,可以利用这些数据生成一个NumPy数组 ...

  6. python导入csv文件-python如何导入csv

    1.通过标准的Python库导入CSV文件 Python提供了一个标准的类库CSV文件.这个类库中的reader()函数用来导入CSV文件.当CSV文件被读入后,可以利用这些数据生成一个NumPy数组 ...

  7. C# 将List中的数据导入csv文件中

    //http://www.cnblogs.com/mingmingruyuedlut/archive/2013/01/20/2849906.html C# 将List中的数据导入csv文件中 将数据保 ...

  8. python如何将utf-8编码文件改为ansi编码文件_Excel导入CSV文件乱码?两个小方法让文件正常显示...

    最近网友抱怨,收到别人发来的数据表,打开后长这样: CSV再EXCEL中显示为乱码 除了数字,其他是啥玩意儿 完全乱码... (乱码!乱马!乱吗?乱!) 但是当使用记事本打开,检查确认是否文件有问题时 ...

  9. excel导入csv文件_如何将包含以0开头的列的CSV文件导入Excel

    excel导入csv文件 Microsoft Excel will automatically convert data columns into the format that it thinks ...

最新文章

  1. Spring - @Conditional全解
  2. ios开发两个简单的错误提示和原因
  3. C语言学习之输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。
  4. 程序员:最绝望的面试代码写了4个小时,就是不运行!最终收到15K的offer
  5. 支持M1芯片mac 达芬奇17中文版(详细安装教程) DaVinci Resolve Studio 17.3.1b5
  6. synchronized 解决死锁的问题 轉貼
  7. android 输出字节数组,Android蓝牙通信字节数组的数据类型转换 求教!
  8. 无聊闲做,从使用PHP数组实现约瑟夫环问题谈性能
  9. 第1章 Ext JS介绍与快速入门[1/4]
  10. 关于代码审查,那些你不曾关注的细节
  11. JAVA 线程池的分析和使用
  12. 《JAVA语言程序设计与数据结构》(基础篇)原书第11版 第一章(答案)
  13. zedgraph显示最小刻度_ZedGraph显示多条实时曲线
  14. 手机配置host的替代方案
  15. python课本图片_python爬虫当当网python书籍图片
  16. linux中批量删除用户,Linux shell批量删除用户
  17. informix 访问mysql_C语言访问INFORMIX数据库
  18. KVC原理分析及应用
  19. 【模电】0014 运放自激振荡和消除(补偿)
  20. Windows11下如何免安装配置MySQL服务(mysql5.6.50.zip)? | 超级详细,建议收藏

热门文章

  1. linux故障排查书籍,Linux系统故障排查和修复技巧.docx
  2. jsp springmvc 视图解析器_Java面试题整理——SpringMVC
  3. 《软件项目管理(第二版)》期末考试试题总结/复习资料
  4. C语言(CED)输出前k大的数(分治法/局部快速排序):给定一个数组,统计前k大的数并且把这k个数从大到小输出。
  5. C语言爆炸干货,小白你还不来看看嘛!
  6. java中解决组件重叠的问题(例如鼠标移动组件时)
  7. c语言输入字符时控制符%c前加空格的原因解释
  8. inur new.php id,Cmsez(随易)全站系统 0day
  9. go语言 doc转换html,go语言使用wkhtmltopdf工具将html转成pdf
  10. tensorboard ckpt pb 模型的输出节点_算法工程化系列——模型固化