Hadoop生态圈-Azkaban部署实战
Hadoop生态圈-Azkaban部署实战
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.Azkaban部署流程
1>.上传azkaban程序并创建解压目录
- [yinzhengjie@s101 data]$ pwd
- /home/yinzhengjie/data
- [yinzhengjie@s101 data]$ ll
- total
- -rw-r--r-- yinzhengjie yinzhengjie Apr : azkaban-exec-server-3.46..tar.gz
- -rw-r--r-- yinzhengjie yinzhengjie Apr : azkaban-hadoop-security-plugin-3.46..tar.gz
- -rw-r--r-- yinzhengjie yinzhengjie Apr : azkaban-plugins-master.zip
- -rw-r--r-- yinzhengjie yinzhengjie Apr : azkaban-solo-server-3.46..tar.gz
- -rw-r--r-- yinzhengjie yinzhengjie Apr : azkaban-web-server-3.46..tar.gz
- -rw-r--r-- yinzhengjie yinzhengjie Nov create-all-sql-3.46..sql
- [yinzhengjie@s101 data]$
- [yinzhengjie@s101 data]$ mkdir /soft/azkaban
- [yinzhengjie@s101 data]$
2>.分别解压文件到/soft/azkaban中
- [yinzhengjie@s101 data]$ tar -xzf azkaban-exec-server-3.46..tar.gz -C /soft/azkaban/
- [yinzhengjie@s101 data]$ tar -xzf azkaban-web-server-3.46..tar.gz -C /soft/azkaban/
- [yinzhengjie@s101 data]$
3>.进入到mysql命令行并创建数据库
- [yinzhengjie@s101 data]$ mysql -uroot -pyinzhengjie
- Warning: Using a password on the command line interface can be insecure.
- Welcome to the MySQL monitor. Commands end with ; or \g.
- Your MySQL connection id is
- Server version: 5.6. MySQL Community Server (GPL)
- Copyright (c) , , Oracle and/or its affiliates. All rights reserved.
- Oracle is a registered trademark of Oracle Corporation and/or its
- affiliates. Other names may be trademarks of their respective
- owners.
- Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
- mysql> create database yinzhengjie_azkaban;
- Query OK, row affected (0.00 sec)
- mysql> use yinzhengjie_azkaban;
- Database changed
- mysql> source /home/yinzhengjie/data/create-all-sql-3.46..sql
- Query OK, rows affected (0.03 sec)
- Query OK, rows affected (0.00 sec)
- Query OK, rows affected (0.01 sec)
- Query OK, rows affected (0.00 sec)
- Records: Duplicates: Warnings:
- Query OK, rows affected (0.01 sec)
- Records: Duplicates: Warnings:
- Query OK, rows affected (0.00 sec)
- Records: Duplicates: Warnings:
- Query OK, rows affected (0.01 sec)
- Records: Duplicates: Warnings:
- Query OK, rows affected (0.06 sec)
- Records: Duplicates: Warnings:
- Query OK, rows affected (0.13 sec)
- Records: Duplicates: Warnings:
- Query OK, rows affected (0.22 sec)
- Query OK, rows affected (0.15 sec)
- Records: Duplicates: Warnings:
- Query OK, rows affected (0.18 sec)
- Query OK, rows affected (0.13 sec)
- Records: Duplicates: Warnings:
- Query OK, rows affected (0.17 sec)
- Records: Duplicates: Warnings:
- Query OK, rows affected (0.03 sec)
- Records: Duplicates: Warnings:
- Query OK, rows affected (0.06 sec)
- Query OK, rows affected (0.33 sec)
- Records: Duplicates: Warnings:
- Query OK, rows affected (0.01 sec)
- Query OK, rows affected (0.01 sec)
- Records: Duplicates: Warnings:
- Query OK, rows affected (0.22 sec)
- Query OK, rows affected (0.12 sec)
- Records: Duplicates: Warnings:
- Query OK, rows affected (0.09 sec)
- Query OK, rows affected (0.10 sec)
- Records: Duplicates: Warnings:
- Query OK, rows affected (0.17 sec)
- Query OK, rows affected (0.18 sec)
- Query OK, rows affected (0.14 sec)
- Records: Duplicates: Warnings:
- Query OK, rows affected (0.12 sec)
- Query OK, rows affected (0.04 sec)
- Records: Duplicates: Warnings:
- Query OK, rows affected (0.08 sec)
- Query OK, rows affected (0.17 sec)
- Records: Duplicates: Warnings:
- Query OK, rows affected (0.16 sec)
- Query OK, rows affected (0.13 sec)
- Records: Duplicates: Warnings:
- Query OK, rows affected (0.13 sec)
- Query OK, rows affected (0.10 sec)
- Records: Duplicates: Warnings:
- Query OK, rows affected (0.04 sec)
- Query OK, rows affected, warning (0.00 sec)
- Query OK, rows affected, warning (0.00 sec)
- Query OK, rows affected, warning (0.00 sec)
- Query OK, rows affected, warning (0.00 sec)
- Query OK, rows affected, warning (0.00 sec)
- Query OK, rows affected, warning (0.00 sec)
- Query OK, rows affected, warning (0.00 sec)
- Query OK, rows affected, warning (0.00 sec)
- Query OK, rows affected, warning (0.00 sec)
- Query OK, rows affected, warning (0.00 sec)
- Query OK, rows affected, warning (0.00 sec)
- Query OK, rows affected (0.19 sec)
- Query OK, rows affected (0.23 sec)
- Query OK, rows affected (0.08 sec)
- Query OK, rows affected (0.13 sec)
- Query OK, rows affected (0.01 sec)
- Query OK, rows affected (0.06 sec)
- Query OK, rows affected (0.19 sec)
- Query OK, rows affected (0.27 sec)
- Query OK, rows affected (0.18 sec)
- Query OK, rows affected (0.16 sec)
- Query OK, rows affected (0.17 sec)
- Query OK, rows affected (0.00 sec)
- Query OK, rows affected (0.19 sec)
- mysql> exit;
- Bye
- [yinzhengjie@s101 data]$
4>.创建SSL配置(完成下述工作后,将在当前目录生成 keystore 证书文件,需要输出初始密码,选择国家,在输入确认字母y其他按回车即可)
- [yinzhengjie@s101 data]$ keytool -keystore keystore -alias jetty -genkey -keyalg RSA
- Enter keystore password:
- Re-enter new password:
- What is your first and last name?
- [Unknown]:
- What is the name of your organizational unit?
- [Unknown]:
- What is the name of your organization?
- [Unknown]:
- What is the name of your City or Locality?
- [Unknown]:
- What is the name of your State or Province?
- [Unknown]:
- What is the two-letter country code for this unit?
- [Unknown]: CN
- Is CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=CN correct?
- [no]: y
- Enter key password for <jetty>
- (RETURN if same as keystore password):
- [yinzhengjie@s101 data]$
- [yinzhengjie@s101 data]$ ll | grep keystore
- -rw-rw-r-- yinzhengjie yinzhengjie Jun : keystore
- [yinzhengjie@s101 data]$
5>.将keystore文件拷贝到web文件夹下
- [yinzhengjie@s101 data]$ ll | grep keystore
- -rw-rw-r-- yinzhengjie yinzhengjie Jun : keystore
- [yinzhengjie@s101 data]$ cp keystore /soft/azkaban/azkaban-web-server-3.46./
- [yinzhengjie@s101 data]$
6>.编辑配置文件【azkaban.properties】
- [yinzhengjie@s101 data]$ more /soft/azkaban/azkaban-web-server-3.46./conf/azkaban.properties
- #Azkaban Personalization Settings
- #服务器UI名称,用于服务器上方显示的名字
- azkaban.name=yinzhengjie
- #描述
- azkaban.label=My Local Azkaban
- #UI颜色
- azkaban.color=#FF3601
- #指定首页路径
- azkaban.default.servlet.path=/index
- #默认根web目录
- web.resource.dir=/soft/azkaban/azkaban-web-server-3.46./web/
- #默认时区,已改为亚洲/上海 默认为美国
- default.timezone.id=Asia/Shanghai
- #Azkaban UserManager class
- #用户权限管理默认类
- user.manager.class=azkaban.user.XmlUserManager
- #用户配置,具体配置参加下文
- user.manager.xml.file=/soft/azkaban/azkaban-web-server-3.46./conf/azkaban-users.xml
- #Loader for projects
- # global配置文件所在位置
- executor.global.properties=/soft/azkaban/azkaban-web-server-3.46./conf/global.properties
- azkaban.project.dir=projects
- #数据库类型
- database.type=mysql
- #端口号
- mysql.port=
- #数据库连接IP
- mysql.host=s101
- #数据库实例名
- mysql.database=azkaban
- #数据库用户名
- mysql.user=root
- #数据库密码
- mysql.password=yinzhengjie
- #最大连接数
- mysql.numconnections=
- # Velocity dev mode
- #关闭快速开发模式
- velocity.dev.mode=false
- # Jetty服务器属性.
- #最大线程数
- jetty.maxThreads=
- #Jetty SSL端口
- jetty.ssl.port=
- #Jetty端口
- jetty.port=
- #SSL文件名
- jetty.keystore=keystore
- #SSL文件密码
- jetty.password=yinzhengjie
- #Jetty主密码 与 keystore文件相同
- jetty.keypassword=yinzhengjie
- #SSL文件名
- jetty.truststore=keystore
- # SSL文件密码
- jetty.trustpassword=yinzhengjie
- # 执行服务器属性
- #执行服务器端口
- executor.port=
- # 邮件设置
- #发送邮箱
- mail.sender=xxxxxxxx@.com
- #发送邮箱smtp地址
- mail.host=smtp..com
- #发送邮件时显示的名称
- mail.user=xxxxxxxx
- #邮箱密码
- mail.password=**********
- #任务失败时发送邮件的地址
- job.failure.email=xxxxxxxx@.com
- #任务成功时发送邮件的地址
- job.success.email=xxxxxxxx@.com
- lockdown.create.projects=false
- #缓存目录
- cache.directory=cache
- # JMX stats
- jetty.connector.stats=true
- executor.connector.stats=true
- # Azkaban JobTypes 插件配置
- azkaban.jobtype.plugin.dir=plugins/jobtypes
- [yinzhengjie@s101 data]$
以上代码只是对该配置文件的一个详细说明,不建议在这个配置文件中写中文!在实际配置中,需要将这个文件拷贝两份,分别放在web和exec目录中,实际使用配置如下:
- [yinzhengjie@s101 ~]$ more /soft/azkaban/azkaban-web-server-3.46./conf/azkaban.properties
- # Azkaban Personalization Settings
- azkaban.name=yinzhengjie
- azkaban.label=My Local Azkaban
- azkaban.color=#FF3601
- azkaban.default.servlet.path=/index
- web.resource.dir=/soft/azkaban/azkaban-web-server-3.46./web/
- default.timezone.id=Asia/Shanghai
- # Azkaban UserManager class
- user.manager.class=azkaban.user.XmlUserManager
- user.manager.xml.file=/soft/azkaban/azkaban-web-server-3.46./conf/azkaban-users.xml
- # Loader for projects
- executor.global.properties=/soft/azkaban/azkaban-web-server-3.46./conf/global.properties
- azkaban.project.dir=projects
- database.type=mysql
- mysql.port=
- mysql.host=s101
- mysql.database=yinzhengjie_azkaban
- mysql.user=root
- mysql.password=yinzhengjie
- mysql.numconnections=
- # Velocity dev mode
- velocity.dev.mode=false
- # Azkaban Jetty server properties.
- jetty.use.ssl=false
- jetty.maxThreads=
- jetty.port=
- # Azkaban Executor settings
- executor.port=
- # mail settings
- mail.sender=
- mail.host=
- # User facing web server configurations used to construct the user facing server URLs. They are useful when there is a reverse proxy between Azkaban web servers and users.
- # enduser -> myazkabanhost: -> proxy -> localhost:
- # when this parameters set then these parameters are used to generate email links.
- # if these parameters are not set then jetty.hostname, and jetty.port(if ssl configured jetty.ssl.port) are used.
- # azkaban.webserver.external_hostname=myazkabanhost.com
- # azkaban.webserver.external_ssl_port=
- # azkaban.webserver.external_port=
- job.failure.email=
- job.success.email=
- lockdown.create.projects=false
- cache.directory=cache
- # JMX stats
- jetty.connector.stats=true
- executor.connector.stats=true
- # Azkaban plugin settings
- azkaban.jobtype.plugin.dir=plugins/jobtypes
- [yinzhengjie@s101 ~]$
[yinzhengjie@s101 ~]$ more /soft/azkaban/azkaban-web-server-3.46.0/conf/azkaban.properties
- [yinzhengjie@s101 ~]$ more /soft/azkaban/azkaban-exec-server-3.46./conf/azkaban.properties
- # Azkaban Personalization Settings
- azkaban.name=yinzhengjie
- azkaban.label=My Local Azkaban
- azkaban.color=#FF3601
- azkaban.default.servlet.path=/index
- web.resource.dir=/soft/azkaban/azkaban-web-server-3.46./web/
- default.timezone.id=Asia/Shanghai
- # Azkaban UserManager class
- user.manager.class=azkaban.user.XmlUserManager
- user.manager.xml.file=/soft/azkaban/azkaban-web-server-3.46./conf/azkaban-users.xml
- # Loader for projects
- executor.global.properties=/soft/azkaban/azkaban-web-server-3.46./conf/global.properties
- azkaban.project.dir=projects
- database.type=mysql
- mysql.port=
- mysql.host=s101
- mysql.database=yinzhengjie_azkaban
- mysql.user=root
- mysql.password=yinzhengjie
- mysql.numconnections=
- # Velocity dev mode
- velocity.dev.mode=false
- # Azkaban Jetty server properties.
- jetty.use.ssl=false
- jetty.maxThreads=
- jetty.port=
- # Azkaban Executor settings
- executor.port=
- # mail settings
- mail.sender=
- mail.host=
- # User facing web server configurations used to construct the user facing server URLs. They are useful when there is a reverse proxy between Azkaban web servers and users.
- # enduser -> myazkabanhost: -> proxy -> localhost:
- # when this parameters set then these parameters are used to generate email links.
- # if these parameters are not set then jetty.hostname, and jetty.port(if ssl configured jetty.ssl.port) are used.
- # azkaban.webserver.external_hostname=myazkabanhost.com
- # azkaban.webserver.external_ssl_port=
- # azkaban.webserver.external_port=
- job.failure.email=
- job.success.email=
- lockdown.create.projects=false
- cache.directory=cache
- # JMX stats
- jetty.connector.stats=true
- executor.connector.stats=true
- # Azkaban plugin settings
- azkaban.jobtype.plugin.dir=plugins/jobtypes
- [yinzhengjie@s101 ~]$
[yinzhengjie@s101 ~]$ more /soft/azkaban/azkaban-exec-server-3.46.0/conf/azkaban.properties
7>.修改用户配置文件【azkaban-users.xml】
- [yinzhengjie@s101 data]$ more /soft/azkaban/azkaban-web-server-3.46./conf/azkaban-users.xml
- <azkaban-users>
- <user username="azkaban" password="yinzhengjie" roles="admin" groups="azkaban" />
- <user username="metrics" password="yinzhengjie" roles="metrics"/>
- <user username="admin" password="yinzhengjie" roles="admin,metrics" />
- <role name="admin" permissions="ADMIN" />
- <role name="metrics" permissions="METRICS"/>
- </azkaban-users>
- [yinzhengjie@s101 data]$
8>.创建global.properties
- [yinzhengjie@s101 data]$ touch /soft/azkaban/azkaban-web-server-3.46./conf/global.properties
- [yinzhengjie@s101 data]$
9>.编写启动脚本
- [yinzhengjie@s101 ~]$ more /usr/local/bin/azweb.sh
- #!/bin/bash
- #@author :yinzhengjie
- #blog:http://www.cnblogs.com/yinzhengjie
- #EMAIL:y1053419035@qq.com
- #判断用户是否传参
- if [ $# -ne ];then
- echo "无效参数,用法为: $0 {start|stop}"
- exit
- fi
- #获取用户输入的命令
- cmd=$
- case $cmd in
- start)
- cd /soft/azkaban
- /soft/azkaban/azkaban-web-server-3.46./bin/start-web.sh
- ;;
- stop)
- cd /soft/azkaban
- /soft/azkaban/azkaban-web-server-3.46./bin/shutdown-web.sh
- ;;
- *)
- echo "无效参数,用法为: $0 {start|stop}"
- exit
- ;;
- esac
- echo ========= azweb $cmd =============
- [yinzhengjie@s101 ~]$
web端启动脚本(/usr/local/bin/azweb.sh)
- [yinzhengjie@s101 ~]$ more /usr/local/bin/azexec.sh
- #!/bin/bash
- #@author :yinzhengjie
- #blog:http://www.cnblogs.com/yinzhengjie
- #EMAIL:y1053419035@qq.com
- #判断用户是否传参
- if [ $# -ne ];then
- echo "无效参数,用法为: $0 {start|stop}"
- exit
- fi
- #获取用户输入的命令
- cmd=$
- case $cmd in
- start)
- cd /soft/azkaban
- /soft/azkaban/azkaban-exec-server-3.46./bin/start-exec.sh
- ;;
- stop)
- cd /soft/azkaban
- /soft/azkaban/azkaban-exec-server-3.46./bin/shutdown-exec.sh
- ;;
- *)
- echo "无效参数,用法为: $0 {start|stop}"
- exit
- ;;
- esac
- echo ========= azexec $cmd =============
- [yinzhengjie@s101 ~]$
exec端启动脚本(/usr/local/bin/azexec.sh)
10>.启动服务(启动web和executor)
- [yinzhengjie@s101 ~]$ jps
- Jps
- [yinzhengjie@s101 ~]$
- [yinzhengjie@s101 ~]$ azweb.sh start
- ========= azweb start =============
- [yinzhengjie@s101 ~]$ azexec.sh start
- ========= azexec start =============
- [yinzhengjie@s101 ~]$ jps
- AzkabanExecutorServer
- AzkabanWebServer
- Jps
- [yinzhengjie@s101 ~]$ netstat -untalp | grep
- (Not all processes could be identified, non-owned process info
- will not be shown, you would have to be root to see it all.)
- tcp6 ::: :::* LISTEN /java
- [yinzhengjie@s101 ~]$
11>.测试azkaban连接
输入用户名和密码信息:
登录成功会有以下页面:
二. Azkaban防坑小技巧
1>.job文件有空格
解决方案:
修改command.job配置文件,将里面多余的空格删除掉!然后重新上传job任务。
2>.Missing required property 'azkaban.native.lib'
解决方案:
- [yinzhengjie@s101 ~]$ grep azkaban.jobtype.plugin.dir /soft/azkaban/azkaban-web-server-3.46.0/conf/azkaban.properties
- azkaban.jobtype.plugin.dir=/soft/azkaban/azkaban-exec-server-3.46.0/plugins/jobtypes/
- [yinzhengjie@s101 ~]$
- [yinzhengjie@s101 ~]$ grep azkaban.jobtype.plugin.dir /soft/azkaban/azkaban-exec-server-3.46.0/conf/azkaban.properties
- azkaban.jobtype.plugin.dir=/soft/azkaban/azkaban-exec-server-3.46.0/plugins/jobtypes/
- [yinzhengjie@s101 ~]$
编辑“azkaban.properties” 配置文件,然后需要重启Azkaban服务!
3>.
4>.
Hadoop生态圈-Azkaban部署实战的更多相关文章
- Hadoop生态圈-Oozie部署实战
Hadoop生态圈-Oozie部署实战 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Oozie简介 1>.什么是Oozie Oozie英文翻译为:驯象人.一个基于工作流 ...
- Hadoop生态圈-Azkaban实战之Command类型执行指定脚本
Hadoop生态圈-Azkaban实战之Command类型执行指定脚本 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 1>.服务端测试代码(别忘记添加权限哟!) [yinzh ...
- Hadoop生态圈-Azkaban实战之Command类型多job工作流flow
Hadoop生态圈-Azkaban实战之Command类型多job工作流flow 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Azkaban内置的任务类型支持command.ja ...
- Hadoop生态圈-Azkaban实现文件上传到hdfs并执行MR数据清洗
Hadoop生态圈-Azkaban实现文件上传到hdfs并执行MR数据清洗 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果你没有Hadoop集群的话也没有关系,我这里给出当时我 ...
- Hadoop生态圈-Azkaban实现hive脚本执行
Hadoop生态圈-Azkaban实现hive脚本执行 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客中在HDFS分布式系统取的数据,而这个数据的是有之前我通过MapRed ...
- Hadoop生态圈-Sqoop部署以及基本使用方法
Hadoop生态圈-Sqoop部署以及基本使用方法 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Sqoop(发音:skup)是一款开源的工具,主要用于在Hadoop(Hive)与 ...
- Hadoop生态圈-zookeeper完全分布式部署
Hadoop生态圈-zookeeper完全分布式部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客部署是建立在Hadoop高可用基础之上的,关于Hadoop高可用部署请参 ...
- Hadoop生态圈-单点登录框架之CAS(Central Authentication Service)部署
Hadoop生态圈-单点登录框架之CAS(Central Authentication Service)部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.CAS简介 CAS( ...
- Hadoop生态圈-通过CDH5.15.1部署spark1.6与spark2.3.0的版本兼容运行
Hadoop生态圈-通过CDH5.15.1部署spark1.6与spark2.3.0的版本兼容运行 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在我的CDH5.15.1集群中,默 ...
随机推荐
- 初识TPOT:一个基于Python的自动化机器学习开发工具
1. TPOT介绍 一般来讲,创建一个机器学习模型需要经历以下几步: 数据预处理 特征工程 模型选择 超参数调整 模型保存 本文介绍一个基于遗传算法的快速模型选择及调参的方法,TPOT:一种基于Pyt ...
- libgdx学习记录20——多线程MultiThread资源处理
在libgdx中,一般的逻辑流程都在rende()函数中执行,这个函数是由opengl的渲染线程调用的,一般的图形显示和逻辑处理都在这个线程中. 一般情形下,在这个线程中处理就行了.但是当某些逻辑处理 ...
- [BZOJ3693]圆桌会议[霍尔定理+线段树]
题意 题目链接 分析 又是一个二分图匹配的问题,考虑霍尔定理. 根据套路我们知道只需要检查 "区间的并是一段连续的区间" 这些子集. 首先将环倍长.考虑枚举答案的区间并的右端点 \ ...
- 牛客OI周赛4-提高组-C-战争[并查集]
题意 一个长度为 \(n\) 的序列,每个权值互不相同,给出形如 \(l,r,p\) 的信息表示 \([l,r]\) 区间中最小的数是 \(p\) ,问第几个信息开始出现矛盾. \(n\leq 5 \ ...
- R绘图 第八篇:绘制饼图(ggplot2)
geom_bar()函数不仅可以绘制条形图,还能绘制饼图,跟绘制条形图的区别是坐标系不同,绘制饼图使用的坐标系polar,并且设置theta="y": coord_polar(th ...
- .NET Core容器化开发系列(零)——计划
.NET Core相当完善的跨平台特性以及其轻量化的底层接口为我们能顺畅进行微服务开发提供了非常棒的基础. 作为支撑微服务最常见的基础技术--容器化将是本系列的核心内容. 接下来我计划用一个月左右的时 ...
- Vxlan抓包
实验目的:验证Openstack vxlan组网模式验证虚拟机数据是否通过物理网卡流出 一. 同网段不同主机间虚拟机通讯 (同网段通讯直接通过物理机隧道口链接对端物理机隧道口,不需要通过网络节点): ...
- Jmeter(四)_16个逻辑控制器详解
循环控制器: 指定其子节点运行的次数,可以使用具体的数值,也可以设置为变量 1:勾选永远:表示一直循环下去 2:如果同时设置了线程组的循环次数和循环控制器的循环次数,那循环控制器的子节点运行的次数为两 ...
- 机器学习初入门04 – Seaborn(持续更新)
Seaborn库可以说是在matplotlib库上的一个封装,它给我们提供了非常丰富的模板 一.整体布局风格设置 import seaborn as sns import numpy as np im ...
- 第三次作业--导入excel表格(完整版)
031302322 031302316 将教师排课表导入系统 使用powerdesigner设计数据库表格 设计概念模型 打开new -> Conceptual Data Model创建概念模型 ...