独家整理,超级全的问答!!
21、Linux的命令有哪些?
pwd:查看当前所在的位置(当前路径)
cd:切换到指定目录中
ls:显示指定路径下的内容,默认为当前路径
cat:查看文件内容,适合小文件查看
head-n 文件:查看指定文件的前n行内容,默认为前10行
tail-n 文件:查看指定文件后n行内容,默认为后10行
find 指定目录 查找条件:在指定目录下,按照指定条件查找文件。
22、python有哪些函数类型?(Python)
(1)普通函数
(2)匿名函数(Lambda函数)
(3)高阶函数
(4)内置函数
(5)递归函数
(6)闭包函数
(7)装饰器函数
23、datanode和namenode直接关系?
namenode:是HDFS核心管理和控制中心,负责维护文件系统的元数据和命名空间信息。
datanode:负责存储实际的数据块,并响应客户端的读写请求。
HDFS是主从建构,NameNode属于主角色,DataNode属于从角色,Secondary NameNode属于主角色的辅助角色。
24、MapReduce的shuffle机制?
含义:一般把从Map端产生输出开始到Reduce取得数据作为输入之前的过程称为shuffle
Map端shuffle:分区 收集缓冲区 溢写 排序 合并 规约
Reduce端shuffle:拉取数据 合并 排序 分组
25、Hadoop的小文件有什么危害,一般怎么处理?
(1)小文件比较吃内存 小文件数量会导致大量元数据存储开销 会消耗大量的NameNode内存存储资源
(2)会导致大量maptask任务启动开销,因为每一个文件都要启动一个任务来处理,但是每个Map Task处理的数据都很小,浪费资源。
上传HDFS前,使用Python或者Java代码进行本地小文件合并;
上传HDFS中,使用appendToFile把多个小文件追加成为大文件;
上传HDFS后,使用MapReduce程序合并或者使用Hadoop Archive对小文件进行归档。
26、Hive的存储格式?
行式存储文件:TextFile、SquenceFile
列式存储文件:RCFlie、ORCFlie
27、UDF UDAF UDTF
UDF:普通函数 一进一出 concat、length、substr 等
UDAF:聚合函数 多进一出 sum、avg、max、min等
UDTF:爆炸函数 一进多出 explode、json_tuple 等
拓展:Filnk:多进多出
28、Hive字符串函数
split 切割
concat 拼接
concat_ws 指定分隔符拼接
substring 截取
regexp_replace 正则替换
29、数据仓库分层的好处?
将复杂的问题简单化 方便血缘追踪,错误排除
30、linux命令中ps和jps有什么区别?
ps -ef:显示当前进程状态
jps:查看有运行的java进程信息
31、HDFS的文件上传流程(写流程简易版)
1、客户端向namenode请求上传文件
2、namenode进行检查 有无权限,有没有重复命名的文件
3、检查完毕后进行反馈
4、客户端进行分片
5、客户端向namenode发起请求挑选datanode
6、namenode挑选datanode给客户端进行反馈
7、客户端和Datanode建立pipline管道,进行上传
8、上传完毕等待namenode确认
32、HDFS的文件读取流程(读流程简易版)
1、客户端向namenode发起读取请求
2、namenode根据网络拓扑结构对datanode进行排序
3、进行反馈
4、客户端就最近的datanode进行下载bloce块
5、合并成为一个文件
33、数据仓库的特点是什么?
面向主题、集成性、非易失性、时变性
34、YARN的三大组件是什么?
RM:ResourceManager 资源申请入口 资源分配的仲裁权 调度管理
NM:NodeManager 负责机器上的资源管理 听RM的命令分配干活 启动回收的Container容器
AM:每个程序里的老大 负责程序里的资源申请 任务监督申请 管理 向RM汇报程序执行进度和情况
35、什么是pymysql?(Python)
pymysql是Python的一个第三方模块,用于链接MySQL数据库,提供了强大的接口,可以在Python程序中执行各种数据库操作
36、json函数?
json函数是用来json格式数据处理的
内置json函数:
(1)get_json_object
(2)json_tuple
37、Python模块是什么?(Python)
在Python中,模块是一个包含Python代码的.py文件,他可以定义函数、类和变量等。
一个模块就是一个代码片段,它可以被其他Python文件导入并使用其中的函数、类和变量等。通过使用模块,可以将代码分解为较小的、可重用的组件,提高代码的可维护性和可重用性。
38、Pandas的API说五个?怎么用?(Python)
(1)读取数据:read_csv
import pandas as pd
# 读取CSV文件
data = pd.read_csv('example.csv')
# 显示前几行数据
print(data.head())
(2)写入数据:to_csv
包含行头
# 将数据写入CSV文件,包含行头
data.to_csv('output_with_header.csv', index=True)
不包含行头
# 将数据写入CSV文件,不包含行头
data.to_csv('output_without_header.csv', index=False, header=False)
(3)数据选择和过滤:
使用loc和iloc方法选择和过滤数据
# 使用标签选择行和列
selected_data = data.loc[:, ['column1', 'column2']]
# 使用位置索引选择行和列
selected_data = data.iloc[:, [0, 1]]
4、缺失值处理:
使用dropna或fillna处理缺失值
# 删除包含缺失值的行
data_without_na = data.dropna()
# 使用平均值填充缺失值
data_filled = data.fillna(data.mean())
5、数据排序:
使用sort_values方法对数据进行排序
# 按某列升序排序
sorted_data = data.sort_values(by='column1', ascending=True)
39、什么是渐变维?怎么操作?
维度变化程度可以分为无变化维度维度(无渐变维)、缓慢变化维度(缓慢渐变维)、剧烈变化维度(剧烈渐变维)
无渐变维:维度中的属性随着时间变化而不会变化。如:性别等
缓慢渐变维:维度中属性随着时间变化而缓慢变化。如:居住城市、工作公司等
剧烈渐变维:维度中属性随着时间变化而剧烈变化。如:每天的营业额等
缓慢渐变类型1(SCD1):
通过更新维度记录,直接覆盖已存在的值。不维护记录的历史记录。一般用于修改错误数据。
缓慢渐变类型2(SCD2):
在元数据发生变化时,给维度建立新的“版本”记录,从而维护历史数据。SCD2不删除、不修改已存在的数据,也叫拉链表。
渐变类型3(SCD3):
将维护历史字段新增一列。
40、hive中 Sort by、Order by、Cluster by、Distrbute by 各代表什么意思?
sort by:可以对分桶内的数据进行排序,可以和distribute by 指定不同字段进行排序。
order by:会对输入做全局排序,因此只有一个reducer(多个reducer无法保证全局有序)。不管参数将reducetask个数设置为几个,最终编译期间都会设置为1个,该操作可能会导致当前输入规模较大时,需要较长计算时间。
cluster by:根据指定的字段进行分配,并在每个桶内根据这个这个字段进行正序排序(无法改变排序规则)。简记:分且排序。
distribute by:按照指定的字段对数据进行分桶操作。
关注我!后续更新第三版!!
版权归原作者 三藏手持AK勇闯墨西哥 所有, 如有侵权,请联系我们删除。