Spark中array()与Array()的区别及代码报错问题排查
解决Spark IDE中
array函数找不到的问题 这问题我之前开发时也踩过坑!核心原因很简单:Spark Shell会自动帮你导入常用的Spark SQL函数,但Eclipse这类IDE不会做这件事。
问题根源
在Spark Shell 1.6里,启动时会自动执行import org.apache.spark.sql.functions._,所以你直接用array()函数(这个函数是用来构建Spark SQL数组表达式的,返回Column类型)完全没问题。但在Eclipse中,你需要手动导入这个包,否则编译器根本不知道array是什么。
而你换成Array(...)之后,调用的是Scala标准库的数组构造器,得到的是普通的Array[Column],不是Spark SQL需要的Column类型,自然会引发后续操作的错误。
解决办法
只需要在代码开头手动导入Spark SQL的functions包:
import org.apache.spark.sql.functions._
然后回到你原来的代码:
val mapData = List("column1", "column2", "column3") val values = array(mapData.map(col): _*)
这时候values的类型就会和Spark Shell里一致:org.apache.spark.sql.Column = array(column1,column2,column3),后续的DataFrame操作也能正常进行了。
内容的提问来源于stack exchange,提问作者Ignacio Alorre
相关产品推荐
相关产品推荐

