这是我关注的代码:
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)
使用 DataFrameNaFunctions
dataframe填充(双值)返回一个替换的新数据框 具有值的数字列中的空值。
dataframe填充(双 值,scala.collection.seq cols)(特定于scala)返回 替代指定数字列中的空值的新数据框。
示例用法:
df.na.fill(0.0,Seq("your columnname"))
对于该列的空值将被0.0替换或任何默认值。
replace
也可用于用默认值替换空字符串
替换公共数据框架替换(字符串col,, java.util.map替换)将替换映射中匹配键的值替换为相应的值。钥匙 替换图的价值必须具有相同的类型,只能是 双打或弦。如果col为"*",则将替换应用于 所有字符串列或数字列。
导入com.google.common.collect.immutablemap;
//用2.0在"高度"中替换所有1.0的出现。
df.Replace("高度",ImmutableMap.of(1.0,2.0));//用列中的"未知"替换所有"未知"的出现 "姓名"。df.replace("名称",immutableMap.of("未知","未命名"));
//替换所有出现的"未知"的出现在所有人中 字符串列。df.replace("*",immutableMap.of("未知", "未命名"));参数:col-应用值的列的名称 替换替换 - 价值更换图,如上所述 返回:(无证件)自: 1.3.1
例如:
df.na.replace("your column", Map(""-> 0.0)))
这对我有用。它返回了数据框。这里A
和B
是列,1.0
和"unknown"
是要替换的值。
df.na.fill(Map("A" -> "unknown","B" -> 1.0))