妙趣横生大数据-期末作业

2023年3月7日

Q1.hive外部表和内部表的区别:

1)hive外部表和内部表的区别,本质是:该表是否由hive进行全生命周期的管理。

2)具体的区别体现在:

a.外部表建表时需要external修饰,而内部表不需要。

b.hive管理内部表的元数据、实际表数据。drop操作时,删除了元数据及实际的表数据;hive仅管理外部表的元数据。drop操作时,则只删除元数据。

c.创建表时,内部表的存储路径一般是在默认的位置,而外部表的存储路径一般搭配 location 指定数据存放位置。

d.表结构和分区发生变化时,内部表会自动同步到元数据;而外部表需要使用语句进行修复。


Q2.简述对Hive桶的理解?

1)数据分桶是指:将数据集分解为更容易管理的若干部分的一种技术。Hive 桶技术,是基于hash值对数据进行划分,可以让查询发生在小范围,继而提高查询效率。

2)主要作用:

a.在处理大规模数据集时,如果进入开发、修改查询阶段,可以使用整个数据集的一部分进行抽样测试查询、修改。此时利用hive桶,提升查询、修改效率,可以使得开发更高效。

b.可以利用map-side join操作,让数据查询、连接操作更快速高效。由于hive桶为表加上了额外的结构,在处理部分查询时能利用这个结构。如,连接两个在相同列上划分了桶的表,可以使用 Map 端连接 ,即Map-side join高效实现。又如,JOIN操作时,对于两个有相同列的表,如果对这两个表同一列进行了桶操作,那么将保存相同列值的桶进行JOIN操作就可以,可以大大减少JOIN的数据量,操作更高效。


Q3.HBase和Hive的区别?

1)从大数据架构上,Hbase主要解决实时数据查询问题,Hive主要解决数据处理和计算问题。

2)Hbase和Hive是两种基于Hadoop的不同技术。其中,Hbase是一种在Hadoop之上的NoSQL 的Key/vale数据库,而Hive是一种类SQL的引擎,并且运行MapReduce任务。两者可以搭配使用。


Q4.简述Spark宽窄依赖

1)RDD和它的父RDD的关系有两种类型:宽依赖和窄依赖。

2)宽依赖:指的是多个子RDD的Partition会依赖同一个父RDD的Partition,关系是一对多,父RDD的一个分区的数据去到子RDD的不同分区里面,会有Shuffle的产生。

3)窄依赖:指的是每一个父RDD的Partition最多被子RDD的一个Partition使用,是一对一的,也就是父RDD的一个分区去到了子RDD的一个分区中,这个过程没有Shuffle产生。


Q5.Hadoop和Spark的相同点和不同点

1)Hadoop和Spark的相同点:

Hadoop和Spark都是并行计算,两者都是用MR模型进行计算;两者都提供了灾难恢复

2)Hadoop和Spark的不相同点:

a.Hadoop将中间结果存放在HDFS中,每次MR都需要刷写-调用。而Spark中间结果存放优先存放在内存中,内存不够再存放在磁盘中,不放入HDFS,避免了大量的IO和刷写读取操作;

b.Hadoop底层使用MapReduce计算架构,只有map和reduce两种操作,适合高时延环境下批处理计算的应用。Spark是基于内存的分布式计算架构,提供更加丰富的数据集操作类型,主要分成转化操作和行动操作,包括map、reduce、filter、flatmap等,数据分析更加快速,所以适合低时延环境下计算的应用;

c.基于MapReduce框架的Hadoop主要分为map和reduce两个阶段,所以在一个job里面能做的处理很有限,对于复杂的计算,需要使用多次MR;Spark计算模型是基于内存的迭代式计算模型,根据用户编写的RDD算子和程序,在调度时根据宽窄依赖可以生成多个Stage,根据action算子生成多个Job。所以Spark相较于MapReduce,计算模型更加灵活,可以提供更强大的功能。

d.Hadoop适合处理静态数据,对于迭代式流式数据的处理能力差;Spark通过在内存中缓存处理的数据,提高了处理流式数据和迭代式数据的性能。


Q6.Spark为什么比MapReduce块?

原因如下:

1)Spark是基于内存计算,减少了低效的磁盘交互;

2)高效的调度算法,基于 DAG,有向无环图计算模型可以减少磁盘I/O次数;

3)通过复用线程池中的线程来减少启动、关闭task所需要的开销。


Q7.说说你对Hadoop生态的认识

hadoop生态:

hadoop生态是基于hdfs大数据的存储方案,提供了全栈的大数据处理方案。例如,离线批处理由MapReduce、Hive完成,实时交互由HBase、Impala完成,流计算由Storm完成。除此之外,提供了Sqoop转库工具、Flume大吞吐量的采集工具以及分布式协调服务ZK、Kafka分布式MQ、Hue图形化查询器等软件,还提供了Mahout机器学习引擎。

随着spark计算引擎的出现,也出现了spark生态圈,批处理由Spark本身的Core就可以完成、实时交互由Spark SQL进行查询、流计算由Spark Streaming进行完成。除此之外还提供了MLib、GraphX这些计算工具方便进行计算。


Q8.实战

1)#填入获得前k个排名的函数

def takeTopK(pairList, k):

temp  = sorted(pairList.items(), key=lambda x: x[1], reverse=True)

print(temp[0:k])

2)#写出DF计算的函数

DF =round(math.log(data_counts/(headlineDF3+1)), 2)

3)整体代码运行及执行结果

尚未完成。


学习资源引自datawhale开源学习课程~感恩!

https://blog.csdn.net/qq_41474121/article/details/109119761

https://www.cnpython.com/tags/476019

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容