SparkSQL

Spark SQL and DataFrame

Spark1.3 的SparkSQL是对结构型数据进行处理的一个模块,主要是对抽象的DataFrames进行SQL的常见的操作,而DataFrames可以从多种数据源转换而来,例如:结构型data files,tables in hive,外部数据库,或者已经存在的RDD。

1、起点:SQLCOntext

开发sparkSQL应用,你需要SQLContext,创建一个SparkSQL,你需要一个SparkContext

val sc: SparkContext // An existing SparkContext.
val sqlContext = new org.apache.spark.sql.SQLContext(sc)

// this is used to implicitly convert an RDD to a DataFrame.
import sqlContext.implicits._

2、创建DataFrames

有了SQlContext,就可以用产生一个DataFrames了。

val sc: SparkContext // An existing SparkContext.
val sqlContext = new org.apache.spark.sql.SQLContext(sc)

val df = sqlContext.jsonFile("examples/src/main/resources/people.json")

// Displays the content of the DataFrame to stdout
df.show()

3、有了DataFrames之后,我们就可以对其进行操作了

val sc: SparkContext // An existing SparkContext.
val sqlContext = new org.apache.spark.sql.SQLContext(sc)

// Create the DataFrame
val df = sqlContext.jsonFile("examples/src/main/resources/people.json")

// Show the content of the DataFrame
df.show()
// age  name
// null Michael
// 30   Andy
// 19   Justin

// Print the schema in a tree format
df.printSchema()
// root
// |-- age: long (nullable = true)
// |-- name: string (nullable = true)

// Select only the "name" column
df.select("name").show()
// name
// Michael
// Andy
// Justin

// Select everybody, but increment the age by 1
df.select("name", df("age") + 1).show()
// name    (age + 1)
// Michael null
// Andy    31
// Justin  20

// Select people older than 21
df.filter(df("name") > 21).show()
// age name
// 30  Andy

// Count people by age
df.groupBy("age").count().show()
// age  count
// null 1
// 19   1
// 30   1

后续还有很多内容会贴上。。。。。

你可能感兴趣的:(spark,RDD)