Spark-SQL实验5.2

2.编程实现将 RDD 转换为 DataFrame
import org.apache.spark.sql.catalyst.encoders.ExpressionEncoder
import org.apache.spark.sql.Encoder
import spark.implicits._
object RDDtoDF {
 def main(args: Array[String]) {
case class Employee(id:Long,name: String, age: Long)
val employeeDF = 
spark.sparkContext.textFile("file:///usr/local/spark/employee.txt").map(_.split(",")).map(at
tributes => Employee(attributes(0).trim.toInt,attributes(1), attributes(2).trim.toInt)).toDF()
employeeDF.createOrReplaceTempView("employee")
val employeeRDD = spark.sql("select id,name,age from employee")
employeeRDD.map(t => "id:"+t(0)+","+"name:"+t(1)+","+"age:"+t(2)).show()
 } }

  

方法二:使用编程接口,构造一个 schema 并将其应用在已知的 RDD 上。
import org.apache.spark.sql.types._import org.apache.spark.sql.Encoder
import org.apache.spark.sql.Row
object RDDtoDF {
 def main(args: Array[String]) {
val employeeRDD =
spark.sparkContext.textFile("file:///usr/local/spark/employee.txt")
val schemaString = "id name age"
val fields = schemaString.split(" ").map(fieldName => StructField(fieldName, 
StringType, nullable = true))
val schema = StructType(fields)
val rowRDD = employeeRDD.map(_.split(",")).map(attributes => 
Row(attributes(0).trim, attributes(1), attributes(2).trim))
val employeeDF = spark.createDataFrame(rowRDD, schema)
employeeDF.createOrReplaceTempView("employee")
val results = spark.sql("SELECT id,name,age FROM employee")
results.map(t => "id:"+t(0)+","+"name:"+t(1)+","+"age:"+t(2)).show()
 } }

  

posted @ 2022-02-28 14:26  青竹之下  阅读(90)  评论(0编辑  收藏  举报