spark-shell与pyspark编写代码的语言差异是什么?为何同一段代码运行结果不同
报错原因与二者语言层面差异
你提交的代码在spark-shell中报错是因为默认启动的spark-shell是Scala语言的交互式运行环境,你所写的是Python语法的代码,语法不兼容所以触发报错;PySpark是Spark官方提供的Python适配运行环境,支持Python语法,所以代码可以正常运行。
二者在语言层面的核心区别如下:
- 适用语法体系完全不同:spark-shell默认遵循Scala语法规范,PySpark遵循Python语法规范,二者是完全不同的编程语言,语法规则不通用。
- 变量声明规则不同:Scala中定义变量必须加
var(可变变量)或val(不可变变量)关键字,不支持直接写变量名 = 赋值内容的格式;Python定义变量不需要额外关键字,直接赋值即可。 - 集合字面量写法不同:Python中用方括号
[]定义列表,Scala中列表的合法写法是List(元素1, 元素2, 元素3),方括号[]在Scala中是泛型标识,不能用来定义列表。
如果你需要在spark-shell中实现相同的逻辑,正确写法为:
val a = sc.parallelize(List(1,2,3))
内容的提问来源于stack exchange,提问作者Abhay
相关产品推荐
相关产品推荐

