DataFrame格式化和RDD/Dataset/DataFrame互转
来源:互联网 发布:linux initctl命令 编辑:程序博客网 时间:2024/04/29 18:06
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 }
1.RDD -> Dataset
val ds = rdd.toDS()
2.RDD -> DataFrame
val df = spark.read.json(rdd)
3.Dataset -> RDD
val rdd = ds.rdd
4.Dataset -> DataFrame
val df = ds.toDF()
5.DataFrame -> RDD
val rdd = df.toJSON.rdd
6.DataFrame -> Dataset
val ds = df.toJSON
转载于http://www.cnblogs.com/ciade/
- DataFrame格式化和RDD/Dataset/DataFrame互转
- RDD/Dataset/DataFrame互转
- 区别RDD、DataFrame和DataSet
- RDD, DataFrame or Dataset
- RDD/DataSet/DataFrame
- RDD,DataFrame,DataSet区别
- RDD,DataFrame与DataSet
- RDD, DataFrame or Dataset
- RDD、DataFrame、Dataset介绍
- RDD和DataFrame和Dataset比较
- Spark RDD、DataFrame和DataSet的区别
- RDD、DataFrame和DataSet的区别
- Spark RDD、DataFrame和DataSet的区别
- Spark RDD、DataFrame和DataSet的区别
- RDD、DataFrame和DataSet的区别
- RDD、DataFrame和DataSet的区别
- RDD、DataFrame和DataSet的区别
- Spark RDD、DataFrame、DataSet区别和联系
- java 中String和StringBuffer区别
- c头文件中的__THROW
- 入门训练 序列求和
- struts2.0中Struts.xml配置详解
- 排序算法 之 快速排序
- DataFrame格式化和RDD/Dataset/DataFrame互转
- 在页面上打开连接窗口
- crontab
- C语言基础 - 实现单向链表
- App审核的时间
- Kubernetes1.6新特性-不回收静态POD
- Nexus使用说明
- 遍历Map的四种方法
- 蓝桥-最短路径2-Dijstra