• 2020寒假学习记录(14)——.编程实现将 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 的所有数据。请写出程序代码。 

    scala> import org.apache.spark.sql.types._
    import org.apache.spark.sql.types._
    
    scala> import org.apache.spark.sql.Row
    import org.apache.spark.sql.Row
    
    scala> val peopleRDD = spark.sparkContext.textFile("file:///home/hadoop/77/employee.txt")
    peopleRDD: org.apache.spark.rdd.RDD[String] = file:///home/hadoop/77/employee.txt MapPartitionsRDD[1] at textFile at <console>:27
    
    scala> val schemaString = "id name age"
    schemaString: String = id name age
    
    scala> val fields = schemaString.split(" ").map(fieldName => StructField(fieldName, StringType, nullable = true))
    fields: Array[org.apache.spark.sql.types.StructField] = Array(StructField(id,StringType,true), StructField(name,StringType,true), StructField(age,StringType,true))
    
    scala> val schema = StructType(fields)
    schema: org.apache.spark.sql.types.StructType = StructType(StructField(id,StringType,true), StructField(name,StringType,true), StructField(age,StringType,true))
    
    scala> val rowRDD = peopleRDD.map(_.split(",")).map(attributes => Row(attributes(0), attributes(1).trim, attributes(2).trim))
    rowRDD: org.apache.spark.rdd.RDD[org.apache.spark.sql.Row] = MapPartitionsRDD[3] at map at <console>:29
    
    scala> val peopleDF = spark.createDataFrame(rowRDD, schema)
    peopleDF: org.apache.spark.sql.DataFrame = [id: string, name: string ... 1 more field]
    
    scala> peopleDF.createOrReplaceTempView("people")
    
    scala> val results = spark.sql("SELECT id,name,age FROM people")
    results: org.apache.spark.sql.DataFrame = [id: string, name: string ... 1 more field]
    
    scala> results.map(attributes => "id: " + attributes(0)+","+"name:"+attributes(1)+","+"age:"+attributes(2)).show()
    +--------------------+                                                          
    |               value|
    +--------------------+
    |id: 1,name:Ella,age:36|
    |id: 2,name:Bob,age:29|
    |id: 3,name:Jack,age:29|
    +--------------------+
  • 相关阅读:
    cookie、 sessionStorage 、localStorage之间的区别和使用
    CSS清除浮动大全共8种方法
    需要了解的前端常用js库
    let与const的区别
    java webservice的多种实现方法汇总
    iframe和frame的区别
    Iframe的应用以及父窗口和子窗口的相互访问
    HTML5标签改变
    flex之组件简单应用
    Flex控件之repeater和radioButton应用
  • 原文地址:https://www.cnblogs.com/Qi77/p/12324150.html
Copyright © 2020-2023  润新知