gpt4 book ai didi

scala - 无法使用 CSV 文件的 spark scala 显示数据帧记录

转载 作者:可可西里 更新时间:2023-11-01 15:49:27 27 4
gpt4 key购买 nike

我通过使用 map 函数将 RDD 转换为 DF 创建了 dataframe。当我尝试显示记录时,它给我 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]

但是当我尝试显示一些记录时它会抛出异常。以下是错误:

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: ""

下面是员工的数据集:

DATASET IMAGE

那么我哪里出错了??我被困了几个小时..

最佳答案

我通过创建 UDF 并在 map 函数中使用它解决了我的问题。以下是代码:

//Create case class for schema :

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);

// Create UDF’s for Long and double :

def getDoubleValue(value:String):Double= {
val output:Double=if (value != null && value.trim.length>0) {
value.toDouble
}else{
0D
}
output
}
def getLongValue(value:String):Long= {
val output:Long=if (value != null && value.trim.length>0) {
value.toLong
}else{
0L
}
output
}

// Create RDD

val rdd=sc.textFile("file:////home/hduser/Desktop/Employees/employees.txt").filter(p=>{p!=null && p.trim.length>0})


// Create DF

val df=rdd.map(_.split(",")).map(p=>employees(getLongValue(p(0)),p(1),p(2),getLongValue(p(3)),p(4),getDoubleValue(p(5)),getDoubleValue(p(6)),getLongValue(p(7)))).toDF()

// Display records:

df.show();

关于scala - 无法使用 CSV 文件的 spark scala 显示数据帧记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51695134/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com