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 | Val b = 0 +: ints //往右侧加 |
scala比python快,但是不一定比scala易用。但将来一定更易用。
(具体方法省略了很多,更多内容请上参考网站。scala在平时学习中用的不多,且有一定门槛)
本文链接: https://konelane.github.io/2020/12/10/201210hadoop/
-- EOF --
转载请注明出处 署名-非商业性使用-禁止演绎 3.0 国际(CC BY-NC-ND 3.0)