参考了https://www.cnblogs.com/a5idc/p/13752839.html
如何知道你使用的是哪个init系统?你可以使用这个命令来知道与PID 1(系统上运行的第一个进程)相关联的进程名称。ps -p 1 -o comm=
然后就可以知道第一个运行的脚本是什么了,然后在里面加料就行。
摘要:介绍Redisson中分布式对象和集合的基础操作,包括对象桶、集合、列表和散列。
综述 测试环境为:Spring Boot版本 2.5.x 和 Redisson 单机。关于如何中Spring Boot项目集成Redisson,请戳《Spring Boot 整合Redisson配置篇》。
RedissonClient是线程安全的,由于其内部是通过Netty通信,所以除了同步执行方式,也支持异步执行。
Redisson 工具类 首先提供一个Redisson 工具类,方便下文用于演示。
import org.redisson.api.*; import org.redisson.client.codec.StringCodec; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.Map; import java.util.concurrent.TimeUnit; import java.util.function.BiConsumer; @Component public class RedisUtils { private RedisUtils() { } /** * 默认缓存时间 */ private static final Long DEFAULT_EXPIRED = 32000L; /** * 自动装配redisson client对象 */ @Resource private RedissonClient redissonClient; /** * 用于操作key * @return RKeys 对象 */ public RKeys getKeys() { return redissonClient.
持久化 scm.cache()
总共有多少学生?map(), distinct(), count()
开设了多少门课程?
每个学生选修了多少门课?map(), countByKey()
每门课程有多少个学生选?map(), countByValue()
多少个100分?
Tom选修了几门课?每门课多少分?filter(), map() RDD
Tom选修了几门课?每门课多少分?map(),lookup() list
Tom的成绩按分数大小排序。filter(), map(), sortBy()
Tom的平均分。map(),lookup(),mean()
生成(姓名课程,分数)RDD,观察keys(),values()
每个分数+20平时分。分别用mapValues(func)和 map(func)实现。并查看不及格人数的变化。
变化前不及格人数
mapValues(func)
map(func)
求每门课的选修人数及平均分
lookup(),np.mean()实现
reduceByKey()和collectAsMap()实现
combineByKey(),map(),round()实现,确到2位小数
多个考勤文件,签到日期汇总,出勤次数统计
为了更好的让linux虚拟机和windows交互,我们可以安装一个包
(env) root@zhang-virtual-machine:/home/zhang/data/my_web_project# apt install lrzszReading package lists... DoneBuilding dependency tree Reading state information... DoneSuggested packages: minicomThe following NEW packages will be installed: lrzsz
安装完之后直接拖来托去就好了
(env) root@zhang-virtual-machine:/home/zhang/data/my_web_project# rz -Erz waiting to receive.(env) root@zhang-virtual-machine:/home/zhang/data/my_web_project# (env) root@zhang-virtual-machine:/home/zhang/data/my_web_project# lsenv(env) root@zhang-virtual-machine:/home/zhang/data/my_web_project# rz -Erz waiting to receive.(env) root@zhang-virtual-machine:/home/zhang/data/my_web_project# lsdemo.zip env(env) root@zhang-virtual-machine:/home/zhang/data/my_web_project#
使用dockerfile自作自己的mysql容器镜像,便于快速创建mysql容器
创建dockerfile文件mymysql.yaml 内容如下: ### dockerfile 自定义mysql容器镜像 FROM mysql:latest #使用官方mysql镜像最新版 RUN echo ### >> /etc/mysql/my.cnf RUN echo max_connections = 1050 >> /etc/mysql/my.cnf RUN echo mysqlx_max_connections = 1000 >> /etc/mysql/my.cnf #最大连接数 RUN echo wait_timeout=86400 >> /etc/mysql/my.cnf RUN echo interactive_timeout=86400 >> /etc/mysql/my.cnf #空闲断开时长,秒 RUN echo innodb_read_io_threads=4 >> /etc/mysql/my.cnf RUN echo innodb_write_io_threads=4 >> /etc/mysql/my.cnf #设置使用多核cpu,默认使用4核,根据cpu核心数设置 构建 docker build -f ./mymysql.yaml -t mymysql:1 . #-f指定dockerfile文件 #-t指定新的镜像名称和版本号 #注意末尾有个 “.” docker images #查看镜像,当有mymysql:1镜像,说明构建成功 使用新镜像创建容器 docker run -itd --name mymysql -e MYSQL_ROOT_PASSWORD=123456 mymysql:1
1、需要用到的依赖库如下:
EntityFramework.6.4.4
EntityFramework.SqlServerCompact.6.4.4
Microsoft.SqlServer.Compact.4.0.8876.1
2、app.config需要的配置:
<configSections> <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> < section name=entityFramework type=System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 requirePermission=false /> </configSections> <!-- Add the attribute 'codeConfigurationType' to the 'entityFramework' root element to overwrite the global DbConfiguration --> <entityFramework> <providers> <provider invariantName=System.Data.SqlClient type=System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer /> <provider invariantName=System.Data.SqlServerCe.4.0 type=System.Data.Entity.SqlServerCompact.SqlCeProviderServices, EntityFramework.SqlServerCompact /> </providers> </entityFramework> <system.data> <DbProviderFactories> <remove invariant=System.Data.SqlServerCe.4.0 /> <add name=Microsoft SQL Server Compact Data Provider 4.
运行该脚本前需要把安装所需要的压缩包放到/opt目录下
#!/bin/bash #关闭防火墙 systemctl stop firewalld setenforce 0 #挂载yum mount /dev/sr0 /mnt &>/dev/null ###############nginx安装与配置######## yum -y install pcre-devel zlib-devel gcc gcc-c++ make &>/dev/null useradd -M -s /sbin/nologin nginx cd /opt tar zxvf nginx-1.12.2.tar.gz -C /opt/ &>/dev/null cd nginx-1.12.2/ ./configure \ --prefix=/usr/local/nginx \ --user=nginx \ --group=nginx \ --with-http_stub_status_module &>/dev/null make -j 2 &>/dev/null make install &>/dev/null ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ tee /lib/systemd/system/nginx.service <<EOF [Unit] Description=nginx After=network.target [Service] Type=forking PIDFile=/usr/local/nginx/logs/nginx.pid ExecStart=/usr/local/nginx/sbin/nginx ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.
1、虚拟机安装 #设置主机名hostnamectl set-hostname singlekb17#查看主机hostname#配置ip地址vi /etc/sysconfig/network-scripts/ifcfg-ens33BOOTPROTO=staticIPADDR=192.168.6.130NETMASK=255.255.255.0GATEWAY=192.168.6.2DNS1=8.8.8.8DNS2=114.114.114.114#关闭并禁用防火墙systemctl stop firewalldsystemctl disable firewalld#查看防火墙状态systemctl status firewalld#关闭并禁用NetworkManangersystemctl stop NetworkManagersystemctl disable NetworkManagersystemctl status NetworkManager#重启网络服务systemctl restart network#查看ip地址ip addr#ping 内外网#外网ping www.baidu.com#内网ping 192.168.6.130#linux主机名和ip映射vi /etc/hosts192.168.6.130 singlekb17#windows主机和ip映射C:\Windows\System32\drivers\etc\hosts192.168.6.130 singlekb17#简单优化vi /etc/selinux/configSELINUX=disableiptables -Fsetenforce 0vi /etc/ssh/sshd_configUseDNS no#重启ssh服务systemctl restart sshd 二、环境安装 #为节约系统资源,选择最小化安装 minimal install#zai iso镜像中保留所有未安装资源#选择制作本地仓库#绿色安装 解压配置即可使用#rpm 可执行文件安装#yum 系统资源库(iso,yum源)#make 手工编译#linux系统目录/bin #命令集/lib #资源库/lib64 #资源库/etc #系统配置信息/home #root之外其他用户默认根目录/root #root超级用户的根目录/dev #设备文件目录/mnt #挂载/opt #可选安装(绿色安装)/usr #rpm#选择制作本地仓库cd /etc/yum.repos.d/mkdir bakmv *.repo bak/mount /dev/sr0 /mnt/vi base.repo---------------[local]name=localbaseurl=file:///mntgpgcheck=0enabled=1---------------yum -y install net-toolsyum -y install wget #异常执行 rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7yum -y install lrzszyum -y install vim #配置华为wget -o CentOS-Base.
1.请分析SparkSQL出现的原因,并简述SparkSQL的起源与发展。
因为关系数据库已经很流行,而且关系数据库在大数据时代已经不能满足要求。首先,用户需要从不同数据源执行各种操作,包括结构化、半结构化和非结构化数据。其次,用户需要执行高级分析,比如机器学习和图像处理。在实际大数据应用中,经常需要融合关系查询和复杂分析算法(比如机器学习或图像处理),但是,缺少这样的系统。
Spark SQL填补了这个鸿沟:首先,可以提供DataFrame API,可以对内部和外部各种数据源执行各种关系型操作。其次,可以支持大数据中的大量数据源和数据分析算法Spark SQL可以融合:传统关系数据库的结构化数据管理能力和机器学习算法的数据处理能力。
2.简述RDD和DataFrame的联系与区别?
区别:RDD是分布式的java对象的集合,但是对象内部结构对于RDD而言却是不可知的。DataFrame是一种以RDD为基础的分布式数据集,提供了详细的结构信息,相当于关系数据库中的一张表。
联系:1.都是spark平台下的分布式弹性数据集,为处理超大型数据提供便利。2、都有惰性机制,在进行创建、转换,如map方法时,不会立即执行,只有在遇到Action才会运算。3.都会根据spark的内存情况自动缓存运算,这样即使数据量很大,也不用担心会内存溢出4、三者都有partition的概念。5.三者有许多共同的函数,如filter,排序等。
3.DataFrame的创建
spark.read.text(url)
spark.read.json(url)
spark.read.format(text).load(people.txt)
spark.read.format(json).load(people.json)
4. PySpark-DataFrame各种常用操作基于df的操作:打印数据 df.show()默认打印前20条数据
打印概要 df.printSchema()
查询总行数 df.count()df.head(3) #list类型,list中每个元素是Row类输出全部行 df.collect() #list类型,list中每个元素是Row类查询概况 df.describe().show()取列 df[‘name’], df.name, df[1] 基于sparksql的操作:
创建临时表虚拟表 df.registerTempTable('people')spark.sql执行SQL语句 spark.sql('select name from people').show() 5. Pyspark中DataFrame与pandas中DataFrame
分别从文件创建DataFrame
比较两者的异同
pandas中DataFrame转换为Pyspark中DataFrame
Pyspark中DataFrame转换为pandas中DataFrame
6.从RDD转换得到DataFrame
6.1 利用反射机制推断RDD模式
创建RDD sc.textFile(url).map(),读文件,分割数据项
每个RDD元素转换成 Row
由Row-RDD转换到DataFrame
数据库连接池简介 数据库连接池是个容器,负责分配、管理数据库连接
它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个
释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏
好处:
资源重用 提升系统响应速度 避免数据库连接遗漏 数据库连接池实现 标准接口:DataSource
官方(sun)提供的数据库连接池标准接口,由第三方组织实现此接口 功能:获取连接 Connection getconnnection(); 使用步骤: 导入Jar包 百度搜索druid下载Jar包
定义配置文件 获取数据库连接、获取用户名密码,数据库的url地址,以及参数信息,配置文件定义好以后,需要把它粘贴到项目地址src目录里面,配置信息如下:
driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql:///db1?useSSL=false&useServerPrepstmts=true username=root password=1234 # 初始化连接数量 initialsize=5 # 最大连接数 maxActive=10 # 最大等待时间 maxwait=3000 加载配置文件 创建properties对象 使用该对象的load方法,new一个字节文件输入流对象给定一个写好的配置文件的路径 properties prop = new properties(); prop.load(new Fileinputstream(src/druid.properties)); 获取数据库连接池对象 使用类DruidDataSourceFactory的createdatasource方法来获取数据库连接池对象,并把刚才创建的properties对象传递给createdatasource方法
Datasource datasource = DruidDataSourceFactory.