我在Hadoop中有以下文件
$row = 1;
if (($handle = fopen("test.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
echo "<p> $num Felder in Zeile $row: <br /></p>\n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />\n";
}
}
fclose($handle);
}
看起来像这样
val dataset=sc.textFile("/user/hue/mycompanies1.csv")
我的scala / Spark代码如下:
CS,84,Jimmys Bistro, Jimmys
CS,90,Pauls Fish
CS,100, Happy Hardware
当我在获得nullpointerexception后尝试访问公司RDD时,因为数据中缺少昵称值。我如何优雅地处理这个问题?
答案 0 :(得分:2)
由于昵称是可选的,我会更改案例类以反映它,然后使用各种方法之一来选择性地获取index-3元素,例如:
case class Company (
record_type: String,
company_num: Integer,
company_name: String,
nickname: Option[String]
)
val company = dataset.map(k=>k.split(",")).map(
k => Company(k(0).trim, k(1).toInt, k(2).trim, k.drop(3).headOption.map(_.trim))