大数据面试题

大数据面试题

Hive 和 HSQL 掌握情况总结

Hive

  • 定义:Hive 是基于 Hadoop 构建的一套数据仓库分析系统。
  • 特点
    • 支持 SQL 查询方式来分析存储在 Hadoop 分布式文件系统中的数据。
    • 可将结构化的数据文件映射为一张数据库表,并提供完整的 SQL 查询功能。
    • 将 SQL 语句转换为 MapReduce 任务进行运行,通过自己的 SQL 去查询分析需要的内容。
    • 支持的 SQL 语句包括 DDL、DML 以及常见的聚合函数、连接查询、条件查询。
  • 适用场景
    • 不适合用于联机事务处理(OLTP)。
    • 不提供实时查询功能。
    • 最适合应用在基于大量不可变数据的批处理作业。

HSQL

  • 定义:HSQLDB 是一个嵌入式的关系型数据库管理系统,完全纯 Java 编写的。
  • 特点
    • 嵌入式特性:不需要外部数据库服务器。
    • 支持 SQL 标准(如 SQL92)。
    • 支持事务处理、视图、存储过程等。
    • 可以与 Java 应用程序集成方便地进行数据管理。
  • 适用场景
    • 需要嵌入式数据库的场景,如小型应用程序、移动应用等。
    • 对数据库性能要求不高,但需要 SQL 标准支持的场景。

MapReduce 掌握情况总结

基本概念

  • MapReduce:一种编程模型和计算框架,用于处理大规模数据集。它通过将任务分解为多个小任务(Map 和 Reduce)来并行处理。
  • Mapper:负责读取输入数据,并将其转换为键值对(key-value pairs),然后输出这些键值对。
  • Reducer:负责接收 Mapper 输出的键值对,根据键进行分组和聚合操作,最终生成输出结果。

工作流程

  1. Map 阶段
    • 读取输入数据,并将其转换为键值对(key-value pairs)。
    • 每个 Map 任务处理一部分数据,并将中间结果(key-value pairs)输出到本地文件系统。
  2. Shuffle 和 Sort
    • Hadoop 自动进行 Shuffle 过程,将所有具有相同键的 key-value 对分发到同一台机器上的 Reducer。
    • 在 Shuffle 阶段,还会对键值对进行排序(Sort)。
  3. Reduce 阶段
    • 每个 Reducer 读取从 Mapper 输出的键值对,并根据键进行分组和聚合操作。
    • 输出最终的结果。

关键组件

  • InputFormat:定义如何读取输入数据并将其转换为键值对。
  • OutputFormat:定义如何将结果写入输出文件。
  • Partitioner:负责决定哪些键值对发送到哪个 Reducer。
  • Combiner:在 Map 阶段进行局部聚合,减少 Shuffle 和 Sort 的数据量。

示例代码

// Mapper 类 public class WordCountMapper extends Mapper<LongWritable, Text, Text, IntWritable> { private final static IntWritable one = new IntWritable(1); private Text word = new Text(); public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { String line = value.toString(); StringTokenizer tokenizer = new StringTokenizer(line); while (tokenizer.hasMoreTokens()) { word.set(tokenizer.nextToken()); context.write(word, one); } } } // Reducer 类 public class WordCountReducer extends Reducer<Text, IntWritable, Text, IntWritable> { public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException { int sum = 0; for (IntWritable val : values) { sum += val.get(); } context.write(key, new IntWritable(sum)); } } 

通过以上总结,可以清楚地了解 Hive 和 HSQL 的基本概念和特点,以及 MapReduce 的工作流程和关键组件。

Read more

前端防范 XSS(跨站脚本攻击)

目录 一、防范措施 1.layui util  核心转义的特殊字符 示例 2.js-xss.js库 安装 1. Node.js 环境(npm/yarn) 2. 浏览器环境 核心 API 基础使用 1. 基础过滤(默认规则) 2. 自定义过滤规则 (1)允许特定标签 (2)允许特定属性 (3)自定义标签处理 (4)自定义属性处理 (5)转义特定字符 常见场景示例 1. 过滤用户输入的评论内容 2. 允许特定富文本标签(如富文本编辑器内容) 注意事项 更多配置 XSS(跨站脚本攻击)是一种常见的网络攻击手段,它允许攻击者将恶意脚本注入到其他用户的浏览器中。

详细教程:如何从前端查看调用接口、传参及返回结果(附带图片案例)

详细教程:如何从前端查看调用接口、传参及返回结果(附带图片案例)

目录 1. 打开浏览器开发者工具 2. 使用 Network 面板 3. 查看具体的API请求 a. Headers b. Payload c. Response d. Preview e. Timing 4. 实际操作步骤 5. 常见问题及解决方法 a. 无法看到API请求 b. 请求失败 c. 跨域问题(CORS) 作为一名后端工程师,理解前端如何调用接口、传递参数以及接收返回值是非常重要的。下面将详细介绍如何通过浏览器开发者工具(F12)查看和分析这些信息,并附带图片案例帮助你更好地理解。 1. 打开浏览器开发者工具 按下 F12 或右键点击页面选择“检查”可以打开浏览器的开发者工具。常用的浏览器如Chrome、Firefox等都内置了开发者工具。下面是我选择我的一篇文章,打开开发者工具进行演示。 2. 使用

Cursor+Codex隐藏技巧:用截图秒修前端Bug的保姆级教程(React/Chakra UI案例)

Cursor+Codex隐藏技巧:用截图秒修前端Bug的保姆级教程(React/Chakra UI案例) 前端开发中最令人头疼的莫过于那些难以定位的UI问题——元素错位、样式冲突、响应式失效...传统调试方式往往需要反复修改代码、刷新页面、检查元素。现在,通过Cursor编辑器集成的Codex功能,你可以直接用截图交互快速定位和修复这些问题。本文将带你从零开始,掌握这套革命性的调试工作流。 1. 环境准备与基础配置 在开始之前,确保你已经具备以下环境: * Cursor编辑器最新版(v2.5+) * Node.js 18.x及以上版本 * React 18项目(本文以Chakra UI 2.x为例) 首先在Cursor中安装Codex插件: 1. 点击左侧扩展图标 2. 搜索"Codex"并安装 3. 登录你的OpenAI账户(需要ChatGPT Plus订阅) 关键配置项: // 在项目根目录创建.