0%

本文主要包括:

  • Kafka简介(后补)
  • Kafka可以干什么?(后补)
  • Kafka安装与启动
  • Kafka常用操作
    阅读全文 »

本文主要包括:

  • 什么是Redis
  • Redis有哪些优缺点
  • 为什么要用 Redis 而不用 map/guava 做缓存?
  • Redis为什么这么快
  • Redis的应用场景
  • Redis持久化
  • Redis踩的坑

概述

什么是Redis

Redis(Remote Dictionary Server) 是一个使用 C 语言编写的,开源的(BSD许可)高性能非关系型(NoSQL)的键值对数据库。
Redis 可以存储键和五种不同类型的值之间的映射。键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有序集合。

数据类型

Redis主要有5种数据类型,包括String,List,Set,Zset,Hash,满足大部分的使用要求
Redis数据类型

以上可以参考Redis 常见面试题

Redis踩的坑

最近在测试任务的时候,把reids的key和value写反了,导致生产环境的reids凭空多了200多万脏数据,在网上查了一个批量删除的命令,直接在生产环境执行了,导致redis宕机、OOM了

所以,以后再操作生产环境数据库,特别是删除、大规模数据遍历、消耗性能比较大的情况下,在网上查的命令最好还是在测试环境测试一下再用,多么痛的领悟

这里记录一下两个命令:

错误的命令

在数据量较大的情况下,千万别用类似keys *的操作,keys会把reids里所有的key一口气都遍历一遍,消耗性能奇高。。

redis-cli -h ${ip} -p 6379 -n 4 -a '${pws}' keys '0^!*' |xargs redis-cli -h ${ip} -p 6379 -n 4 -a '${psw}' DEL

正确的命令:

在生产环境下,尽量使用scan

redis-cli -h ${ip} -p 6379 -n 4 -a '${psw}' --scan --pattern "0^!*" | xargs -L 1000 redis-cli -h ${ip} -p 6379 -n 4 -a '${psw}' del

具体可以参考:Redis 千万不要乱用KEYS命令,不然会挨打的

collection表名包含特殊字符

当collection表名包含特殊字符时,mongo sehll在find()等操作时会报错,这时候,可以使用getCollection函数,把表明以字符串的形式传进函数内
例如:

db.getCollection('all-aa-bb_cc_dd_20200129').find()

使用**args简化输入代码

test(kwargs) 的作用则是把字典 kwargs 变成关键字参数传递。比如,如果 kwargs 等于 {‘a’:1,’b’:2,’c’:3} ,那这个代码就等价于 test(a=1,b=2,c=3) 。

python拼接字符串的方式

常用的就是+,还有%s,%d等占位符的方式,还有format()拼接方式
这里记录一种比较方便的方式,f-string方式

name = 'world'
myname = 'python_cat'
words = f'Hello {name}. My name is {myname}.'
print(words)

本文主要包括:

  • spark-sql如何使用hive的udf
  • spark-sql解决小文件问题
  • spark-sql cli 输出日志级别为warn
  • sparksql读取hive数据报错
    阅读全文 »

背景

使用sqoop从mysql导数据到hive,从本地服务器是可以访问mysql的(本地服务器是hadoop集群的一个datanode),但是sqoop导数据的时候依然连接不上mysql
报错如下:
sqoop-import-error
从报错可以看出,是数据库连接失败,很常见的问题,但是从本地是可以直连mysql的。

因为sqoop导数据的时候,默认会启动4个map task,这4个map task会随机启动在不动的datanode上,所以在想,是不是因为其他节点没有权限访问mysql导致。
但是需要先搞清楚,sqoop在抽取数据的时候,是不是会把4个map task随机启动在不动的datanode上

在官网上有如下内容:
sqoop-official-website
虽然讲的不是我们要找到,但是可以判断出,sqoop导数据就是会把maptask随机启动在不通的datanode上。
因此,sqoop在导数据到mysql的时候,要确认,hadoop集群的每个节点都要有mysql的读权限

常规方法

  1. 确认键盘的电源接通。
  2. 同时按下「Ctrl」+「Alt」+「Fn」执行装置切换模式。配对LED灯(蓝)和低电量显示LED灯(红)约同时亮10秒左右。
  3. 想移除已登录的装置时,请从「蓝牙装置登录/切换键」①~④按下任一键

新添加的电脑

如果是新添加的电脑,会在首次配置的时候输入验证码,这时候,需要快速在键盘上按下验证码,输入后就可正常连接了
注意,如果失败的次数过多,那么就会提示输入PIN码

输入PIN码的方式(亲测可用)

  1. 当你要连接蓝牙键盘的时电脑端出现输入PIN
  2. 此时先在本机键盘上输入任意六位PIN
  3. 接下来电脑开始验证时,迅速在你的蓝牙设备上输入刚才的六位PIN,然后回车,成功!

想要清楚以前绑定的设备(亲测可用)

如果被绑定的①~④有某个想重新绑定新的电脑,可以按如下步骤:

  1. 同时按下crtl+alt+Fn,红蓝灯闪烁4秒。
  2. 键盘背面的清除键,拿笔点住2秒。
  3. 再按数字键1-4的任意一个想清除配置的数字。
  4. 然后从想连接的设备蓝牙列表中选择键盘,点击连接。
  5. 该设备屏幕出现4或6位的配对码。在键盘上依次按下配对码,回车。OK,该设备与filco蓝牙键盘连接成功。

这里只是为了记录一下,省的下次还要继续查度娘