Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays Spark—array()和array()之间的差异_Arrays_Scala_Apache Spark - Fatal编程技术网

Arrays Spark—array()和array()之间的差异

Arrays Spark—array()和array()之间的差异,arrays,scala,apache-spark,Arrays,Scala,Apache Spark,我在Spark Shell(1.6)中将字符串列表转换为如下数组: val mapData = List("column1", "column2", "column3") val values = array(mapData.map(col): _*) 值的类型为: 值:org.apache.spark.sql.Column=array(column1、column2、column3) 一切都很好,但是当我开始在Eclipse中开发时,我得到了一个错误: 未找到:值数组 所以我改为: val

我在Spark Shell(1.6)中将字符串列表转换为如下数组:

val mapData = List("column1", "column2", "column3")
val values = array(mapData.map(col): _*)
值的类型为:

值:org.apache.spark.sql.Column=array(column1、column2、column3)

一切都很好,但是当我开始在Eclipse中开发时,我得到了一个错误:

未找到:值数组

所以我改为:

val values = Array(mapData.map(col): _*)
我当时面临的问题是,值的类型现在发生了变化,使用它的udf不接受这种新类型:

值:Array[org.apache.spark.sql.Column]=Array(column1,column2, 第3栏)

为什么我不能像在Shell中一样在IDE中使用array()(我缺少什么导入)?为什么数组在没有数组[]包装器的情况下生成一个
org.apache.spark.sql.Column

编辑:自定义项功能:

def replaceFirstMapOfArray = 
udf((p: Seq[Map[String, String]], o: Seq[Map[String, String]]) =>
{
    if((null != o && null !=p)){
        if ( o.size == 1 ) p
        else p ++ o.drop(1)
    }else{
        o
    }
})
这里,,
Array
List
是对象的集合

其中,
array(mapData.map(col):\u*)
中的as
array
是一个spark函数,它为相同的数据类型列创建一个类型为array的新列

要使用它,您需要导入

import org.apache.spark.sql.functions.array
您可以在这里看到有关阵列的信息

这里,,
Array
List
是对象的集合

其中,
array(mapData.map(col):\u*)
中的as
array
是一个spark函数,它为相同的数据类型列创建一个类型为array的新列

要使用它,您需要导入

import org.apache.spark.sql.functions.array
您可以在这里看到有关阵列的信息


您的udf函数在哪里?是的,让我添加ita udf函数需要传递一个列参数和一个基本数组中的值。这就是错误发生的原因。Shankar下面的回答应该回答了你的困惑是的。感谢Ramesh的评论,udf函数在哪里?是的,让我添加一个ita udf函数需要传递一个列参数和一个基本数组中的值。这就是错误发生的原因。Shankar下面的回答应该回答了你的困惑是的。谢谢Ramesh的评论谢谢。那么,我怎样才能修改我的代码,使Eclipse不会抱怨呢?您导入了
import org.apache.spark.sql.functions.array了吗。谢谢,谢谢。那么,我怎样才能修改我的代码,使Eclipse不会抱怨呢?您导入了
import org.apache.spark.sql.functions.array了吗。谢谢
/**    
 * Creates a new array column. The input columns must all have the same data type.  
 * @group normal_funcs    
 * @since 1.4.0   
 */

 @scala.annotation.varargs
 def array(cols: Column*): Column = withExpr { 
   CreateArray(cols.map(_.expr)) 
 }