这是我要遵循的代码:
val ebayds = sc.textFile("/user/spark/xbox.csv")
case class Auction(auctionid: String, bid: Float, bidtime: Float, bidder: String, bidderrate: Int, openbid: Float, price: Float)
val ebay = ebayds.map(a=>a.split(",")).map(p=>Auction(p(0),p(1).toFloat,p(2).toFloat,p(3),p(4).toInt,p(5).toFloat,p(6).toFloat)).toDF()
ebay.select("auctionid").distinct.count
我得到的错误是:
For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
答案 0 :(得分:1)
DataFrame fill(double value)返回替换的新DataFrame 带有值的数字列中的空值。
DataFrame fill(double value,scala.collection.Seq cols)(Scala特定的)返回一个 新的DataFrame,用于替换指定数字列中的空值。
示例用法:
df.na.fill(0.0,Seq("your columnname"))
对于该列,空值将替换为0.0或任何默认值。
replace
对于使用默认值
替换公共DataFrame替换(String col, java.util.Map replacement)将替换映射中匹配键的值替换为相应的值。键 替换映射的值必须具有相同的类型,并且只能是 双打或弦乐。如果col是" *",则应用替换 所有字符串列或数字列。
导入com.google.common.collect.ImmutableMap;
//在列" height"中替换所有出现的1.0和2.0 df.replace(" height",ImmutableMap.of(1.0,2.0));
//替换所有出现的" UNKNOWN"与"未命名"在专栏中 "名称&#34 ;. df.replace(" name",ImmutableMap.of(" UNKNOWN"," unnamed"));
//替换所有出现的" UNKNOWN"与"未命名"在所有 字符串列。 df.replace(" *",ImmutableMap.of(" UNKNOWN", "未命名&#34));参数:col - 要应用值的列的名称 更换替换 - 价值替换地图,如上所述 返回:(未记录)从: 1.3.1
例如:
df.na.replace("your column", Map(""-> 0.0)))
答案 1 :(得分:0)
这对我有用。它返回了一个数据帧。此处A
和B
是列,1.0
和"unknown"
是要替换的值。
df.na.fill(Map("A" -> "unknown","B" -> 1.0))