成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

spark sql語法

IT那活兒 / 3347人閱讀
spark sql語法

點(diǎn)擊上方“IT那活兒”,關(guān)注后了解更多內(nèi)容,不管IT什么活兒,干就完了?。?!


說  明


Spark SQL也可以通過設(shè)置參數(shù)來使其符合ANSI標(biāo)準(zhǔn)(結(jié)構(gòu)化查詢語言(SQL)是用于訪問和管理數(shù)據(jù)庫的數(shù)據(jù)庫管理員(DBA)的標(biāo)準(zhǔn)語言),通過設(shè)置spark.sql.ansi.enabled=’true’(默認(rèn)值是false)選項(xiàng)來控制spark sql是否符合ANSI標(biāo)準(zhǔn),當(dāng)spark.sql.storeAssignmentPolicy(默認(rèn)值為ANSI)選項(xiàng)為ANSI時(shí),spark sql符合ANSI標(biāo)準(zhǔn)的存儲(chǔ)分配原則,這兩個(gè)配置選項(xiàng)是相互獨(dú)立的。


01


基本語法


1.1 算數(shù)運(yùn)算
spark sql進(jìn)行算數(shù)運(yùn)算時(shí)不會(huì)檢查長度溢出,例如:
結(jié)果為:
1.2 類型轉(zhuǎn)換
Spark sql有三種類型轉(zhuǎn)換,顯示轉(zhuǎn)換、強(qiáng)制類型轉(zhuǎn)換和存儲(chǔ)分配轉(zhuǎn)換。
當(dāng)設(shè)置spark.sql.ansi.enabled=true時(shí),非法的類型轉(zhuǎn)換就會(huì)拋出運(yùn)行時(shí)異常;
當(dāng)設(shè)置spark.sql.storeAssigmentPolicy=”ANSI”時(shí),insert into語法拋出語義分析異常。
ANSI標(biāo)準(zhǔn)不允許以下直接的類型轉(zhuǎn)換,NumbericType <=> BooleanType;StringType<=>BinaryType。
下表給出了強(qiáng)制類型轉(zhuǎn)換中的組合,Y表示組合有效,N表示無效。
1.3 NULL值處理
1)比較運(yùn)算符
Spark sql支持標(biāo)準(zhǔn)的比較操作符,例如“>”、“>=”、“=”、“<”和“<=”,當(dāng)其中一個(gè)操作數(shù)unknow或NULL時(shí),結(jié)果就為unknow或NULL,為了比較空值是否相等,spark提供了操作符“<=>”,當(dāng)一個(gè)操作數(shù)為unknow或NULL時(shí)返回false,當(dāng)兩個(gè)操作數(shù)都為unknow或NULL時(shí),返回值為true。
例如:
2)邏輯判斷操作符
邏輯判斷操作符有and、or和not,參數(shù)為邏輯表達(dá)式,返回值為Boolean類型。
例如:
一些Spark sql函數(shù)參數(shù)為NULL,則返回結(jié)果也為NULL,例如:
還有一些可以處理NULL值得函數(shù),例如:
3)聚合函數(shù)對(duì)于NULL值得處理
聚合函數(shù)有MAX、MIN、AVG、SUM、EVERY、ANY、SOME。
  • COUNT(*)返回的所有的數(shù)據(jù)個(gè)數(shù)
  • COUNT(NAME)返回的是NAME不為NULL的個(gè)數(shù)。
  • 其他聚合函數(shù)都為將NULL排除再進(jìn)行操作。
  • WHERE、HAVING、JOIN字句中NULL值得處理。
  • WHERE字句中將會(huì)排除過濾條件為NULL的數(shù)據(jù)。
  • WHERE NAME IS NULL將會(huì)返回NAME為NULL的數(shù)據(jù)。
  • HAVING字句將會(huì)將為NULL的數(shù)據(jù)過濾掉。
  • JOIN字句中將會(huì)將為NULL值得數(shù)據(jù)過濾掉,但是如果使用<=>作為關(guān)聯(lián)條件時(shí)將會(huì)一塊將NULL進(jìn)行返回。意思就是兩邊關(guān)聯(lián)條件如果都為NULL也是可以返回的。
  • GROUP BY、DISTINCT對(duì)NULL值都會(huì)進(jìn)行處理,不會(huì)排除為NULL值得數(shù)據(jù)。
  • ORDER BY字句也會(huì)將NULL進(jìn)行排序,默認(rèn)情況下,NULL值得數(shù)據(jù)都會(huì)排在最前面,如果想排在最后可以:ORDER BY AGE NULLS  LAST進(jìn)行處理。
  • EXISTS和NOT EXISTS字句中,也不會(huì)將NULL值進(jìn)行排除。


02


函  數(shù)


內(nèi)置函數(shù)見:https://spark.apache.org/docs/latest/api/sql/,里面包括了各種字符串,日期,轉(zhuǎn)換等非常有用的內(nèi)置函數(shù)。
自定義函數(shù)(UDF)
當(dāng)內(nèi)置函數(shù)不能滿足需求時(shí)也可以自己定義函數(shù),使用方法如下:
1)首先定義函數(shù):
例如該函數(shù)作用于字符串類型,按照“,”進(jìn)行切割,然后返回一個(gè)元組,然后注冊(cè)函數(shù):
2)最后是使用函數(shù):


03


數(shù)據(jù)類型


Spark sql和dataFrame支持以下數(shù)據(jù)類型:
1)數(shù)字類型
ByteType、ShortType、IntegerType、LongType、FloatType、DoubleType、DecimalType、BigDecimal 。
2)字符串類型
StringType、VarcharType(StringType 類型變體,有長度限制)、CharType(VarcharType類型變體,固定長度)。
3)二進(jìn)制類型
BinaryType
4)Boolean類型
BooleanType
5)時(shí)間類型
TimestampType(到秒)、DateType(到天)
6)復(fù)雜類型
  • ArrayType(elementType, containsNull):表示元素序列數(shù)據(jù)類型,containsNull用于指示是否可以包括空值。
  • MapType(keyType, valueType, valueContainsNull)用于表示鍵值對(duì)數(shù)據(jù)類型,其中key不能為空值,valueContainsNull指示值是否可以為空。
  • StructType(fields):一系列由StructField(name, dataType, nullable)定義的數(shù)據(jù)類型,nullable指示是否可以為空。
通過import org.apache.spark.sql.types._ 來使用這些數(shù)據(jù)類型。
例如:


end



本文作者:潘宗昊

本文來源:IT那活兒(上海新炬王翦團(tuán)隊(duì))

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/129645.html

相關(guān)文章

  • Spark SQL知識(shí)點(diǎn)與實(shí)戰(zhàn)

    摘要:是最新的查詢起始點(diǎn),實(shí)質(zhì)上是和的組合,所以在和上可用的在上同樣是可以使用的。轉(zhuǎn)換為轉(zhuǎn)換為其實(shí)就是對(duì)的封裝,所以可以直接獲取內(nèi)部的注意此時(shí)得到的存儲(chǔ)類型為是具有強(qiáng)類型的數(shù)據(jù)集合,需要提供對(duì)應(yīng)的類型信息。Spark SQL概述1、什么是Spark SQLSpark SQL是Spark用于結(jié)構(gòu)化數(shù)據(jù)(structured data)處理的Spark模塊。與基本的Spark RDD API不同,Sp...

    番茄西紅柿 評(píng)論0 收藏2637
  • Spark SQL知識(shí)點(diǎn)大全與實(shí)戰(zhàn)

    摘要:本文發(fā)于我的個(gè)人博客知識(shí)點(diǎn)大全與實(shí)戰(zhàn)我正在大數(shù)據(jù)技術(shù)派和朋友們討論有趣的話題,你也來加入吧概述什么是是用于結(jié)構(gòu)化數(shù)據(jù)處理的模塊。是最新的查詢起始點(diǎn),實(shí)質(zhì)上是和的組合,所以在和上可用的在上同樣是可以使用的。 關(guān)注公眾號(hào):大數(shù)據(jù)技術(shù)派,回復(fù)資料,領(lǐng)取1000G資料。本文發(fā)于我的個(gè)人博客:Spark SQL知識(shí)點(diǎn)大全...

    番茄西紅柿 評(píng)論0 收藏2637
  • Spark SQL學(xué)習(xí)筆記

    摘要:是中處理結(jié)構(gòu)化數(shù)據(jù)的模塊。可以從很多數(shù)據(jù)源加載數(shù)據(jù)并構(gòu)造得到,如結(jié)構(gòu)化數(shù)據(jù)文件,中的表,外部數(shù)據(jù)庫,或者已有的。使用反射機(jī)制,推導(dǎo)包含指定類型對(duì)象的。這一功能應(yīng)該優(yōu)先于使用。隨后,將會(huì)掃描必要的列,并自動(dòng)調(diào)整壓縮比例,以減少內(nèi)存占用和壓力。 Spark SQL是Spark中處理結(jié)構(gòu)化數(shù)據(jù)的模塊。與基礎(chǔ)的Spark RDD API不同,Spark SQL的接口提供了更多關(guān)于數(shù)據(jù)的結(jié)構(gòu)信息...

    qieangel2013 評(píng)論0 收藏0
  • SQLflow:基于python開發(fā)的分布式機(jī)器學(xué)習(xí)平臺(tái), 支持通過寫sql的方式,運(yùn)行spark,

    摘要:主頁腳本頁面單頁面注意下載文件配置中的路徑。一個(gè)簡單的操作集群的是不是很簡單。正在新增版深度學(xué)習(xí)功能謝謝支持。 簡書博客: https://www.jianshu.com/u/3fe... 百度云搜索:http://www.lqkweb.com 搜網(wǎng)盤:http://www.swpan.cn 淘寶券搜索:http://www.wodecai.cn 淘寶券:http://www....

    legendaryedu 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<