Getting Started

Spark SQL QuickStart

Getting Started

Spark SQL QuickStart - 2.4.5 - CN

创建 DataFrame、DataSet


起始点 Spark Session

SparkSession 类是 Spark 中所有功能的入口点。要创建一个基本的 SparkSession,只需使用SparkSession.builder():

import org.apache.spark.sql.SparkSession

val spark = SparkSession
  .builder()
  .appName("Spark SQL basic example")
  .config("spark.some.config.option", "some-value")
  .getOrCreate()

// For implicit conversions like converting RDDs to DataFrames
import spark.implicits._

SparkSessionSpark 2.0 中的内置支持Hive功能,包括使用 HiveQL 编写查询,访问 Hive UDF 以及从 Hive 表读取数据的功能。

创建 DataFrame

可以现有的 RDD、Hive Table 或其他 Spark DataSource 创建 DataFrame

val df = spark.read.json("examples/src/main/resources/people.json")

// Displays the content of the DataFrame to stdout
df.show()
// +----+-------+
// | age|   name|
// +----+-------+
// |null|Michael|
// |  30|   Andy|
// |  19| Justin|
// +----+-------+

创建 DataSet

Spark 支持由内部数据集和外部数据集来创建 DataSet,其创建方式分别如下:

1)由外部数据集创建

Spark DataSet 支持 Hive Table 或其他 Spark DataSource 外部数据集。

// 1.需要导入隐式转换
import spark.implicits._

// 2.创建 case class,等价于 Java Bean
case class Emp(ename: String, comm: Double, deptno: Long, empno: Long, 
               hiredate: String, job: String, mgr: Long, sal: Double)

// 3.由外部数据集创建 Datasets
val ds = spark.read.json("/usr/file/emp.json").as[Emp]
ds.show()

2)由内部数据集创建

// 1.需要导入隐式转换
import spark.implicits._

// 2.创建 case class,等价于 Java Bean
case class Emp(ename: String, comm: Double, deptno: Long, empno: Long, 
               hiredate: String, job: String, mgr: Long, sal: Double)

// 3.由内部数据集创建 Datasets
val caseClassDS = Seq(Emp("ALLEN", 300.0, 30, 7499, "1981-02-20 00:00:00", "SALESMAN", 7698, 1600.0),
                      Emp("JONES", 300.0, 30, 7499, "1981-02-20 00:00:00", "SALESMAN", 7698, 1600.0))
                    .toDS()
caseClassDS.show()