package bl.test.spark
import org.apache.spark.sql.SparkSession
/**
* DataFrame中的操作操作
*/
object DataFrameCase {
def main(args: Array[String]) {
val spark = SparkSession.builder().appName("DataFrameRDDApp").master("local[2]").getOrCreate()
// RDD ==> DataFrame
val rdd = spark.sparkContext.textFile("file:///Users/rocky/data/student.data")
//注意:需要导入隐式转换
import spark.implicits._
val studentDF = rdd.map(_.split("\\|")).map(line => Student(line(0).toInt, line(1), line(2), line(3))).toDF()
//show默认只显示前20条
studentDF.show
studentDF.show(30)
studentDF.show(30, false)
//前10行
studentDF.take(10)
//第一行
studentDF.first()
studentDF.head(3)
//获取emaill的前30行 不截取
studentDF.select("email").show(30, false)
//名称为空的 或 Null
studentDF.filter("name=''").show
studentDF.filter("name='' OR name='NULL'").show
//name以M开头的人
studentDF.filter("SUBSTR(name,0,1)='M'").show
//按照name排序 默认升序
studentDF.sort(studentDF("name")).show
studentDF.sort(studentDF("name").desc).show
//按照name和id排序
studentDF.sort("name", "id").show
//按照name升序 id降序列
studentDF.sort(studentDF("name").asc, studentDF("id").desc).show
//别名查询
studentDF.select(studentDF("name").as("student_name")).show
//join查询
val studentDF2 = rdd.map(_.split("\\|")).map(line => Student(line(0).toInt, line(1), line(2), line(3))).toDF()
studentDF.join(studentDF2, studentDF.col("id") === studentDF2.col("id")).show
spark.stop()
}
case class Student(id: Int, name: String, phone: String, email: String)
}
DataFrame API 操作
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- Spark提供了三种主要的与数据相关的API: RDD DataFrame DataSet 下面详细介绍下各自的特...
- 一、Spark第一代api:RDDRDD:五大核心特征: 二、Spark第二代API:DataFrameDataF...
- 一、reindex() 方法:重新索引 针对 Series 的重新索引操作 重新索引指的是根据index参数重新进...