大数据随记 —— DataFrame 数据操作
原创
©著作权归作者所有:来自51CTO博客作者繁依Fanyi的原创作品,请联系作者获取转载授权,否则将追究法律责任
大数据系列文章:👉 目录 👈
文章目录
- 一、DataFrame SQL 数据操作
- 二、DataFrame API 数据操作
DataFrame 数据操作有两种操作数据的方式,一种是使用 DataFrame所支持的 SQL 语法进行数据操作,另一种使用 DataFrame 提供的相关 API 对数据进行操作。
一、DataFrame SQL 数据操作
通过 SQLContext 的 sql 方法,即可使用我们熟悉的 SQL 语法进行数据操作。
package sparksql
import org.apache.spark.sql.SQLContext
import org.apache.spark.{SparkConf, SparkContext}
object DataFrameSQL {
def main(args: Array[String]): Unit = {
val sparkConf = new SparkConf().setMaster("local[2]").setAppName("DataFrameSQL")
val sc = new SparkContext(sparkConf)
// 创建 SQLContext 对象
val sqlContext = new SQLContext(sc)
// 从 JSON 中创建 DataFrame 对象
val df = sqlContext.read.json("resources/json/people.json")
// 使用 SQLContext 的 sql 方法对数据进行操作 ✨✨
sqlContext.sql("select * from people where age>21")
df.show()
sc.stop()
}}
二、DataFrame API 数据操作
DataFrame 也提供了特定的 API 让我们操作 DataFrame 中的数据,也被称为 DSL(Domain-Specific Language,即领域特定语言)。使用 DSL 语法风格就不必去创建临时视图了。
package sparksql
import org.apache.spark.sql.SQLContext
import org.apache.spark.{SparkConf, SparkContext}
object DataFrameAPI {
def main(args: Array[String]): Unit = {
val sparkConf = new SparkConf().setMaster("local[2]").setAppName("DataFrameAPI")
val sc = new SparkContext(sparkConf)
val sqlContext = new SQLContext(sc)
// 使用 SQLContext 将 JSON 文件转成 DataFrame
val df = sqlContext.read.json("resources/json/people.json")
// 使用 show 方法将 DataFrame 的内容输出 ✨✨
df.show()
// 使用 printSchema 方法输出 DataFrame 的 Scheme 信息 ✨✨
df.printSchema()
// 使用 select 方法来选择所需要的字段,这里则选择 name 字段 ✨✨
df.select("name").show()
// 使用 select 方法选择所需要的字段,并为 age 字段加 1 ✨✨
df.select(df("name"),df("age")+1).show()
// 使用 filter 方法完成条件过滤,这里过滤 age > 21 的数据并打印 ✨✨
df.filter(df("age")>21).show()
// 使用 groupBy 方法进行分组,求分组后的总数 ✨✨
df.groupBy("age").count().show()
sc.stop()
}
}