分布式1210-Spark与Scala

目录

spark的基础语法-Scala,做了一些思想性的介绍。

具体代码参考李丰老师课件L10.1-Introduction-to-Scala

一、Scala介绍

scala语言,面向大数据编程的语言。

这个语言只有十来年的历史。这个语言没有排在前二十的常见语言上,但确实进步最快的语言。因为它可以对海量数据进行高强度高密度的计算。

c语言是编译语言,快,但是写的麻烦。89十年代改用写起来快,跑起来快的python之流。现在就是写起来好写,且跑起来快。

新版本的spark,底层语言大部分是scala了。java不支持交互式输入,必须编译成机器码。而现在的编程习惯更多是交互式的。一部分习惯于python,另一部分习惯于scala。下面来比较一下这两种语言。

scala比python快十倍以上。spark比python快100倍(nb)。使用了java虚拟机机制,允许程序在运行中进行编译,比起python这种纯解释性的动态语言要快一个量级。

传统的c和java快,但是机器语言不好写。

对应的库上看,spark同时有scala和python的库,很多最新的特性都从scala上出现,再传递给python。

scala可以当做普通变成语言,也可以单机上使用。可以与hadoop结合。

考虑scala的学习曲线,python很好上手,有循环基础基本上1周就能写程序。scala比python略复杂,scala有一些特殊特性是原来不具有的(保证了速度的提升)。如果简单操作,完全可以用python写。如果计算速度会成为项目的瓶颈,那么可以选择scala。

语法最简单的是c语言,c++更难,java甚之,python处于三者之中,好写,慢。

比起python,scala更擅长处理复杂工作模式。

易用性上,python上有很多机器学习库可以使用,scala没有那么多。

很难把python语句导入scala。在多线程中,python经常阻塞,出问题。scala是内置的。

比起java,scala对内存要求不贪婪。spark就是个例子。scala可以快速释放内存,能较好地管理内存。

对于用户,需要知道一些常用的库,上手之后就比较舒服了。但有些环境很少工具,离不开原来的环境。比如自然语言处理用的都是python,scala需要很多操作。spark上python就很好用。

最后,定义一下:

scala面向对象,高级语言。静态语言,语法有时候比python更可读。(主要是,python的numpy、pandas用法读法都不一样,不同的库用法也不同。)

二、一些实用操作

(上参考网站更全面更系统一些)

1
2
3
4
5
//注释

/*
可以注释多行
*/

scala在定义变量时,有个特有类型:mutable 与 immutable变量,广播的变量时不可修改的,是immutable的。可以定义更加方便使用的变量。val是value,凡是用val定义的,都不可修改,凡是用var定义的,都是可修改的。

spark里直接输入scala,可以进入scala的交互对话框。

1.0双精度,迭代次数很多时求导会接近0。因此需要一些超长精度的。

1
2
3
4
5
6
7
Val b = 0 +: ints //往右侧加

:+ // 往左侧加

if(A){}

else{B}

scala比python快,但是不一定比scala易用。但将来一定更易用。

(具体方法省略了很多,更多内容请上参考网站。scala在平时学习中用的不多,且有一定门槛)


本文链接: https://konelane.github.io/2020/12/10/201210hadoop/

-- EOF --

¥^¥请氦核牛饮一盒奶~suki