婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 創建SparkSession和sparkSQL的詳細過程

創建SparkSession和sparkSQL的詳細過程

熱門標簽:西青語音電銷機器人哪家好 成都呼叫中心外呼系統哪家強 地圖標注與注銷 旅游廁所地圖標注怎么弄 南昌地圖標注 電梯新時達系統外呼顯示e 宿州電話機器人哪家好 無錫智能外呼系統好用嗎 百應電話機器人總部

一、概述

spark 有三大引擎,spark core、sparkSQL、sparkStreaming,

spark core 的關鍵抽象是 SparkContext、RDD;

SparkSQL 的關鍵抽象是 SparkSession、DataFrame;

sparkStreaming 的關鍵抽象是 StreamingContext、DStream

SparkSession 是 spark2.0 引入的概念,主要用在 sparkSQL 中,當然也可以用在其他場合,他可以代替 SparkContext;

SparkSession 其實是封裝了 SQLContext 和 HiveContext

(1) 在Spark1.6 中我們使用的叫Hive on spark,主要是依賴hive生成spark程序,有兩個核心組件SQLcontext和HiveContext。

這是Spark 1.x 版本的語法

//set up the spark configuration and create contexts
 val sparkConf = new SparkConf().setAppName("SparkSessionZipsExample").setMaster("local")
 
 
// your handle to SparkContext to access other context like SQLContext
 val sc = new SparkContext(sparkConf).set("spark.some.config.option", "some-value")
 val sqlContext = new org.apache.spark.sql.SQLContext(sc)

(2)Spark2.0中我們使用的就是sparkSQL,是后繼的全新產品,解除了對Hive的依賴。

從Spark2.0以上的版本開始,spark是使用全新的SparkSession接口代替Spark1.6 中的SQLcontext和HiveContext 來實現對數據的加載、轉換、處理等工作,并且實現了SQLcontext和HiveContext的所有功能。

在新版本中并不需要之前那么繁瑣的創建很多對象,只需要創建一個SparkSession對象即可。SparkSession支持從不同的數據源加載數據,并把數據轉換成DataFrame,并支持把DataFrame轉換成SQLContext自身中的表。然后使用SQL語句來操作數據,也提供了HiveQL以及其他依賴于Hive的功能支持。

二、創建SparkSession

SparkSession 是 Spark SQL 的入口。使用 Dataset 或者 Dataframe 編寫 Spark SQL 應用的時候,第一個要創建的對象就是 SparkSession。Builder 是 SparkSession 的構造器。 通過 Builder, 可以添加各種配置,并通過 stop 函數來停止 SparkSession。

Builder 的方法如下:

import org.apache.spark.sql.SparkSession
val spark: SparkSession = SparkSession.builder
 .appName("My Spark Application")  //設置 application 的名字
 .master("local[*]")             
 .enableHiveSupport() //增加支持 hive Support      
 .config("spark.sql.warehouse.dir", "target/spark-warehouse") //設置各種配置
 .getOrCreate     //獲取或者新建一個 sparkSession

(1)設置參數

創建SparkSession之后可以通過 spark.conf.set 來設置運行參數

//配置設置
 spark.conf.set("spark.sql.shuffle.partitions", 6)
 spark.conf.set("spark.executor.memory", "2g")
 
 //獲取配置,可以使用Scala的迭代器來讀取configMap中的數據。 
 val configMap:Map[String, String] = spark.conf.getAll()

(2)讀取元數據

如果需要讀取元數據(catalog),可以通過SparkSession來獲取。

spark.catalog.listTables.show(false)
 spark.catalog.listDatabases.show(false)

這里返回的都是Dataset,所以可以根據需要再使用Dataset API來讀取

catalog 和 schema 是兩個不同的概念
Catalog是目錄的意思,從數據庫方向說,相當于就是所有數據庫的集合;
Schema是模式的意思, 從數據庫方向說, 類似Catelog下的某一個數據庫;

(3)創建Dataset和Dataframe

通過SparkSession來創建Dataset和Dataframe有多種方法。

通過range()方法來創建dataset
通過createDataFrame()來創建dataframe。
// create a Dataset using spark.range starting from 5 to 100,
// with increments of 5
val numDS = spark.range(5, 100, 5)//創建dataset
 
// reverse the order and display first 5 items
numDS.orderBy(desc("id")).show(5)
 
//compute descriptive stats and display them
numDs.describe().show()
 
// create a DataFrame using spark.createDataFrame from a List or Seq
val langPercentDF = spark.createDataFrame( List( ("Scala", 35), 
    ("Python", 30), ("R", 15), ("Java", 20)) )//創建dataframe
 
//rename the columns
val lpDF = langPercentDF.withColumnRenamed("_1", "language").
    withColumnRenamed("_2", "percent")
 
//order the DataFrame in descending order of percentage
lpDF.orderBy(desc("percent")).show(false)

(4)讀取數據

可以用SparkSession讀取JSON、CSV、TXT 和 parquet表。

import spark.implicits //使RDD轉化為DataFrame以及后續SQL操作
//讀取JSON文件,生成DataFrame
val jsonFile = args(0)
val zipsDF = spark.read.json(jsonFile)

(5)使用SparkSQL

借助SparkSession用戶可以像SQLContext一樣使用Spark SQL的全部功能。

zipsDF.createOrReplaceTempView("zips_table")//對上面的dataframe創建一個表
zipsDF.cache()//緩存表
 
val resultsDF = spark.sql("SELECT city, pop, state, zip FROM zips_table")
 
//對表調用SQL語句
resultsDF.show(10)//展示結果

(6)存儲/讀取Hive表

下面的代碼演示了通過SparkSession來創建Hive表并進行查詢的方法。

//drop the table if exists to get around existing table error
 spark.sql("DROP TABLE IF EXISTS zips_hive_table")
 
 //save as a hive table
 spark.table("zips_table").write.saveAsTable("zips_hive_table")
 
 //make a similar query against the hive table
 val resultsHiveDF = spark.sql("SELECT city, pop, state, 
        zip FROM zips_hive_table WHERE pop > 40000")
 
 resultsHiveDF.show(10)

三、 SQLContext

它是 sparkSQL 的入口點,sparkSQL 的應用必須創建一個 SQLContext 或者 HiveContext 的類實例

from pyspark import SparkContext, SparkConf
from pyspark.sql import SparkSession, SQLContext, HiveContext
 
conf = SparkConf().setAppName('test').setMaster('yarn')
sc = SparkContext(conf=conf)
 
sqlc = SQLContext(sc)
print(dir(sqlc))
# 'cacheTable', 'clearCache', 'createDataFrame', 'createExternalTable', 'dropTempTable', 'getConf', 'getOrCreate', 'newSession', 'range', 'read', 'readStream',
# 'registerDataFrameAsTable', 'registerFunction', 'registerJavaFunction', 'setConf', 'sparkSession', 'sql', 'streams', 'table', 'tableNames', 'tables', 'udf', 'uncacheTable'
 
### sqlcontext 讀取數據也自動生成 df
data = sqlc.read.text('/usr/yanshw/test.txt')
print(type(data))

四、 HiveContext

它是 sparkSQL 的另一個入口點,它繼承自 SQLContext,用于處理 hive 中的數據

HiveContext 對 SQLContext 進行了擴展,功能要強大的多

1. 它可以執行 HiveSQL 和 SQL 查詢

2. 它可以操作 hive 數據,并且可以訪問 HiveUDF

3. 它不一定需要 hive,在沒有 hive 環境時也可以使用 HiveContext

注意,如果要處理 hive 數據,需要把 hive 的 hive-site.xml 文件放到 spark/conf 下,HiveContext 將從 hive-site.xml 中獲取 hive 配置信息;

如果 HiveContext 沒有找到 hive-site.xml,他會在當前目錄下創建 spark-warehouse 和 metastore_db 兩個文件夾

from pyspark import SparkContext, SparkConf
from pyspark.sql import SparkSession, SQLContext, HiveContext
 
conf = SparkConf().setAppName('test').setMaster('yarn')
sc = SparkContext(conf=conf)
## 需要把 hive/conf/hive-site.xml 復制到 spark/conf 下
hivec = HiveContext(sc)
print(dir(hivec))
# 'cacheTable', 'clearCache', 'createDataFrame', 'createExternalTable', 'dropTempTable', 'getConf', 'getOrCreate', 'newSession', 'range', 'read', 'readStream','refreshTable',
# 'registerDataFrameAsTable', 'registerFunction', 'registerJavaFunction', 'setConf', 'sparkSession', 'sql', 'streams', 'table', 'tableNames', 'tables', 'udf', 'uncacheTable'
 
data = hivec.sql('''select * from hive1101.person limit 2''')
print(type(data))

SparkSession 創建

from pyspark.sql import SparkSession
 
 
### method 1
sess = SparkSession.builder \

    .appName("aaa") \

    .config("spark.driver.extraClassPath", sparkClassPath) \

    .master("local") \

    .enableHiveSupport() \  # sparkSQL 連接 hive 時需要這句
    .getOrCreate()      # builder 方式必須有這句
 
### method 2
conf = SparkConf().setAppName('myapp1').setMaster('local[4]')   # 設定 appname 和 master
sess = SparkSession.builder.config(conf=conf).getOrCreate() # builder 方式必須有這句
 
### method 3
from pyspark import SparkContext, SparkConf
conf = SparkConf().setAppName('myapp1').setMaster('local[4]')   # 設定 appname 和 master
sc = SparkContext(conf=conf)
sess = SparkSession(sc)

1)文件數據源

from pyspark import SparkContext, SparkConf
from pyspark.sql import SparkSession, SQLContext, HiveContext
 
conf = SparkConf().setAppName('test').setMaster('yarn')
sc = SparkContext(conf=conf)
 
#### 替代了 SQLContext 和 HiveContext,其實只是簡單的封裝,提供了統一的接口
spark = SparkSession(sc)
print(dir(spark))
# 很多屬性,我把私有屬性刪了
# 'Builder','builder', 'catalog', 'conf', 'createDataFrame', 'newSession', 'range', 'read', 'readStream','sparkContext', 'sql', 'stop', 'streams', 'table', 'udf', 'version'
 
### sess 讀取數據自動生成 df
data = spark.read.text('/usr/yanshw/test.txt')      #read 可讀類型 [ 'csv', 'format', 'jdbc', 'json', 'load', 'option', 'options', 'orc', 'parquet', 'schema', 'table', 'text']
print(type(data))       # class 'pyspark.sql.dataframe.DataFrame'>

2) Hive 數據源

## 也需要把 hive/conf/hive-site.xml 復制到 spark/conf 下
spark = SparkSession.builder.appName('test').master('yarn').enableHiveSupport().getOrCreate()
 
hive_data = spark.sql('select * from hive1101.person limit 2')
print(hive_data)        # DataFrame[name: string, idcard: string]

SparkSession vs SparkContext

SparkSession 是 spark2.x 引入的新概念,SparkSession 為用戶提供統一的切入點,字面理解是創建會話,或者連接 spark

在 spark1.x 中,SparkContext 是 spark 的主要切入點,由于 RDD 作為主要的 API,我們通過 SparkContext 來創建和操作 RDD,

SparkContext 的問題在于:

1. 不同的應用中,需要使用不同的 context,在 Streaming 中需要使用 StreamingContext,在 sql 中需要使用 sqlContext,在 hive 中需要使用 hiveContext,比較麻煩

2. 隨著 DataSet 和 DataFrame API 逐漸成為標準 API,需要為他們創建接入點,即 SparkSession

SparkSession 實際上封裝了 SparkContext,另外也封裝了 SparkConf、sqlContext,隨著版本增加,可能更多,

所以我們盡量使用 SparkSession ,如果發現有些 API 不在 SparkSession 中,也可以通過 SparkSession 拿到 SparkContext 和其他 Context 等

在 shell 操作中,原生創建了 SparkSession,故無需再創建,創建了也不會起作用

在 shell 中,SparkContext 叫 sc,SparkSession 叫 spark。

到此這篇關于SparkSession和sparkSQL的文章就介紹到這了,更多相關SparkSession和sparkSQL內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • SparkSQl簡介及運行原理
  • SparkSQL使用快速入門
  • IDEA 開發配置SparkSQL及簡單使用案例代碼
  • SparkSQL讀取hive數據本地idea運行的方法詳解
  • DataFrame:通過SparkSql將scala類轉為DataFrame的方法
  • 淺談DataFrame和SparkSql取值誤區

標簽:贛州 西安 七臺河 濰坊 雅安 許昌 渭南 辛集

巨人網絡通訊聲明:本文標題《創建SparkSession和sparkSQL的詳細過程》,本文關鍵詞  創建,SparkSession,和,sparkSQL,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《創建SparkSession和sparkSQL的詳細過程》相關的同類信息!
  • 本頁收集關于創建SparkSession和sparkSQL的詳細過程的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    久久疯狂做爰流白浆xx| 欧美日韩色综合| 久久综合色综合88| av中文一区二区三区| 亚洲乱码国产乱码精品精小说| 久久九九影视网| 国产清纯在线一区二区www| 久久先锋资源网| 国产精品视频第一区| 久久久蜜臀国产一区二区| 自拍偷拍国产精品| 亚洲国产成人高清精品| 午夜精品国产更新| 午夜精品福利一区二区三区av | 一区二区三区在线视频观看58| 国产精品每日更新| 亚洲综合色噜噜狠狠| 日韩av中文在线观看| 久久国产精品免费| 成人一区二区三区视频在线观看| 99精品国产99久久久久久白柏| 在线观看日产精品| 日韩精品一区国产麻豆| 亚洲天堂福利av| 青草国产精品久久久久久| 黄色日韩三级电影| 国产不卡视频一区二区三区| 99久久免费国产| 日韩精品中文字幕一区二区三区| 国产欧美精品国产国产专区| 亚洲图片欧美综合| 国产91精品在线观看| 欧美电影在线免费观看| 国产精品伦理在线| 另类中文字幕网| 欧美中文字幕一区| 国产精品丝袜在线| 美女久久久精品| 欧美性色黄大片| 中文字幕av资源一区| 久久99最新地址| 欧美三日本三级三级在线播放| 久久久久国产精品麻豆| 日日摸夜夜添夜夜添亚洲女人| 成人精品小蝌蚪| 日韩欧美第一区| 亚洲国产精品影院| 91年精品国产| 国产精品久久久久9999吃药| 久久国产福利国产秒拍| 亚洲国产一区二区三区| 99久久综合99久久综合网站| 丝瓜av网站精品一区二区| 精品久久人人做人人爰| 激情偷乱视频一区二区三区| 欧美激情在线观看视频免费| 9i看片成人免费高清| 亚洲色欲色欲www| 欧美精品一卡两卡| 岛国精品一区二区| 亚洲激情六月丁香| 欧美大胆人体bbbb| 国产不卡视频在线播放| 日韩精品一区二区三区三区免费| 亚洲摸摸操操av| 91丨porny丨最新| 中文字幕乱码日本亚洲一区二区| 久久av老司机精品网站导航| 91精品国产入口在线| 日韩avvvv在线播放| 欧美日本韩国一区| 五月天激情小说综合| 欧美日韩高清一区二区不卡| 亚洲电影激情视频网站| 欧美色涩在线第一页| 日本午夜精品视频在线观看| 777色狠狠一区二区三区| 日本不卡在线视频| 精品电影一区二区| 国产高清成人在线| 国产精品三级久久久久三级| 91美女蜜桃在线| 亚洲一区二区三区四区的| 欧美日韩mp4| 国内精品免费**视频| 国产精品毛片a∨一区二区三区| 成人激情免费电影网址| 亚洲桃色在线一区| 欧美乱妇15p| 国产真实乱子伦精品视频| 中文字幕永久在线不卡| 日本丰满少妇一区二区三区| 日韩伦理av电影| 欧美色网一区二区| 狠狠色丁香婷婷综合| 国产精品国产自产拍高清av| 欧美日韩一卡二卡| 极品瑜伽女神91| 亚洲日本在线视频观看| 欧美电影一区二区| k8久久久一区二区三区| 五月天久久比比资源色| 日本一区二区三区久久久久久久久不| 色综合视频在线观看| 久久精品国产一区二区三区免费看| 国产精品免费视频观看| 欧美精品成人一区二区三区四区| 国产一区二区视频在线播放| av高清不卡在线| 日韩三级电影网址| 国产成人综合在线观看| 91精品国产综合久久精品| 久久亚洲二区三区| 婷婷成人综合网| 在线观看国产一区二区| 日韩精品在线一区| 亚洲一区日韩精品中文字幕| 99re热视频这里只精品| 欧美经典三级视频一区二区三区| 一二三四社区欧美黄| 欧美在线播放高清精品| 亚洲精品一区二区三区四区高清| 色欧美片视频在线观看| 国产精品一区二区不卡| 蜜桃一区二区三区在线观看| 中文字幕综合网| 国产人妖乱国产精品人妖| 欧美一区二区三区四区五区 | 亚洲精品国产品国语在线app| 精品入口麻豆88视频| 欧美一三区三区四区免费在线看 | 狠狠色狠狠色合久久伊人| 亚洲一区二区成人在线观看| 国产欧美日本一区视频| 精品人伦一区二区色婷婷| 欧美一区二区视频在线观看| 欧美三级中文字| 欧美日韩免费视频| 欧美亚洲国产一区在线观看网站| 99国产精品久| 91蝌蚪porny九色| 色av成人天堂桃色av| 色中色一区二区| 欧美丝袜自拍制服另类| 欧美日韩国产影片| 欧美乱妇15p| 欧美不卡一区二区三区四区| 日韩你懂的在线播放| 日韩一区二区免费在线观看| 日韩午夜激情视频| 亚洲精品一区二区三区福利| 精品久久一二三区| 国产欧美日韩三级| 亚洲欧美另类图片小说| 亚洲免费观看高清完整版在线观看| 亚洲啪啪综合av一区二区三区| 亚洲人成网站精品片在线观看 | 国产又粗又猛又爽又黄91精品| 久久精品噜噜噜成人88aⅴ| 六月丁香综合在线视频| 国产精品一区免费视频| 不卡av免费在线观看| av在线综合网| 欧美日韩国产一区| 欧美精品一区二区三区视频 | 日韩和欧美的一区| 蜜桃av一区二区| 成人国产精品免费观看| 欧美日韩综合不卡| 欧美三日本三级三级在线播放| 欧美丰满少妇xxxxx高潮对白 | 亚洲色图视频网| 日韩福利电影在线| 成人性色生活片免费看爆迷你毛片| 99久久久精品| 欧美一区日本一区韩国一区| 国产视频一区二区在线观看| 一区二区激情视频| 国产呦萝稀缺另类资源| 在线观看av不卡| 久久久一区二区三区捆绑**| 一区二区三区日韩欧美| 国内成人免费视频| 欧美网站一区二区| 国产精品久久影院| 蜜臀av亚洲一区中文字幕| av一区二区三区黑人| 欧美一区二区三区影视| **性色生活片久久毛片| 精品一二三四区| 在线播放91灌醉迷j高跟美女 | 欧美日韩一区二区不卡| 久久精品在线观看| 亚洲成人动漫精品| 色综合久久久网| 欧美高清一级片在线观看| 久色婷婷小香蕉久久| 欧美三级欧美一级| **欧美大码日韩| 国产福利91精品一区二区三区|