//Struct中元素为Int类型
row format delimited fields terminated by ',' //字段之间用','分隔
collection items terminated by '_' //集合中的元素用'_'分隔
map keys terminated by ':' //map中键值对之间用':'分隔
lines terminated by '\n //行之间用'\n'分隔
2、向表test_set中插入数据
1)对于数据量较大,常用的一种方法是通过文件批量导入的方法,比如我现在要将如下的文本中的数据插入到表中
1,xiaoming,basketball_game,xiaohong:yes_xiaohua:no,99_75
1,xiaohong,watch_study,xiaoming:no_xiaohua:not,95_95
|
可以采用如下语句来实现
load data inpath '/uesr/xiaoming/11.txt' overwrite into table test_set
2)对于想插入几条数据时,可以采取insert语句来插入数据,比如我们想插入数据
2,xiaohua,basketball_read,xiaoming:no_xiaohong:no,90_90
|
可以采用如下语句来实现,分别通过array,str_to_map,named_struct来包装插入的三种集合数据
INSERT INTO test_set SELECT 2,'xiaohua',array('basketball','read'),str_to_map('xiaoming:no,xiaohong:no'),named_struct('math',90,'english',90)
3、查询表中的数据,如果要查询表中的所有数据,直接通过查询
select * from test_set
查询结果如下:
另外,对于集合类型的查询,我们还有一种经常使用的方法,查询语句如下
select id,name,hobby[0], //查询第一个hobby
friend['xiaohong'], //查询map键为xiaohong的value
mark.math //查询struct中math的值
from test_set where name = 'xiaoming'
查询结果如下:
3.1 基本数据类
型
对于
Hive
的 String 类
型
相当于数据库的 varchar 类
型
,该类
型
是一个可变的字符串,不过它不能声明其中最多能存储多少个字符,理论上它可以存储 2GB 的字符数。
3.2 集合数据类
型
Hive
有三种复杂数据类
型
ARRAY
、
MAP
和
STRUCT
。
ARRAY
和
MAP
与 Java 中的
Array
和
Map
类似,而
STRUCT
与 C 语言中的
Struct
类似,它封装了一个命名字段集合,复杂数据类
型
允许任意层次的嵌套。
1) 假设某表有如下一行,我们用 JSON 格式来表示其数据结构。在 Hi
目前
hive
支持的复合数据类
型
有以下几种:
(key1, value1, key2, value2, …) Creates a
map
with the given key/value pairs
struct
(val1, val2, val3, …) Creat...
[WITH CommonTable[removed], CommonTableExpression)*]
Only available
starting with
Hive
0.13.0)
SELECT [ALL | DISTINCT] select_expr, select_expr, ...
FROM table_reference
[WHERE where_condition]
[GROUP BY col_list]
[ORDER BY col_list]
[CLUSTER BY col_list
| [DISTRIBUTE BY col_list]
Hive
是一个建立在 Hadoop 之上的数据仓库基础设施,它提供了类似于关系
型
数据库的数据
查询
和分析功能。在
Hive
中,我们可以使用复杂数据类
型
来存储和处理结构化和半结构化数据,例如数组、映射和结构体。我们讨论了数组、映射和结构体类
型
,并提供了
相应
的源代码示例。要
插入
一个结构体类
型
的值,可以使用
Hive
的内置函数。要
插入
一个数组类
型
的值,可以使用
Hive
的内置函数。要
插入
一个映射类
型
的值,可以使用
Hive
的内置函数。语句
插入
了两行数据,每行数据包含一个整数和一个整数数组。
需求:在
创建
表的时候有一列类
型
为
array
<
struct
:”id”:string,”l”:string>想要自己造数据向表里
insert
格式应该怎么写呢?
建表语句如下:
CREATE EXTERNAL TABLE `test.test_imp06`(
`exps`
array
<
struct
<id:string,l:string>> COMMENT ‘ceshi...
操作
步骤
## 建表语句
create table
hive
_
map
(id int , name string , data_
map
map
<string,string>)
row format delimited fields terminated by ' '...
ROW FORMAT DELIMITED fields terminated by '\t'
collection items terminated by ','
map
keys terminated by ':';
一、
array
类
型
建表语句:create table 表名(要素1 类
型
,要素2 类
型
,要素3
array
) row format delimited fileds terminated by '\t' collection items terminated by ',';
array
_intersect(
array
1,
array
2):返回一个包含所有同时在数组
array
1和数组
array
2中的元素的数组(数组
array
1和数组
array
2的交集元素)。split(reverse(concat_ws(delimiter,
array
_sort(
array
))),delimiter):按。
array
_position(
array
, value):返回value在数组中的位置,如果不存在则返回。数组
array
2中的元素(数组
array
1比数组
array
2多的元素)。