Spark定义:
Spark编程始于数据集,而数据集往往存放在分布式持久化存储之上,比如Hadoop分布式文件系统HDFS
编写Spark 程序通常包括一系列相关步骤。
• 在输入数据集上定义一组转换。
• 调用 action,用以将转换后的数据集保存到持久存储上,或者把结果返回到驱动程序的
本地内存。
• 运行本地计算,本地计算处理分布式计算的结果。本地计算有助于你确定下一步的转换
和 action。
windows工作环境下,连接服务器很方便的使用xshell就可以,比较方便,傻瓜式操作
但再macOs操作系统下需要下载软件,当然软件也有,但macOs自带的控制台软件就可以,而且还比较方便,来说下步骤
第一步是要先建立密码文件:sshpass {这是个目录}下的文件,用公司系统名字命名,方便查找
目录:/Users/你的苹果电脑登录用户名(我的是abc)/Downloads/sshpass 不会找的去百度一下苹果电脑Downloads文件夹怎么在控制台找到,你下载的文件,视频等都在这个文件夹下
第二步
vim 文件名(你自己起)
示例: vim password
1 | 123456 |
:wq 输入密码后保存
第三步
打开item2的设置
ietm2 打开 Preferences 的快捷键 command + 逗号
需要改的地方就两处,一是Name,二是Command
Name起个名字方便用的时候好找,Command是执行的命令
执行的命令如下:/usr/local/bin/sshpass -f /Users/abc/Downloads/sshpass/password ssh -p22 supdev@ip地址
/usr/local/bin/sshpass是sshpass执行文件的路径,默认情况安装现在这个位置上
sshpass下载:
brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
-f是告诉sshpass加载文件
/Users/abc/Downloads/sshpass/password 就是要加载的的密码文件
ssh -p22 supdev@ip地址 意思是用ssh链接,端口22,用户名和IP地址
保存后,第一次先通过终端运行ssh 用户名@ip,登录成功后再选择该profile,就可以实现ssh登录(如果配置了密码文件,就是刚刚讲的password文件)那么第二次开始到以后都不需要输密码了
第一次使用命令:ssh supdev@ip 登录服务器
npm ERR! code ENOLOCAL
npm ERR! Could not install from “Files\nodejs\node_cache_npx\21364” as it does not contain a package.json file.
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Program Files\nodejs\node_cache_logs\2020-04-02T08_18_09_189Z-debug.log
Install for create-react-app@latest failed with code 1
10月份自己组装了一个台式机,配置还可以,所以抽空把再装机中遇到的一些坑和学习到的一些硬件只是做了一张导图,分享给大家
其实组装电脑没有想象中的难,只有0次和无数次的区别,为什么要组装而不买套机?其实是你和它的关系,如果是朋友,你会去培养,如果是雇佣,你不会花费太多心思,所以很多钱就让电脑城的人和淘宝卖家挣去了
我粗略的估算了一下,刨去人工费和不知道几环套几环的硬件代理费,一台电脑的利润成本大概再2000左右,当然这个价格只是站在配件都是全新的基础上,如果想追求便宜高配可以去闲鱼捡捡垃圾,性价比会非常高
2019.12.02 晚上因为手贱超频导致电脑黑屏无法开机,记得主板上的显示屏数字写着95(不知道啥意思,可能是就不的谐音)之后就开始查来查去,找到了我主板最有效的方法(Msi X399)
1.可以扣电池,电池很隐蔽,在左上角的板下面藏着,基本上找不到
2.CMOS重置,说明书上写着找跳线帽插上去5-10秒可以恢复BIOS
3.X399 主板后置面板处有一键reset的按钮,点击即可恢复初始设置(我感觉像是恢复到上一次调整后,把不符合要求的设置调整到最佳状态)
因为我是设置锐龙自带的CPU设置软件 AMD Ryzen Master,先调整了cpu频率单核3700->3800,内存频率从1467 - 2200(这个地方是大坑)
DDR4内存是双通道,频率都是2倍的关系,所以,在你任务管理器看见的是X2 以后的频率,但是专业一点的软件会 %2 所以我当时就以为我3000MHZ的频率
为什么才给我1465,很纳闷所以就调成2200MHZ,之后就开不了机了
X399主板的重置BIOS在主板后面,有个按钮,很明显(这可能就是至尊平台的牛逼之处吧),虽然我找了一个小时的电池,和CMOS双针脚插口,然后我还没找到跳线帽,惭愧惭愧
之前学习了一段时间go之后想写一点小的项目,上网查询了一些资料,做了一些小的demo,今天将我最近写的小项目分享给大家:利用go实现单任务版爬虫和并发爬虫,因为go对并发支持的很好,所以我们只需要提前将goroutine和channl学好,就很好理解了
1 | 项目结构: |
###
名义GDP:名义GDP是指以现行市场价格计算的既定时期国内总产品和服务的价格总和。
本章来讲什么是并发,了解并发的意义才能会用它
首先了解进程和线程
进程是资源分配的最小单位,线程是程序执行的最小单位。
进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。
线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。
一个进程可以创建和撤销多个线程;同一个进程中的多个线程之间可以并发执行。
并发和并行
并发的关键是你有处理多个任务的能力,不一定要同时。
并行的关键是你有同时处理多个任务的能力。
所以我认为它们最关键的点就是:是否是同时。
------------------------------------------------------------
// 判断在 b 中能否找到正则表达式 pattern 所匹配的子串
// pattern:要查找的正则表达式
// b:要在其中进行查找的 []byte
// matched:返回是否找到匹配项
// err:返回查找过程中遇到的任何错误
// 此函数通过调用 Regexp 的方法实现
func Match(pattern string, b []byte) (matched bool, err error)
func main() {
fmt.Println(regexp.Match("H.* ", []byte("Hello World!")))
// true
}
------------------------------------------------------------
1 / 5