题目描述:
现有数据源格式是这样的:
```
zs {sub:语文,score:81},{sub:数学,score:80}
ls {sub:语文,score:90}
```
解释:
1:数据源中存储的是学生的考试成绩信息,有的学生只考试了1门,所以只会有1门成绩,所以学生的成绩科目数量是不固定的,可能是1个或者2个或者3个。
2:数据源中第一列数据和第二列数据的分隔符是制表符
需要大家在Hive中建表,加载这份数据,最终可以使用SQL查询这份数据中的各科成绩。
效果:
希望最终查询出来的效果是这样的:
```
hive (default)> select * from stu;
stu.name stu.scores
zs [{"subject":"语文","score":81},{"subject":"数学","score":80}]
ls [{"subject":"语文","score":90}]
hive (default)> select scores[0].score from stu;
score
81
90
```
任务要求:
1:针对数据源中的数据进行数据清洗,清洗成需要的格式,使用MapReduce
代码进行数据清洗
2:针对清洗之后的数据在Hive中创建外部表
3:针对数据中的第二列内容需要使用数组存储
任务提示、思路分析:
1:考虑使用Hive中的复杂数据类型实现
2:注意,数据中的第二列内容使用array<string>
这种格式是错误的!!!