- 博客(102)
- 资源 (4)
- 收藏
- 关注
原创 尽量避免使用 IN 和 NOT IN ?
not exists 用left anti join 代替。exists用join。用什么代替 exists not exists , join。最严重的是数据容易出错。
2022-11-23 18:38:10
795
1
原创 spark中禁用广播变量失败的原因
sql中有not in,尝试改成not exists,可能产生BroadcastNestedLoopJoin,导致广播无法禁掉。禁止使用广播变量的配置参数 spark.sql.autoBroadcastJoinThreshold = -1。not in 改成not exists 等同于。
2022-11-23 13:39:23
1878
原创 hive 表支持中文设置
①在Hive元数据存储的Mysql数据库中,执行以下SQL:#修改字段注释字符集alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;#修改表注释字符集alter table TABLE_PARAMS modify column PARAM_VALUE varchar(20000) character set utf8;#修改分区参数,支持分区建用中文表示alter table PARTITI
2021-12-10 14:14:40
854
原创 spark的shuffle分类
spark2.0版本以后默认使用的是sortshuffle在该模式下,数据会先写入一个数据结构,reduceByKey写入Map,一边通过Map局部聚合,一边写入内存。Join算子写入ArrayList直接写入内存中。然后需要判断是否达到阈值,如果达到就会将内存数据结构的数据写入到磁盘,清空内存数据结构。在溢写磁盘前,先根据key进行排序,排序过后的数据,会分批写入到磁盘文件中。默认批次为10000条,数据会以每批一万条写入到磁盘文件。写入磁盘文件通过缓冲区溢写的方式,每次溢写都会产生一..
2021-12-07 16:02:49
358
原创 MySQL数据类型精讲
MySQL数据类型精讲# 本章的内容测试建议使用 MySQL5.7进行测试。#1.关于属性:character set nameSHOW VARIABLES LIKE 'character_%';#创建数据库时指名字符集CREATE DATABASE IF NOT EXISTS dbtest12 CHARACTER SET 'utf8';SHOW CREATE DATABASE dbtest12;#创建表的时候,指名表的字符集CREATE TABLE temp(id INT).
2021-12-05 00:06:51
96
原创 sql的数据处理之增删改的课后练习
数据处理之增删改的课后练习#练习1:#1. 创建数据库dbtest11CREATE DATABASE IF NOT EXISTS dbtest11 CHARACTER SET 'utf8';#2. 运行以下脚本创建表my_employeesUSE dbtest11;CREATE TABLE my_employees( id INT(10), first_name VARCHAR(10), last_name VARCHAR(10), userid VARCH...
2021-12-05 00:06:12
406
原创 sql,mysql数据库数据处理之增删改
数据处理之增删改#0. 储备工作USE atguigudb;CREATE TABLE IF NOT EXISTS emp1(id INT,`name` VARCHAR(15),hire_date DATE,salary DOUBLE(10,2));DESC emp1;SELECT *FROM emp1;#1. 添加数据#方式1:一条一条的添加数据# ① 没有指明添加的字段#正确的INSERT INTO emp1VALUES (1,'Tom','2000-12.
2021-12-05 00:05:42
135
原创 sql的创建和管理表的 练习
创建和管理表的 练习#练习1:#1. 创建数据库test01_office,指明字符集为utf8。并在此数据库下执行下述操作CREATE DATABASE IF NOT EXISTS test01_office CHARACTER SET 'utf8';USE test01_office;#2. 创建表dept01/*字段 类型id INT(7)NAME VARCHAR(25)*/CREATE TABLE IF NOT EXISTS dept0...
2021-12-05 00:05:06
454
原创 mysql,sql 创建和管理表
创建和管理表SELECT *FROM `order`;#1. 创建和管理数据库#1.1 如何创建数据库#方式1:CREATE DATABASE mytest1; # 创建的此数据库使用的是默认的字符集#查看创建数据库的结构SHOW CREATE DATABASE mytest1;#方式2:显式了指名了要创建的数据库的字符集CREATE DATABASE mytest2 CHARACTER SET 'gbk';#SHOW CREATE DATABASE mytest2...
2021-12-05 00:04:34
200
原创 sql,mysql子查询的练习学习
子查询的课后练习#1.查询和Zlotkey相同部门的员工姓名和工资SELECT last_name,salaryFROM employeesWHERE department_id IN ( SELECT department_id FROM employees WHERE last_name = 'Zlotkey' );#2.查询工资比公司平均工资高的员工的员工号,姓名和工资。SELECT ...
2021-12-05 00:04:01
155
原创 sql 子查询详细介绍全解
子查询#1. 由一个具体的需求,引入子查询#需求:谁的工资比Abel的高?#方式1:SELECT salaryFROM employeesWHERE last_name = 'Abel';SELECT last_name,salaryFROM employeesWHERE salary > 11000;#方式2:自连接SELECT e2.last_name,e2.salaryFROM employees e1,employees e2WHERE e2.`salary`.
2021-12-05 00:03:13
1269
转载 sql的 聚合函数的练习从入门到精通
聚合函数的 练习#1.where子句可否使用组函数进行过滤? No!#2.查询公司员工工资的最大值,最小值,平均值,总和SELECT MAX(salary) max_sal ,MIN(salary) mim_sal,AVG(salary) avg_sal,SUM(salary) sum_salFROM employees;#3.查询各job_id的员工工资的最大值,最小值,平均值,总和SELECT job_id,MAX(salary),MIN(salary),AVG(salary),..
2021-12-05 00:02:35
295
原创 sql的 聚合函数汇总
聚合函数#1. 常见的几个聚合函数#1.1 AVG / SUM :只适用于数值类型的字段(或变量)SELECT AVG(salary),SUM(salary),AVG(salary) * 107FROM employees;#如下的操作没有意义SELECT SUM(last_name),AVG(last_name),SUM(hire_date)FROM employees;#1.2 MAX / MIN :适用于数值类型、字符串类型、日期时间类型的字段(或变量)SELECT MA.
2021-12-05 00:01:38
1499
原创 sql 单行函数的 练习
单行函数的 练习# 1.显示系统时间(注:日期+时间)SELECT NOW(),SYSDATE(),CURRENT_TIMESTAMP(),LOCALTIME(),LOCALTIMESTAMP() #大家只需要掌握一个函数就可以了FROM DUAL;# 2.查询员工号,姓名,工资,以及工资提高百分之20%后的结果(new salary)SELECT employee_id,last_name,salary,salary * 1.2 "new salary"FROM employees;.
2021-12-05 00:00:55
515
原创 slq的 单行函数汇总介绍
单行函数#1.数值函数#基本的操作SELECT ABS(-123),ABS(32),SIGN(-23),SIGN(43),PI(),CEIL(32.32),CEILING(-43.23),FLOOR(32.32),FLOOR(-43.23),MOD(12,5),12 MOD 5,12 % 5FROM DUAL;#取随机数SELECT RAND(),RAND(),RAND(10),RAND(10),RAND(-1),RAND(-1)FROM DUAL;#四舍五入,截断操作SELEC.
2021-12-04 23:58:56
168
原创 sql 多表查询的经典练习
多表查询的课后练习# 1.显示所有员工的姓名,部门号和部门名称。SELECT e.last_name,e.department_id,d.department_nameFROM employees e LEFT OUTER JOIN departments dON e.`department_id` = d.`department_id`;# 2.查询90号部门员工的job_id和90号部门的location_idSELECT e.job_id,d.location_idFROM em.
2021-12-04 23:58:11
655
原创 mysql的多表查询
多表查询/*SELECT ...,....,....FROM ....WHERE .... AND / OR / NOT....ORDER BY .... (ASC/DESC),....,...LIMIT ...,...*/#1. 熟悉常见的几个表DESC employees;DESC departments;DESC locations;#查询员工名为'Abel'的人在哪个城市工作?SELECT *FROM employeesWHERE last_name = '.
2021-12-04 23:57:22
341
原创 sql的排序与分页的课后练习经典
排序与分页的课后练习#1. 查询员工的姓名和部门号和年薪,按年薪降序,按姓名升序显示SELECT last_name,department_id,salary * 12 annual_salaryFROM employeesORDER BY annual_salary DESC,last_name ASC;#2. 选择工资不在 8000 到 17000 的员工的姓名和工资,按工资降序,显示第21到40位置的数据SELECT last_name,salaryFROM employ...
2021-12-04 23:56:46
254
原创 sql的 排序与分页
排序与分页#1. 排序# 如果没有使用排序操作,默认情况下查询返回的数据是按照添加数据的顺序显示的。SELECT * FROM employees;# 1.1 基本使用# 使用 ORDER BY 对查询到的数据进行排序操作。# 升序:ASC (ascend)# 降序:DESC (descend)# 练习:按照salary从高到低的顺序显示员工信息SELECT employee_id,last_name,salaryFROM employeesORDER BY salary .
2021-12-04 23:55:58
1354
原创 sql运算符大汇总
运算符#1. 算术运算符: + - * / div % modSELECT 100, 100 + 0, 100 - 0, 100 + 50, 100 + 50 * 30, 100 + 35.5, 100 - 35.5FROM DUAL;# 在SQL中,+没有连接的作用,就表示加法运算。此时,会将字符串转换为数值(隐式转换)SELECT 100 + '1' # 在Java语言中,结果是:1001。FROM DUAL;SELECT 100 + 'a' #此时将'a'看做0处理...
2021-12-04 20:57:26
947
原创 sql SELECT语句的练习
SELECT语句的练习# 1.查询员工12个月的工资总和,并起别名为ANNUAL SALARY#理解1:计算12月的基本工资SELECT employee_id,last_name,salary * 12 "ANNUAL SALARY"FROM employees;#理解2:计算12月的基本工资和奖金SELECT employee_id,last_name,salary * 12 * (1 + IFNULL(commission_pct,0)) "ANNUAL SALARY"FROM e.
2021-12-04 20:55:10
255
原创 Hive的使用启动注意事项
第一步 先确定hive是直接连接mysql去操作元数据 2还是 通过hive本身自带的metastore服务去连接mysql再去操作元数据 第二种方法的好处是能实现hive的分布式让其他节点上的hive通过metastore去操作其他机器上的mysql 这个想明白了,再去配置自己的链接方式Hive使用总结Hive的 元数据放到mysql上, 数据放到hdfs上Hive 有两种方式可以链接元数据通过直连mysql 操作元数据 通过metastore服务链接hive的元数据...
2021-12-04 11:07:49
119
大数据技术之Hive全方位解析
2021-10-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人