相关疑难解决方法(0)

更改spark数据帧中列的可空属性

我正在为某些测试手动创建数据帧.创建它的代码是:

case class input(id:Long, var1:Int, var2:Int, var3:Double)
val inputDF = sqlCtx
  .createDataFrame(List(input(1110,0,1001,-10.00),
    input(1111,1,1001,10.00),
    input(1111,0,1002,10.00)))
Run Code Online (Sandbox Code Playgroud)

架构看起来像这样:

root
 |-- id: long (nullable = false)
 |-- var1: integer (nullable = false)
 |-- var2: integer (nullable = false)
 |-- var3: double (nullable = false)
Run Code Online (Sandbox Code Playgroud)

我想为这些变量中的每一个制作'nullable = true'.如何从一开始就声明它或在创建新数据帧后将其切换?

scala apache-spark spark-dataframe

21
推荐指数
4
解决办法
2万
查看次数

对多列使用字符串索引器时无法执行用户定义的函数($anonfun$9: (string) => double)

我正在尝试在多列上应用字符串索引器。这是我的代码

val stringIndexers = Categorical_Model.map { colName =>new StringIndexer().setInputCol(colName).setOutputCol(colName + "_indexed")}

var dfStringIndexed = stringIndexers(0).fit(df3).transform(df3) // 'fit's a model then 'transform's data
for(x<-1 to stringIndexers.length-1)
{dfStringIndexed = stringIndexers(x).fit(dfStringIndexed).transform(dfStringIndexed)
}
dfStringIndexed = dfStringIndexed.drop(Categorical_Model: _*)
Run Code Online (Sandbox Code Playgroud)

Schema 显示所有可空的列都为 false

stringIndexers 数组显示如下

stringIndexers: Array[org.apache.spark.ml.feature.StringIndexer] = Array(strIdx_c53c3bdf464c, strIdx_61e685c520f7, strIdx_d6e59b2fc69d, ......)


dfStringIndexed.show(10)
Run Code Online (Sandbox Code Playgroud)

这会引发以下错误

org.apache.spark.SparkException: Failed to execute user defined function($anonfun$9: (string) =&gt; double)
Run Code Online (Sandbox Code Playgroud)

为什么显示打印模式但没有可用数据。

更新:如果我像这样手动循环字符串索引器而不是循环。此代码有效。这很奇怪。

var dfStringIndexed = stringIndexers(0).fit(df3).transform(df3) // 'fit's a model then 'transform's data
dfStringIndexed = stringIndexers(1).fit(dfStringIndexed).transform(dfStringIndexed)
dfStringIndexed = stringIndexers(2).fit(dfStringIndexed).transform(dfStringIndexed)
dfStringIndexed = stringIndexers(3).fit(dfStringIndexed).transform(dfStringIndexed)
dfStringIndexed …
Run Code Online (Sandbox Code Playgroud)

scala apache-spark apache-spark-mllib

7
推荐指数
1
解决办法
3888
查看次数