赞
踩
编程 实 现将 RDD 转换 为 DataFrame 源 文件 内容 如下( 包含 id, name, age):
1, Ella, 36
2, Bob, 29
3, Jack, 29
请将 数据 复制 保存 到 Linux 系统 中, 命名为 employee.txt, 实现 从 RDD 转换 得
到 DataFrame, 并按“ id: 1, name: Ella, age: 36” 的 格式 打 印出 DataFrame 的 所有
数据。 请写出程序 代码。
- import org.apache.spark.sql.SparkSession
- import org.apache.spark.sql.types.StringType
- import org.apache.spark.sql.types.StructField
- import org.apache.spark.sql.types.StructType
- import org.apache.spark.sql.Row
- import org.apache.spark.sql.types.IntegerType
-
- object homework {
-
- case class Student(id:Int,name:String,age:Int)
- def main(args:Array[String])
- {
-
- val spark=SparkSession.builder().master("local").appName("RDD2Dataset").getOrCreate()
- import spark.implicits._
- dynamicCreate(spark)
- }
-
-
-
- /**
- * 动态转换
- * @param spark
- */
- private def dynamicCreate(spark:SparkSession):Unit={
- val stuRDD=spark.sparkContext.textFile("E:/file/employee.txt")
- import spark.implicits._
- val schemaString="id,name,age"
- val fields=schemaString.split(",").map(fieldName => StructField(fieldName, StringType, nullable = true))
- val schema=StructType(fields)
- val rowRDD=stuRDD.map(_.split(",")).map(parts⇒Row(parts(0),parts(1),parts(2)))
- val stuDf=spark.createDataFrame(rowRDD, schema)
- stuDf.printSchema()
- stuDf.createOrReplaceTempView("people")
- // val nameDf=spark.sql("select name from people where age<20")
- // //nameDf.write.text("result") //将查询结果写入一个文件
- // nameDf.show()
-
- val results = spark.sql("SELECT id,name,age FROM people")
-
- results.map(attributes => "id: " + attributes(0)+","+"name:"+attributes(1)+","+"age:"+attributes(2)).show()
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。