Spark SQL中 RDD 转换到 DataFrame (方法二)
生活随笔
收集整理的這篇文章主要介紹了
Spark SQL中 RDD 转换到 DataFrame (方法二)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
強(qiáng)調(diào)它與方法一的區(qū)別:當(dāng)DataFrame的數(shù)據(jù)結(jié)構(gòu)不能夠被提前定義。例如:(1)記錄結(jié)構(gòu)已經(jīng)被編碼成字符串 (2) 結(jié)構(gòu)在文本文件中,可能需要為不同場景分別設(shè)計屬性等
以上情況出現(xiàn)適用于以下方法。
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編程測試數(shù)據(jù)/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()}}
結(jié)果:
+-----+---+
| name|age|
+-----+---+
|soyo8| 35|
|?? 小周| 30|
|?? 小華| 19|
| soyo| 88|
+-----+---+
+---+-----+
|age|count|
+---+-----+
| 30|??? 1|
| 35|??? 1|
| 19|??? 1|
| 88|??? 1|
+---+-----+
以上情況出現(xiàn)適用于以下方法。
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編程測試數(shù)據(jù)/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()}}
結(jié)果:
+-----+---+
| name|age|
+-----+---+
|soyo8| 35|
|?? 小周| 30|
|?? 小華| 19|
| soyo| 88|
+-----+---+
+---+-----+
|age|count|
+---+-----+
| 30|??? 1|
| 35|??? 1|
| 19|??? 1|
| 88|??? 1|
+---+-----+
?
轉(zhuǎn)載于:https://www.cnblogs.com/soyo/p/7647668.html
總結(jié)
以上是生活随笔為你收集整理的Spark SQL中 RDD 转换到 DataFrame (方法二)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 51 N 皇后
- 下一篇: 1290. 二进制链表转整数