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|
+---+-----+



 

转载于:https://www.cnblogs.com/soyo/p/7647668.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值