如何将一个 DataFrame 在不转换成 RDD 的情况下 将我查询出来的数据封装到一个样例里?

问答 岁月流年 ⋅ 于 2021-05-20 16:42:28 ⋅ 最后回复由 青牛 2021-05-20 20:57:03 ⋅ 1697 阅读
val bsInOut = spark.read.parquet(bsInOutPath).select("report_province", "imsi", "msisdn", "countryCode", "phone7", "countyId", "laccell", "procedureStartTime", "procedureEndTime", "longitude", "latitude").rdd

val personTrace = bsInOut.map(w => AreaInAndOutService.handleTraceInput(w))

def handleTraceInput(w: Row): PersonTrace = {
  PersonTrace(ChangeTool.StringValues(w.get(0)), ChangeTool.StringValues(w.get(1)), ChangeTool.StringValues(w.get(2)), ChangeTool.StringValues(w.get(3))
    , ChangeTool.StringValues(w.get(4)), ChangeTool.StringValues(w.get(5)), ChangeTool.StringValues(w.get(6)), w.get(7).toString.toLong, w.get(8).toString.toLong)
}
 def StringValues(value: Any) = {
    if (value != null) {
      value.toString
    }else{
      ""
      } 
    }

case class PersonTrace(report_province: String, imsi: String, msisdn: String, countryCode: String, phone7: String, countyId: String, laccell: String, procedureStartTime: Long, procedureEndTime: Long)
将上面的代码改为非RDD的格式求大神给一个解决方法
成为第一个点赞的人吧 :bowtie:
回复数量: 3
  • 青牛 海汼部落创始人,80后程序员一枚,曾就职于金山,喜欢倒腾技术做产品
    2021-05-20 16:48:57

    转成dataSet吧,使用隐式转换

    import session.implicits._

    还记得这里吗?

    file

  • 岁月流年
    2021-05-20 17:36:16

    用了,现在看看这边怎么说吧,破客户要求太多还不让用RDD
    @青牛

  • 青牛 海汼部落创始人,80后程序员一枚,曾就职于金山,喜欢倒腾技术做产品
    2021-05-20 20:57:03

    @赵震 客户是你们的衣食父母,你们对其任何要求无条件服从 :smiley:

暂无评论~~
  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,可用Emoji的自动补全, 在输入的时候只需要 ":" 就可以自动提示了 :metal: :point_right: 表情列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif,教程
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
Ctrl+Enter