大数据面试

为什么有外部表和内部表?区别是什么?

早期也是没有内部表和外部表的说法的,在传统的RDMS数据数据库领域中,如果想要对一个数据库表进行例如增删改查等操作,就需要在数据库引擎中规范建立对应的数据库表,并且把数据导入其中才可以操作。

但是随着行业、大数据组件的不断发展,这种传统的玩法已经不能满足使用了,因此就提出了能不能通过外部表的形式与外界任何形式的数据建立连接。

在hive中,我们只需要通过简单的create external table ... location '/xxx/xxx'的sql语句就建立一张外部表,通过location可以指向任何兼容数据的位置。

外部表与内部表不同的是:删除内部表会直接删除元数据(metadata)及存储数据;删除外部表仅仅会删除元数据,HDFS上的文件并不会被删除;对内部表的修改会将修改直接同步给元数据,而对外部表的表结构和分区进行修改,则需要修复(MSCK REPAIR TABLE table_name)。

因为外部表真正的执行不在数据库引擎中,像一些删除操作、修改操作都是不太好支持的,所以还是具有一定的局限性。目前除了hive,还有clickhouse、doris、starrocks等等工具都支持外部表功能。

spark比mapreduce快的原因是什么?mapreduce就一定比spark慢嘛?

在早期spark还没有出现的时候,是没人觉得mapreduce慢的,直到spark的出现,让众多大数据开发人员眼前一亮,经过统计,某些情况下,spark的处理效率要比mapreduce快100倍。

内存计算:mapreduce在编程模型上,只有简单map和reduce,而且map阶段的所以数据都要写入到磁盘,导致磁盘io开销很大,速度也很慢,而spark是完全基于内存的计算框架,只有当内存溢出的时候,才会写入到磁盘,这减少了磁盘读写操作,提高了计算效率。

DAG调度:Spark使用DAG(Directed Acyclic Graph)调度引擎,可以在内存中构建一个DAG,以避免重复计算和数据复制。而MapReduce使用简单的Map-Shuffle-Reduce模型,不能充分利用资源,导致资源浪费。

数据结构:Spark支持弹性分布式数据集(RDDs),允许对数据进行多次处理,并在多个计算节点之间共享数据。而MapReduce只能处理一次MapReduce操作,并将中间结果写入磁盘,从而导致性能损失。

并行度:Spark的并行度更高,可以将数据分成更小的块进行处理。Spark还可以动态调整并行度,以根据数据的大小和计算节点的数量进行自适应优化。而MapReduce的并行度较低,只能使用固定数量的计算节点进行处理。

同时spark针对大量场景,提供了丰富的算子和api,让开发者使用更加灵活方便。

综上所述,Spark具有更好的性能和灵活性,适用于大规模数据处理和机器学习任务。

但是,spark也并非是一定就比spark慢,当做一个简单的数据转换,且只需要Map操作时,mapreduce的处理效率要比Spark高,因为Spark预处理和启动的成本比较高,MapReduce在处理大规模数据时仍然具有一定的优势,因为它可以处理更大的数据集并具有更高的容错性。

相关推荐
NGINX开源社区2 小时前
使用 NGINX 作为 AI Proxy
大数据·人工智能·nginx
雪兽软件9 小时前
如何从目标到决策构建大数据战略?
大数据
数据皮皮侠10 小时前
中国城市间地理距离矩阵(2024)
大数据·数据库·人工智能·算法·制造
ToB营销学堂10 小时前
B2B营销自动化新解法:MarketUP聚焦高转化场景
大数据·运维·自动化
TK云大师-KK10 小时前
TikTok自动化直播遇到内容重复问题?这套技术方案了解一下
大数据·运维·人工智能·矩阵·自动化·新媒体运营·流量运营
昨夜见军贴061613 小时前
AI审核守护生命设备安全:IACheck成为呼吸机消毒效果检测报告的智能审核专家
大数据·人工智能·安全
Elastic 中国社区官方博客14 小时前
现已正式发布: Elastic Cloud Hosted 上的托管 OTLP Endpoint
大数据·运维·数据库·功能测试·elasticsearch·全文检索
D愿你归来仍是少年14 小时前
Flink 并行度变更时 RocksDB 状态迁移的关键机制与原理
大数据·flink·apache
昨夜见军贴061614 小时前
AI审核守护透析安全:IACheck助力透析微生物检测报告精准合规
大数据·人工智能·安全
新新学长搞科研15 小时前
【高届数会议征稿】第十二届传感云和边缘计算系统国际会议(SCECS 2026)
大数据·人工智能·生成对抗网络·边缘计算·传感器·学术会议