name STRING, hobby ARRAY, //array中元素为String类型 friend MAP, //map中键和值均为String类型 mark struct //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 &amp;lt; struct :”id”:string,”l”:string&amp;gt;想要自己造数据向表里 insert 格式应该怎么写呢? 建表语句如下: CREATE EXTERNAL TABLE `test.test_imp06`( `exps` array &amp;lt; struct &amp;lt;id:string,l:string&amp;gt;&amp;gt; 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多的元素)。