2 回答

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
創(chuàng)建 SQLContext
Spark SQL 中所有相關(guān)功能的入口點(diǎn)是 SQLContext 類(lèi)或者它的子類(lèi), 創(chuàng)建一個(gè) SQLContext 的所有需要僅僅是一個(gè) SparkContext。
使用 Scala 創(chuàng)建方式如下:
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._
使用 Java 創(chuàng)建方式如下:
JavaSparkContext sc = ...; // An existing JavaSparkContext.
SQLContext sqlContext = new org.apache.spark.sql.SQLContext(sc);
使用 Python 創(chuàng)建方式如下:
from pyspark.sql import SQLContext
sqlContext = SQLContext(sc)
除了一個(gè)基本的 SQLContext,你也能夠創(chuàng)建一個(gè) HiveContext,它支持基本 SQLContext 所支持功能的一個(gè)超集。它的額外的功能包括用更完整的 HiveQL 分析器寫(xiě)查詢(xún)?nèi)ピL問(wèn) HiveUDFs 的能力、 從 Hive 表讀取數(shù)據(jù)的能力。用 HiveContext 你不需要一個(gè)已經(jīng)存在的 Hive 開(kāi)啟,SQLContext 可用的數(shù)據(jù)源對(duì) HiveContext 也可用。HiveContext 分開(kāi)打包是為了避免在 Spark 構(gòu)建時(shí)包含了所有 的 Hive 依賴(lài)。如果對(duì)你的應(yīng)用程序來(lái)說(shuō),這些依賴(lài)不存在問(wèn)題,Spark 1.3 推薦使用 HiveContext。以后的穩(wěn)定版本將專(zhuān)注于為 SQLContext 提供與 HiveContext 等價(jià)的功能。
用來(lái)解析查詢(xún)語(yǔ)句的特定 SQL 變種語(yǔ)言可以通過(guò) spark.sql.dialect 選項(xiàng)來(lái)選擇。這個(gè)參數(shù)可以通過(guò)兩種方式改變,一種方式是通過(guò) setConf 方法設(shè)定,另一種方式是在 SQL 命令中通過(guò) SET key=value 來(lái)設(shè)定。對(duì)于 SQLContext,唯一可用的方言是 “sql”,它是 Spark SQL 提供的一個(gè)簡(jiǎn)單的 SQL 解析器。在 HiveContext 中,雖然也支持”sql”,但默認(rèn)的方言是 “hiveql”,這是因?yàn)?HiveQL 解析器更完整。
添加回答
舉報(bào)