zoukankan      html  css  js  c++  java
  • Spark SQL中 RDD 转换到 DataFrame (方法二)

    强调它与方法一的区别:当DataFrame的数据结构不能够被提前定义。例如:(1)记录结构已经被编码成字符串 (2) 结构在文本文件中,可能需要为不同场景分别设计属性等
    以上情况出现适用于以下方法。
    1.people.txt:
    soyo8, 35
    小周, 30
    小华, 19
    soyo,88

    /*
    * * Created by soyo on 17-10-10. * 使用编程方式定义RDD模式 */ import org.apache.spark.sql.types._ import org.apache.spark.sql.{Row, SparkSession} object RDD_To_DataFrame2 { def main(args: Array[String]): Unit = { val spark=SparkSession.builder().getOrCreate() val peopleRDD=spark.sparkContext.textFile("file:///home/soyo/桌面/spark编程测试数据/people.txt") val schema_S="name age" val fields=schema_S.split(" ").map(x=>StructField(x,StringType,nullable = true)) //生成模式 val schema=StructType(fields) val rowRDD=peopleRDD.map(_.split(",")).map(x=>Row(x(0),x(1).trim)) val peopleDF=spark.createDataFrame(rowRDD,schema) peopleDF.createOrReplaceTempView("people2") val results=spark.sql("select * from people2") results.show() results.groupBy("age").count().show() } }

    结果:
    +-----+---+
    | name|age|
    +-----+---+
    |soyo8| 35|
    |   小周| 30|
    |   小华| 19|
    | soyo| 88|
    +-----+---+

    +---+-----+
    |age|count|
    +---+-----+
    | 30|    1|
    | 35|    1|
    | 19|    1|
    | 88|    1|
    +---+-----+



  • 相关阅读:
    微信开放平台(公众号第三方平台) -- 全网发布
    SQL 邮件配置篇
    让BI告诉你:圣诞老人去哪了?
    锁定和行版本控制
    数据库质疑修复总结(转)
    抢救损坏数据库中的数据
    将 PAGE_VERIFY 数据库选项设置为 CHECKSUM
    replicate复制函数
    @@IDENTITY与SCOPE_IDENTITY()
    RESTORE DATABASE的standby选项
  • 原文地址:https://www.cnblogs.com/soyo/p/7647668.html
Copyright © 2011-2022 走看看