一个文本文件,找出前 10 个经常出现的词,但这次文件比较长,说是上亿行或十亿行,
总之无法一次读入内存,问最优解。
方案 1:首先根据用 hash 并求模,将文件分解为多个小文件,对于单个文件利用上题的方
法求出每个文件件中 10 个最常出现的词。然后再进行归并处理,找出最终的 10 个最常出
现的词。
100w 个数中找出最大的 100 个数。
方案 1:在前面的题中,我们已经提到了,用一个含 100 个元素的最小堆完成。复杂度为
O(100wlg100)。
方案 2:采用快速排序的思想,每次分割之后只考虑比轴大的一部分,知道比轴大的一部分
在比 100 多的时候,采用传统排序算法排序,取前 100 个。复杂度为 O(100w100)。方案
3:采用局部淘汰法。选取前 100 个元素,并排序,记为序列 L。然后一次扫描剩余的元素x,与排好序的 100 个元素中最小的元素比,如果比这个最小的要大,那么把这个最小的元素删除,并把 x 利用插入排序的思想,插入到序列 L 中。依次循环,知道扫描了所有的元素。复杂度为 O(100w*100)。
ABC三个hive表,每个表中只有一列int类型且列名相同,求三个表中互不重复的数,比如表明:T_a T_b T_c每个列都叫做id(int类型)
Hive 你们用的是外部表还是内部表,有没有写过UDF,hive 的版本
Hive语句实现WordCount
1.建表
2.分组(group by)统计wordcount
select word,count(1) from table1 group by word;
简要描述数据库中的null,说出null在hive底层如何存储,并解释select a.* from t1 a left outer join t2 b on a.id=b.id where b.id is null;语句的含义。
null在hive底层默认是用"\N"来存储的,所以在sqoop到mysql之前需要将为null的数据加工成 其他字符,否则sqoop提示错误。
写出hive中spilt、coalesce及collect_list函数的用法(可举例)
split将字符串转化为数组
coalesce(T v1,T v2,...) 返回参数中的第一个非空值;如果所有值都为null,那么返回null
collect_list列出该字段所有的值,不去重 select collect_list(id) from table;
写出text.txt文件放入hive中test表‘2017-12-12’分区的语句,test的分区字段是l_date。
load data local inpath '/a.txt' overwrite into table test partition(xx='xx')
hive中有一个表test,结构是create table arrays(x array<string>),且有:
hive>select * from test;
OK
[“a”,”b”]
[“c”,”d”, ”e”]]
(1)请写出select explode(x)as xx from test;语句执行后的结果。
(2)请写出select ‘xx’,sp from test lateral view explode(split(concat_ws(‘,’,‘1’,‘2’),‘,’))a as sp;语句执行后的结果。
学生表(students),有字段学号(id),姓名(name),性别(sex)等字段。课程表(classes),有字段课程标识(id),课程名称(class_name)。学生选课分数表(sc),有字段学生表的学号(student_id),课程标识(class_id),分数(scores)。
(1)查询平均成绩大于60分的,且性别为“男”的同学的学号和平均成绩。
(2)x代表分数,x>=80表示优秀,x>=60&&x<80为及格,x<60为不及格等三个等级。请查询所有学生的姓名,课程名称及分数等级。
Hive是什么,以及适用场景,Hive与mysql关系,Hive与MapReduce关系,hive与Hbase的区别是?
基于hadoop的数据仓库工具,以hdfs方式存储,hive是面向分析的。Mysql关系型的、Hbase非关系都是面向存储的。Hive运行的就是mapreduce
Hive中创建表有哪几种方式,其区别是什么?
内部表:删除时,删除的时表结构,数据不没
外部表:删除数据也就没了
Hive中的UDF函数有哪几种,你写了哪些?
数学函数,字符串函数
字段大小写转换操作