<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.11</artifactId>
<version>2.4.5</version>
</dependency>
package com.shujia.sql
import org.apache.spark.SparkContext
import org.apache.spark.rdd.RDD
import org.apache.spark.sql.{DataFrame, SparkSession}
object Demo01SparkSessio {
def main(args: Array[String]): Unit = {
//创建一个Spark SQL的入口 SparkSession
val spark: SparkSession = SparkSession
.builder()
.appName("Demo01SparkSessio")
.master("local")
.getOrCreate()
//获取SparkContext
val sc: SparkContext = spark.sparkContext
//通过SparkContext读取文件
val stuRDD: RDD[String] = sc.textFile("Spark/data/students.txt")
//打印
stuRDD.take(10).foreach(println)
//通过SparkSession读取文件
val stuDF: DataFrame = spark
.read
.format("csv") //指定读取文件的格式
.option("sep", ",") //指定分隔符
.schema("id String,name String,age Int,gender String,clazz String")
.load("Spark/data/students.txt")
//打印
stuDF.show(10)//指定打印的行数
stuDF.show(5,false)//如果某列数据太长 默认会被截断
stuDF.show()//如果什么都不指定 默认打印20条
}
}
1500100001,施笑槐,22,女,文科六班
1500100002,吕金鹏,24,男,文科六班
1500100003,单乐蕊,22,女,理科六班
1500100004,葛德曜,24,男,理科三班
1500100005,宣谷芹,22,女,理科五班
1500100006,边昂雄,21,男,理科二班
1500100007,尚孤风,23,女,文科六班
1500100008,符半双,22,女,理科六班
1500100009,沈德昌,21,男,理科一班
1500100010,羿彦昌,23,男,理科六班+----------+------+---+------+--------+
| id| name|age|gender| clazz|
+----------+------+---+------+--------+
|1500100001|施笑槐| 22| 女|文科六班|
|1500100002|吕金鹏| 24| 男|文科六班|
|1500100003|单乐蕊| 22| 女|理科六班|
|1500100004|葛德曜| 24| 男|理科三班|
|1500100005|宣谷芹| 22| 女|理科五班|
|1500100006|边昂雄| 21| 男|理科二班|
|1500100007|尚孤风| 23| 女|文科六班|
|1500100008|符半双| 22| 女|理科六班|
|1500100009|沈德昌| 21| 男|理科一班|
|1500100010|羿彦昌| 23| 男|理科六班|
+----------+------+---+------+--------+
only showing top 10 rows+----------+------+---+------+--------+
|id |name |age|gender|clazz |
+----------+------+---+------+--------+
|1500100001|施笑槐|22 |女 |文科六班|
|1500100002|吕金鹏|24 |男 |文科六班|
|1500100003|单乐蕊|22 |女 |理科六班|
|1500100004|葛德曜|24 |男 |理科三班|
|1500100005|宣谷芹|22 |女 |理科五班|
+----------+------+---+------+--------+
only showing top 5 rows
+----------+------+---+------+--------+
| id| name|age|gender| clazz|
+----------+------+---+------+--------+
|1500100001|施笑槐| 22| 女|文科六班|
|1500100002|吕金鹏| 24| 男|文科六班|
|1500100003|单乐蕊| 22| 女|理科六班|
|1500100004|葛德曜| 24| 男|理科三班|
|1500100005|宣谷芹| 22| 女|理科五班|
|1500100006|边昂雄| 21| 男|理科二班|
|1500100007|尚孤风| 23| 女|文科六班|
|1500100008|符半双| 22| 女|理科六班|
|1500100009|沈德昌| 21| 男|理科一班|
|1500100010|羿彦昌| 23| 男|理科六班|
|1500100011|宰运华| 21| 男|理科三班|
|1500100012|梁易槐| 21| 女|理科一班|
|1500100013|逯君昊| 24| 男|文科二班|
|1500100014|羿旭炎| 23| 男|理科五班|
|1500100015|宦怀绿| 21| 女|理科一班|
|1500100016|潘访烟| 23| 女|文科一班|
|1500100017|高芷天| 21| 女|理科五班|
|1500100018|骆怜雪| 21| 女|文科六班|
|1500100019|娄曦之| 24| 男|理科三班|
|1500100020|杭振凯| 23| 男|理科四班|
+----------+------+---+------+--------+
only showing top 20 rows
package com.shujia.sql
import org.apache.spark.rdd.RDD
import org.apache.spark.sql.{DataFrame, Row, SparkSession}
object Demo02WordCount {
def main(args: Array[String]): Unit = {
//创建SparkSession
val spark: SparkSession = SparkSession
.builder()
.appName("Demo02WordCount")
.master("local")
.config("s

本文展示了如何使用Spark SQL处理CSV数据,包括读取、转换、统计单词频率以及利用窗口函数计算累计收入和增长率。示例中详细演示了DataFrame API和DSL两种方法,涉及explode、sum、lag等函数。
915

被折叠的 条评论
为什么被折叠?



