scala - 无法将 scala 对象转换为 spark 数据帧
问题描述
我有一个scala
对象被传递给该dashBoardInsert
方法,并且我已经交叉检查我正在通过参数接收数据。
现在我想将其转换为dataframe
,但出现以下错误:
def dashBoardInsert(data: TripHistoryData) {
println("seven..")
println("data= " + data.asset_id)
var Seq2=sc.parallelize(Seq(data.service_id,data.asset_id,"odometer", "calculated",data.odometer,new Date(System.currentTimeMillis()), new Date(System.currentTimeMillis()), data.asset_serial_no))
import sparkSession.implicits._
val df1 = Seq2.toDF("data.service_id","data.asset_id","odometer", "calculated","data.odometer","new Date(System.currentTimeMillis())","new Date(System.currentTimeMillis())", "data.asset_serial_no"))
-----------------------------------------------------------------------------
Error:
value toDF is not a member of org.apache.spark.rdd.RDD[Comparable[_ >: java.util.Date with String with Long <: Comparable[_ >: java.util.Date with String with Long <: java.io.Serializable] with java.io.Serializable] with java.io.Serializable]
请帮我解决问题。
解决方案
您创建内部包含不同类型元素的数据框。
Seq(data.service_id,data.asset_id,"odometer", "calculated",data.odometer,new Date(System.currentTimeMillis()), new Date(System.currentTimeMillis()), data.asset_serial_no)
是Seq[Any]
,但你需要Seq
在里面有元组。
你应该写:
val tuple = (data.service_id,data.asset_id,"odometer", "calculated",data.odometer,new Date(System.currentTimeMillis()), new Date(System.currentTimeMillis()), data.asset_serial_no)
val local = Seq(tuple)
var distrebuted = sc.parallelize(localSeq)
val df = distrebuted.toDF("data.service_id","data.asset_id","odometer", "calculated","data.odometer","new Date(System.currentTimeMillis())","new Date(System.currentTimeMillis())", "data.asset_serial_no")
推荐阅读
- javascript - 错误:无法读取未定义的属性“名称”?
- ios - “[Course]”类型的 SwfitUI-Value 没有“已识别”成员
- angular - ionic - 手动添加的 js 文件没有被编译
- observable - 使服务可观察等待直到收到来自其他可观察的响应 - 角度 9
- javascript - REGEX替换功能不适用于Apps脚本中字符串末尾的换行符
- android - ViewModel,带有 Firestore 的 LiveData 导致 StackOverflowError:堆栈大小 8MB
- java - Firebase 查询 startAt()
- flutter - 关闭键盘时 Flutter TextFormFields 清除
- django - Django自定义用户密码没有被散列
- c - 示波器从 UART 读取正确的数据,但不是接收微控制器