zoukankan      html  css  js  c++  java
  • DataFrame格式化

    1.如果是格式化成Json的話直接    

    val rdd = df.toJSON.rdd

    2.如果要指定格式需要自定义函数如下:

    //格式化具体字段条目

    def formatItem(p:(StructField,Any)):String={
      p match {
        case (sf,a) =>
          sf.dataType match {
            case StringType => """ + sf.name + "":"" + a + """
            case IntegerType => """ + sf.name + "":" + a
            case LongType => """ + sf.name + "":" + a
            case StructType(s) => """ + sf.name + "":" + formatStruct(s, a.asInstanceOf[Row])
          }
        }
     }

    //格式化整行数据格式
    def formatStruct(schema:Seq[StructField],r:Row)= {
      val paired = schema.zip(r.toSeq)
      "{" + paired.foldLeft("")((s,p) => (if(s == "") "" else (s + ", ")) + formatItem(p)) + "}"
     }

    //格式化整个DF
    def formatDataFrame(st:StructType,srdd:DataFrame)={
      srdd.rdd.map(formatStruct(st.fields,_))
    }

    调用示例:

    val strings = formatDataFrame(df.schema, df)

    strings.foreach { println }

  • 相关阅读:
    HDU 1051 Wooden Sticks (贪心)
    PHP中递归函数的一个常见逻辑问题
    【Android界面实现】使用Canvas对象实现“刮刮乐”效果
    vue2.0
    vuex3
    nodejs中require的路径是一个文件夹时发生了什么
    vue2
    vuex
    echarts
    node21---mongoose
  • 原文地址:https://www.cnblogs.com/ciade/p/6180017.html
Copyright © 2011-2022 走看看