一零一二、Spark

阅读: 评论:0

一零一二、Spark

一零一二、Spark

输入文件

 

代码

package example.spark.sqlimport org.apache.log4j.{Level, Logger}
import org.apache.spark.SparkContext
import org.apache.spark.rdd.RDD
import org.apache.spark.sql.{DataFrame, Dataset, Row, SparkSession}object RDD_DF_DS {def main(args: Array[String]): Unit = {val spark: SparkSession = SparkSession.builder().appName("sparksql").master("local[6]").config("spark.sql.warehouse.dir", "E:/").getOrCreate()val sc: SparkContext = Logger("org").setLevel(Level.ERROR)val lines: RDD[String] = sc.textFile("data/input/csv")//    val personRDD: RDD[(Int,String,Int)] = lines.map(line => {val personRDD: RDD[Person] = lines.map(line => {val str: Array[String] = line.split(",")//      (str(0).toInt, str(1), str(2).toInt)Person(str(0).toInt, str(1), str(2).toInt)})//转换1: RDD->DFimport spark.implicits._val personDF: DataFrame = DF("id", "name", "age")//转换2:RDD->DSval personDS: Dataset[Person] = DS()//转换3:DF->RDD   DF没有泛型val rdd: RDD[Row] = personDF.rdd//转换4:DS->RDDval rdd1: RDD[Person] = personDS.rdd//转换5:DF-->DSval ds: Dataset[Person] = personDF.as[Person]//转换6:DS-->DFval df: DataFrame = DF()personDF.show()personDS.show()rdd.foreach(println)rdd1.foreach(println)//关闭资源spark.stop()}case class Person(id: Int, name: String, age: Int)
}

结果打印

+---+--------+---+
| id|    name|age|
+---+--------+---+
|  1|zhangsan| 20|
|  2|    lisi| 29|
|  3|  wangwu| 25|
|  4| zhaoliu| 30|
|  5|  tianqi| 35|
|  6|    kobe| 40|
+---+--------+---++---+--------+---+
| id|    name|age|
+---+--------+---+
|  1|zhangsan| 20|
|  2|    lisi| 29|
|  3|  wangwu| 25|
|  4| zhaoliu| 30|
|  5|  tianqi| 35|
|  6|    kobe| 40|
+---+--------+---+[1,zhangsan,20]
[2,lisi,29]
[4,zhaoliu,30]
[3,wangwu,25]
[5,tianqi,35]
[6,kobe,40]
Person(1,zhangsan,20)
Person(4,zhaoliu,30)
Person(5,tianqi,35)
Person(6,kobe,40)
Person(2,lisi,29)
Person(3,wangwu,25)

1)DF/DS转RDD
Val Rdd = DF/DS.rdd
2) DS/RDD转DF
import spark.implicits._
调用 toDF(就是把一行数据封装成row类型)
3)RDD转DS
将RDD的每一行封装成样例类,再调用toDS方法
4)DF转DS
根据row字段定义样例类,再调用asDS方法[样例类]

特别注意:在使用一些特殊的操作时,一定要加上 import spark.implicits._ 不然toDF、toDS无法使用。

本文发布于:2024-02-04 19:00:26,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170714243258590.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:Spark
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23