0
Spark數據幀df
的每一行在列rawFV
中包含製表符分隔的字符串。我已經知道在選項卡上分割將產生所有行的array of 3 strings
。這可以通過驗證:火花數據幀中的標記器API
df.map(row => row.getAs[String]("rawFV").split("\t").length != 3).filter(identity).count()
,並確保計數確實0
。
我的問題是:如何使用管道API做到這一點?
這裏是我的嘗試:
val tabTok = new RegexTokenizer().setInputCol("rawFV").setOutputCol("tk").setPattern("\t")
val pipeline = new Pipeline().setStages(Array(tabTok))
val transf = pipeline.fit(df)
val df2 = transf.transform(df)
df2.map(row => row.getAs[Seq[String]]("tk").length != 3).filter(identity).count()
這不等於0
。
該問題與缺失值的存在有關。例如:
與RegexTokenizer
管道代碼將在所述第二返回第一行上的3個字段,但只有2。另一方面,第一個代碼將正確地返回3個字段。
如果您提供可用於重現問題的示例數據,它將更加有用。 – zero323
它與缺失值的存在有關。例如,如果您有一個像這樣的製表符分隔的文件:「a \ ta \ ta \ nb \ t \ tb」。我會在第一行中得到3個字段,但在第二個字段中只能有2個 – ranlot
可以將此添加到問題中? – zero323