Apache spark Scala,Spark代码:迭代数组并使用数组中的元素计算表达式
我正在用scala spark编码,并试图分离所有字符串和列数据类型。 我得到了列(2)2的输出,虽然有一个警告,但是当我在if语句中应用相同的东西时,我得到了一个错误。你知道为什么吗。这一部分通过添加列(2)得到解决。\u 2:David GriffinApache spark Scala,Spark代码:迭代数组并使用数组中的元素计算表达式,apache-spark,Apache Spark,我正在用scala spark编码,并试图分离所有字符串和列数据类型。 我得到了列(2)2的输出,虽然有一个警告,但是当我在if语句中应用相同的东西时,我得到了一个错误。你知道为什么吗。这一部分通过添加列(2)得到解决。\u 2:David Griffin var df = some dataframe var columns = df.dtypes var colnames = df.columns.size var stringColumns:Array[(String,String)]
var df = some dataframe
var columns = df.dtypes
var colnames = df.columns.size
var stringColumns:Array[(String,String)] = null;
var doubleColumns:Array[(String,String)] = null;
var otherColumns:Array [(String,String)] = null;
columns(2)._2
columns(2)._1
for (x<-1 to colnames)
{
if (columns(x)._2 == "StringType")
{stringColumns = stringColumns ++ Seq((columns(x)))}
if (columns(x)._2 == "DoubleType")
{doubleColumns = doubleColumns ++ Seq((columns(x)))}
else
{otherColumns = otherColumns ++ Seq((columns(x)))}
}
我相信你错过了一个
。更改此项:
columns(2)_2
到
如果没有别的,它将摆脱警告
然后,你需要做:
++ Seq(columns(x))
下面是一个更清晰的示例:
scala> val arr = Array[(String,String)]()
arr: Array[(String, String)] = Array()
scala> arr ++ (("foo", "bar"))
<console>:9: error: type mismatch;
found : (String, String)
required: scala.collection.GenTraversableOnce[?]
arr ++ (("foo", "bar"))
scala> arr ++ Seq(("foo", "bar"))
res2: Array[(String, String)] = Array((foo,bar))
scala>val-arr=Array[(字符串,字符串)]()
arr:Array[(字符串,字符串)]=数组()
scala>arr++((“foo”,“bar”))
:9:错误:类型不匹配;
找到:(字符串,字符串)
必需:scala.collection.GenTraversableOnce[?]
arr++(“foo”,“bar”))
scala>arr++Seq((“foo”,“bar”))
res2:Array[(String,String)]=数组((foo,bar))
我想你少了一个
。更改此项:
columns(2)_2
到
如果没有别的,它将摆脱警告
然后,你需要做:
++ Seq(columns(x))
下面是一个更清晰的示例:
scala> val arr = Array[(String,String)]()
arr: Array[(String, String)] = Array()
scala> arr ++ (("foo", "bar"))
<console>:9: error: type mismatch;
found : (String, String)
required: scala.collection.GenTraversableOnce[?]
arr ++ (("foo", "bar"))
scala> arr ++ Seq(("foo", "bar"))
res2: Array[(String, String)] = Array((foo,bar))
scala>val-arr=Array[(字符串,字符串)]()
arr:Array[(字符串,字符串)]=数组()
scala>arr++((“foo”,“bar”))
:9:错误:类型不匹配;
找到:(字符串,字符串)
必需:scala.collection.GenTraversableOnce[?]
arr++(“foo”,“bar”))
scala>arr++Seq((“foo”,“bar”))
res2:Array[(String,String)]=数组((foo,bar))
这是由大卫·格里芬的答案修改而来的答案,所以请也投票给他。刚把++改成+:=
var columns = df.dtypes
var colnames = df.columns.size
var stringColumns= Array[(String,String)]();
var doubleColumns= Array[(String,String)]();
var otherColumns= Array[(String,String)]();
for (x<-0 to colnames-1)
{
if (columns(x)._2 == "StringType"){
stringColumns +:= columns(x)
}else if (columns(x)._2 == "DoubleType") {
doubleColumns +:= columns(x)
}else {
otherColumns +:= columns(x)
}
}
println(stringColumns)
println(doubleColumns)
println(otherColumns)
var columns=df.dtypes
var colnames=df.columns.size
var stringColumns=Array[(String,String)]();
var doubleColumns=数组[(字符串,字符串)]();
var otherColumns=Array[(String,String)]();
对于(x这是从David Griffins的答案修改而来的答案,所以请也投票给他。只是将++改为+:=
var columns = df.dtypes
var colnames = df.columns.size
var stringColumns= Array[(String,String)]();
var doubleColumns= Array[(String,String)]();
var otherColumns= Array[(String,String)]();
for (x<-0 to colnames-1)
{
if (columns(x)._2 == "StringType"){
stringColumns +:= columns(x)
}else if (columns(x)._2 == "DoubleType") {
doubleColumns +:= columns(x)
}else {
otherColumns +:= columns(x)
}
}
println(stringColumns)
println(doubleColumns)
println(otherColumns)
var columns=df.dtypes
var colnames=df.columns.size
var stringColumns=Array[(String,String)]();
var doubleColumns=数组[(字符串,字符串)]();
var otherColumns=Array[(String,String)]();
例如(xThanks摆脱了警告您是否尝试将columns(x)\u2
更改为columns(x)。\u2
?编辑了我的答案-++要求您将右侧包装为Seq(…)
Hmmm…。我一定是做错了什么。我收到了空指针异常错误,我直接添加了Seq(((“Foo”,“bar”))根据逻辑,我得到了相同的错误。谢谢你的帮助谢谢你摆脱了警告你是否尝试将列(x)_2
更改为列(x)。_2
?编辑了我的答案-++要求你将右手边用顺序(…)
Hmmm…。我一定是做错了什么。我得到了空指针异常错误。我直接将Seq((“Foo”,“bar”)添加到逻辑中,得到了相同的错误。谢谢你的帮助