我创造了 dataframe
通过转换 RDD
至 DF
使用map函数。当我试图显示记录时,它给了我 exception
.
下面是我的代码:
//Created case class
case class employees(emp_id:java.lang.Long,emp_name:String, job_name:String,manager_id:java.lang.Long,hire_date:String,salary:java.lang.Double,commision:java.lang.Double,dep_id:java.lang.Long);
// Created DF
val employeesDf=rd1.map(_.split(",")).map(p=>employees(p(0).toLong,p(1),p(2),p(3).toLong,p(4),p(5).toDouble,p(6).toDouble,p(7).toLong)).toDF()
//Schema
scala> employeesDf
res5: org.apache.spark.sql.DataFrame = [emp_id: bigint, emp_name: string, job_name: string, manager_id: bigint, hire_date: string, salary: double, commision: double, dep_id: bigint]
但是当我试图显示一些记录时,它抛出了一个异常。下面是 error
:
scala> employeesDf.show()
18/08/05 07:08:43 ERROR executor.Executor: Exception in task 0.0 in stage 1.0 (TID 1)
java.lang.NumberFormatException: For input string: ""
以下是员工的数据集:
数据集图像
那我哪里做错了??我被困了好几个小时。。
2条答案
按热度按时间vshtjzan1#
你的
dataframe's
某些列包含empty strings
你在试图parsing
让他们double
,long
. 所以要么改变这些column
至strings
以防分类或使用if-else
根据您的业务需求分析时的条件。就像下面一样anauzrmj2#
我通过创建自定义项并在map函数中使用它来解决我的问题。以下是代码: