public class interfases { public static void main(String[] args) {
} }
//抽象类 1、防止父类被实例化 2、强制子类去重写父类 //抽象类public abstract class 类名{}
abstract class T1 { //抽象方法 public abstract 返回类型 方法名() public abstract void t1();
}
class X extends T1{ // 快捷键alt+enter @Override public void t1() {
} } //接口是一种特殊的抽象类 没有普通方法 //定义 interface 接口名{ // 常量; // 抽象方法;} //实现 class 类名 extends 父类 imptements 接口名{} 接口名可以写多个 以逗号分开
HttpResponse 主要用于返回字符串类型的数据 def index(request): return HttpResponse('index页面') 在页面中就会显示 index页面 render 主要用于返回html文件 并且支持模板语法(django自己写的) 在浏览器中输入http://127.0.0.1:8000/index/后,会返回index.html页面。 def index(request): return render(request,'index.html') 使用render给前端传值 def index(request): return render(request,'index.html',{'name':'春游去动物园'}) 传过去是什么数据类型,在前端使用时还是什么数据类型。 <h1>index页面</h1> <span>{{ name }}</span> #此时name的值为春游去动物园 redirect 主要用于重定向 括号内可以写其他网站的全称 也可以自己网站的后缀 在浏览器中输入http://127.0.0.1:8000/index/时 重定向到一个完整的网址 def index(request): return redirect('http://www.baidu.com') 重定向到自己网站 def login(request): return render(request,'login.html') def index(request): return redirect('/login/') django框架的(static)静态文件配置 在根目录创建static文件夹,再在static中分别创建css,js,img等各种静态文件对应的文件夹,将 静态文件分门别类放入对应文件夹中。 1、在项目页面的 settings.py 文件中配置 STATIC_URL 。 STATIC_URL = '/static/' STATIC_URL的作用是用于拼接静态文件的存储路径。 2、在配置文件中配置STATICFILES_DIRS为静态文件的存储路径。 STATICFILES_DIRS = [ os.path.join(BASE_DIR, static) ] 这里的 static是在和项目同级的目录下创建static 文件夹,用来存储静态文件。 在static 文件夹下,可以创建 css、js、fonts、images等文件下来分类存放静态文件。 ''' STATIC_URL = '/static/' STATICFILES_DIRS = [ os.
1.分析SparkSQL出现的原因,并简述SparkSQL的起源与发展。 为了将SQL语句转为Spark应用程序,简化编程,Spark团队开发了Shark(Hive on Spark)。但由于Shark完全按照Hive设计,难以添加新的优化;并且,Spark线程级别并行,Mapreduce进程级别并行,Spark在兼容Hive时存在线程安全问题,Shark后来停止开发,团队开始开发SparkSQL。SparkSQL只延用了将SQL语句转为语法树这个模块,其他模块都是自己重新编写的,拥有更高的计算性能,新增了数据抽象DataFrame
2. 简述RDD 和DataFrame的联系与区别。
区别:RDD是分布式的java对象的集合,但是对象内部结构对于RDD而言却是不可知的。DataFrame是一种以RDD为基础的分布式数据集,提供了详细的结构信息,相当于关系数据库中的一张表联系1.都是spark平台下的分布式弹性数据集,为处理超大型数据提供便利2、都有惰性机制,在进行创建、转换,如map方法时,不会立即执行,只有在遇到Action才会运算3.都会根据spark的内存情况自动缓存运算,这样即使数据量很大,也不用担心会内存溢出4、三者都有partition的概念5.三者有许多共同的函数,如filter,排序等
三. DataFrame的创建与保存:
PySpark-DataFrame创建: spark.read.text(url) spark.read.json(url) spark.read.format(text).load(people.txt) spark.read.format(json).load(people.json) 描述从不同文件类型生成DataFrame的区别。 用相同的txt或json文件,同时创建RDD,比较RDD与DataFrame的区别。 DataFrame的保存 df.write.text(dir) df.write.json(dri) df.write.format(text).save(dir) df.write.format(json).save(dir) 4.选择题:
1单选(2分)关于Shark,下面描述正确的是:C
A.Shark提供了类似Pig的功能
B.Shark把SQL语句转换成MapReduce作业
C.Shark重用了Hive中的HiveQL解析、逻辑执行计划翻译、执行计划优化等逻辑
D.Shark的性能比Hive差很多
2单选(2分)下面关于Spark SQL架构的描述错误的是:D
A.在Shark原有的架构上重写了逻辑执行计划的优化部分,解决了Shark存在的问题
B.Spark SQL在Hive兼容层面仅依赖HiveQL解析和Hive元数据
C.Spark SQL执行计划生成和优化都由Catalyst(函数式关系查询优化框架)负责
D.Spark SQL执行计划生成和优化需要依赖Hive来完成
3单选(2分)要把一个DataFrame保存到people.json文件中,下面语句哪个是正确的:A
A.df.write.json(people.json)
B.df.json(people.json)
C.df.write.format(csv).save(people.json)
D.df.write.csv(people.json)
4多选(3分)Shark的设计导致了两个问题:AC
A.执行计划优化完全依赖于Hive,不方便添加新的优化策略
B.执行计划优化不依赖于Hive,方便添加新的优化策略
C.Spark是线程级并行,而MapReduce是进程级并行,因此,Spark在兼容Hive的实现上存在线程安全问题,导致Shark不得不使用另外一套独立维护的、打了补丁的Hive源码分支
D.Spark是进程级并行,而MapReduce是线程级并行,因此,Spark在兼容Hive的实现上存在线程安全问题,导致Shark不得不使用另外一套独立维护的、打了补丁的Hive源码分支
5 多选(3分)下面关于为什么推出Spark SQL的原因的描述正确的是:AB
A.Spark SQL可以提供DataFrame API,可以对内部和外部各种数据源执行各种关系操作
1.分析SparkSQL出现的原因,并简述SparkSQL的起源与发展。 SparkSQL出现的原因 hive是shark的前身,shark是sparkSQL的前身,sparkSQL产生的根本原因是其完全脱离了hive的限制,hive是hive SQL转换成MapReduce然后提交到集群上执行,大大简化了编写MapReduce的程序复杂性。同时也由于MapReduce的计算执行效率很慢,因此spark SQL就这样出来,就是将spark SQL转换成RDD,然后提交到集群上执行,这样效率就非常快。
SparkSQL的起源 在三四年前,Hive可以说是SQL on Hadoop的唯一选择,负责将SQL编译成可扩展的MapReduce作业。鉴于Hive的性能以及与Spark的兼容,Shark项目由此而生。
Shark即Hive on Spark,本质上是通过Hive的HQL解析,把HQL翻译成Spark上的RDD操作,然后通过Hive的metadata获取数据库里的表信息,实际HDFS上的数据和文件,会由Shark获取并放到Spark上运算。
Shark的最大特性就是快和与Hive的完全兼容,且可以在shell模式下使用rdd2sql()这样的API,把HQL得到的结果集,继续在scala环境下运算,支持自己编写简单的机器学习或简单分析处理函数,对HQL结果进一步分析计算。
SparkSQL的发展 在2014年7月1日的Spark Summit上,Databricks宣布终止对Shark的开发,将重点放到Spark SQL上。
Databricks表示,Spark SQL将涵盖Shark的所有特性,用户可以从Shark 0.9进行无缝的升级。
Databricks推广的Shark相关项目一共有两个,分别是Spark SQL和新的Hive on Spark(HIVE-7292)
Databricks表示,Shark更多是对Hive的改造,替换了Hive的物理执行引擎,因此会有一个很快的速度。然而,不容忽视的是,Shark继承了大量的Hive代码,因此给优化和维护带来了大量的麻烦。
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)
描述从不同文件类型生成DataFrame的区别。
用相同的txt或json文件,同时创建RDD,比较RDD与DataFrame的区别。
区别:RDD是直接输出对象,DataFrame是以对象里面的的详细结构进行输出
1. 请分析SparkSQL出现的原因,并简述SparkSQL的起源与发展。 1.1 出现原因 SparkSQL的出现源于shark存在线程安全问题和维护语法补丁问题,所以将SparkSQL拿出独立发展。SparkSQL代码由于摆脱了对Hive的依赖性,SparkSQL无论在数据兼容、性能优化、组件扩展方面都得到了极大的方便
1.2 起源与发展 Spark SQL 是 Spark 用于结构化数据(structured data)处理的 Spark 模块。
SparkSQL的前身是Shark,给熟悉RDBMS但又不理解MapReduce的技术人员提供快速上手的工具,hive应运而生,它是当时唯一运行在Hadoop上的SQL-on-hadoop工具。但是MapReduce计算过程中大量的中间磁盘落地过程消耗了大量的I/O,降低的运行效率,为了提高SQL-on-Hadoop的效率,Shark应运而生,但又因为Shark对于Hive的太多依赖(如采用Hive的语法解析器、查询优化器等等),2014年spark团队停止对Shark的开发,发展出了两个分支:SparkSQL 和 Hive on Spark,将所有资源放SparkSQL项目上。
SparkSQL抛弃原有 Shark 的代码,汲取了 Shark 的一些优点,如内存列存储(In-Memory Columnar Storage)、Hive兼容性等,重新开发了SparkSQL代码;由于摆脱了对Hive的依赖性,SparkSQL无论在数据兼容、性能优化、组件扩展方面都得到了极大的方便。
其中 SparkSQL 作为 Spark 生态的一员继续发展,而不再受限于 Hive,只是兼容 Hive;而Hive on Spark 是一个 Hive 的发展计划,该计划将 Spark 作为 Hive 的底层引擎之一,也就是说,Hive 将不再受限于一个引擎,可以采用 Map-Reduce、Tez、Spark 等引擎。
2. 简述RDD 和DataFrame的联系与区别? 2.1 联系 都是spark平台下的分布式弹性数据集,为处理超大型数据提供便利 都有惰性机制,在进行创建、转换,如map方法时,不会立即执行,只有在遇到Action如foreach时,才会开始遍历运算 都会根据spark的内存情况自动缓存运算,这样即使数据量很大,也不用担心会内存溢出 都有partition的概念 有许多共同的函数,如filter,排序等 2.2 区别 RDD不支持SQL DF每一行都是Row类型,不能直接访问字段,必须解析才行 DS每一行是什么类型是不一定的,在自定义了case class之后可以很自由的获 得每一行的信息 DataFrame与Dataset均支持spark sql的操作,比如select,group by之类,还 能注册临时表/视窗,进行sql语句操作 可以看出,Dataset在需要访问列中的某个字段时是非常方便的,然而,如果要 写一些适配性很强的函数时,如果使用Dataset,行的类型又不确定,可能是 各种case class,无法实现适配,这时候用DataFrame即Dataset[Row]就能比较 好的解决问题。 3 3.
前置步骤 # 如之前安装过docker,请先删除 yum remove docker docker-common docker-selinux docker-engine centos7 # centos7 # 先配阿里源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo ## 安装一些必要的系统工具 yum install -y yum-utils device-mapper-persistent-data lvm2 # 添加软件源信息 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo # 更新并安装docker-ce yum makecache fast # 查找docker-ce版本 yum list docker-ce.x86_64 --showduplicates | sort -r # 这边安装指定版本,这边需要注意的是官网上面是只说在docker-ce后面加上指定的版本号,其实还需要在后面加上.x86_64,不然会安装不成功 yum install docker-ce-3:19.03.15-3.el8.x86_64 docker-ce-cli-3:19.03.15-3.el8.x86_64 containerd.io # 启动 systemctl start docker # 启动时报错Failed to start docker.
问题 在Ubuntu中,执行apt install后,出现以下问题:
Waiting for cache lock: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 3365 (unattended-upgr)
看着描述就是有3365的进程进行占用了source文件。
解决办法: 删除锁定的文件
rm /var/lib/dpkg/lock-frontend 实在没办法解除,直接进行干掉进程。
kill -9 3365 注意:这里的3365是占用文件的进程号。
创建数据库表 -- 目标:创建一个school数据库 -- 使用 SQL 创建school数据库的 teacher 表(列、字段) -- 工号int,登录密码varchar(20) 姓名、性别varchar(2) 出生日期(datatime) 家庭住址 email -- 注意点:使用英文(),表的名称和字段尽量使用``括起来 -- AUTO_INCREMENT 自增 -- 字符串使用''或者括起来 -- 列语句最后加 , 最后一个列语句不用加 -- 主键:一般一个表只有一个 CREATE TABLE IF NOT EXISTS `teacher`( `id` INT(4) NOT NULL COMMENT '工号', `name` VARCHAR(20) NOT NULL DEFAULT '匿名' COMMENT '姓名', `password` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码', `sex` VARCHAR(2) NOT NULL DEFAULT '女' COMMENT '性别', `born` DATETIME DEFAULT NULL COMMENT '出生日期', `address` VARCHAR(100) DEFAULT NULL COMMENT '家庭住址', `email` VARCHAR(50) DEFAULT NULL COMMENT '邮箱', PRIMARY KEY(`id`) )ENGINE=INNODB DEFAULT CHARSET=utf8 创建格式,[.
重点 提一件拉胯的事:别去参考阿里和华为云官方镜像上面的解决办法,本人试了几遍,没luan用。拉胯!!!!!!!! 报错具体信息 Errors during downloading metadata for repository 'epel': - Status code: 404 for http://archives.fedoraproject.org/pub/archive/epel/8/Everything/x86_64/repodata/repomd.xml (IP: 38.145.60.23) Error: Failed to download metadata for repo 'epel': Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried 原因 第三方的镜像站中均已移除CentOS 8的源,Centos 8版本已停止更新相应依赖导致的,下载新的yum源即可搞定 解决办法 mv /etc/yum.repos.d /etc/yum.repos.d.bak mkdir -p /etc/yum.repos.d curl https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo > /etc/yum.repos.d/Centos-vault-8.5.2111.repo curl https://mirrors.aliyun.com/repo/epel-archive-8.repo > /etc/yum.repos.d/epel-archive-8.repo yum clean all yum makecache 建议 如果各位不是云服务器上使用修改的话,而是本地vm里的话,建议可以参考我的另外一篇博客,可以使用阿里的龙蜥操作系统。挺好用的,具体操作安装跟原来的centos一样哦 下方传送门可以查看!!!!! 传送门
https://www.cnblogs.com/yeungchie/
XFCE是一款轻量级 Linux 桌面,当前版本已经将所有部件从 GTK2 更新到 GTK3,从D-Dbus Glib更新到GDBus,大部分组件支持Object Introspection(简称 GI,用于产生与解析 C 程序库 API 元信息,以便于动态语言(或托管语言)绑定基于 C + GObject 的程序库)。优化用户体验,加入新特性,并修补大量BUG。与其它UI界面(GNOME、KDE)相比,XFCE占用的内存和CPU使用量非常小,给用户带来亲切和高效的使用体验。
1. 更新系统 sudo dnf update 2. 安装字库 sudo dnf install dejavu-fonts liberation-fonts gnu-*-fonts google-*-fonts 3. 安装Xorg sudo dnf install xorg-* 4. 安装XFCE及组件 sudo dnf install xfwm4 xfdesktop xfce4-* xfce4-*-plugin network-manager-applet 5. 安装登录管理器 sudo dnf install lightdm lightdm-gtk 6. 设置默认桌面为XFCE 通过root权限用户设置
echo 'user-session=xfce' >> /etc/lightdm/lightdm.conf.d/60-lightdm-gtk-greeter.conf 7. 使用登录管理器登录XFCE sudo systemctl start lightdm 登录管理器启动后,在右上角左侧选择xfce-session 输入用户名、密码登录