DataFrame格式化和RDD/Dataset/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 }







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











本文转自 chengxuyonghu 51CTO博客,原文链接:http://blog.51cto.com/6226001001/1895956,如需转载请自行联系原作者
目录
相关文章
|
SQL 数据挖掘 数据处理
DataFrame(4):DataFrame的创建方式
DataFrame(4):DataFrame的创建方式
DataFrame(4):DataFrame的创建方式
|
7月前
|
存储 SQL 大数据
Pandas DataFrame 数据存储格式比较
Pandas 支持多种存储格式,在本文中将对不同类型存储格式下的Pandas Dataframe的读取速度、写入速度和大小的进行测试对比。
134 0
|
3月前
|
JSON 分布式计算 关系型数据库
Spark中使用DataFrame进行数据转换和操作
Spark中使用DataFrame进行数据转换和操作
pandas list\dict 转换为DataFrame
pandas list\dict 转换为DataFrame
pandas list\dict 转换为DataFrame
|
10月前
|
索引 Python
pandas把Series组合成DataFrame
pandas把Series组合成DataFrame
|
11月前
|
SQL JSON 分布式计算
DataFrame(1):DataFrame结构的详细介绍(二)
DataFrame(1):DataFrame结构的详细介绍(二)
DataFrame(1):DataFrame结构的详细介绍(二)

热门文章

最新文章