大数据问答200问(有问必答)(二)

独家整理,超级全的问答!!

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:按照指定的字段对数据进行分桶操作。

关注我!后续更新第三版!!

HTML(HyperText Markup Language)是一种用于创建网页的标准标记语言,它本身并不能直接实现“有问必答”的效果,因为这是服务器端编程或JavaScript等前端技术的功能。但在网页上构建问答形式,你可以使用HTML结合其他技术如JavaScript来实现。下面是一个基本的HTML结构示例,展示了一个简单的文本输入框和按钮,用户可以提,然后提交到服务器处理: ```html <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <title>有问必答</title> </head> <body> <h2>请输入题:</h2> <form id="questionForm"> <input type="text" id="userQuestion" placeholder="请输入你的题..."> <button type="submit">提交</button> </form> <!-- 这部分通常由服务器响应或JavaScript异步处理 --> <div id="responseContainer"></div> <script> document.getElementById('questionForm').addEventListener('submit', function(event) { event.preventDefault(); // 阻止表单默认提交 var userQuestion = document.getElementById('userQuestion').value; // 实际的异步请求这里需要你自己实现,比如AJAX或fetch API fetch('/api/ask', { method: 'POST', body: JSON.stringify({ question: userQuestion }), headers: { 'Content-Type': 'application/json' } }) .then(response => response.text()) .then(data => { // 更新响应容器显示服务器返回的答案 document.getElementById('responseContainer').innerText = data.answer; }); }); </script> </body> </html> ``` 在这个例子中,当用户点击提交时,会发送一个POST请求到`/api/ask`,实际的服务器端逻辑需要后端技术去处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值