japanese少妇高潮潮喷 -精品国产AV一区二区三区-麻豆av一区二区三区久久-国产精品无码专区

sql編程基礎pdfSQL的ApI允許直接使用而不用必須去注冊臨時表

發布時間:2025-07-02 點擊:8
內容
基本介紹
模型和模型是 sql 提供的兩個編程抽象。核心編程主要是使用和模型進行編程,以及它們之間的關系和轉換。
在 core 中,如果要執行應用程序,首先需要構建上下文環境對象。 sql其實可以理解為core的一種封裝。不僅封裝了模型,還封裝了上下文環境對象。
舊版本提供了兩個sql查詢起點:
是最新的sql查詢的起點,本質上是and的組合,所以api可以在on上使用,也可以在on上使用。內部封裝了,所以計算實際上是由.
sql api 允許直接使用,無需注冊臨時表或生成 sql 表達式。 api 既有操作又有操作。
創建
在sql中,是創建和執行sql的入口。共有三種創建方式:
(1)由
的數據源創建
①進入
[xzc@hadoop102 spark-local]$ bin/spark-shell
②查看支持文件創建的數據源格式
scala> spark.read.
③在
的bin/data目錄下創建user.json文件
{username: zhangsan,age:20}{username: lisi, age:30}{username: wangwu, age:40}
④讀取json文件創建
scala> val df = spark.read.json(data/user.json)
⑤顯示結果
scala> df.show
(2)從rdd轉換
在idea中開發程序時,如果需要rdd和df或ds的互操作,需要引入如下代碼:
import spark.implicits._
這里不是包名in,而是創建對象的變量名,所以必須先創建對象再導入。這里的對象不能用var聲明,因為只支持引入val修飾的對象。在-中,不需要導入,這個操作是自動完成的。
①在
的bin/data目錄下創建id.txt文件
②讀取txt文件
scala> val idrdd = sc.textfile(data/id.txt)
③轉換并顯示結果
scala> idrdd.todf(id).show
注意:在實際開發中,rdd一般轉換為
scala> case class user(name:string, age:int) scala> sc.makerdd(list((zhangsan,30), (lisi,40))).map(t=>user(t._1, t._2)).todf.show
(3)從 hive 查詢返回
hive 是 sql 引擎。 sql 可以在有或沒有 hive 支持的情況下編譯。包含 hive 支持的 sql 可以支持 hive 表訪問、udf(用戶自定義函數)和 hive 查詢語言(/hql)等。需要強調的是,如果要在 sql 中包含 hive 庫,則不需要提前安裝hive。要將 sql 連接到已部署的 hive,您必須將 hive-site.xml 復制到配置文件目錄 ($/conf)。即使沒有部署hive,sql仍然可以運行。
下載hive-site.xml文件,需要根據自己的配置修改個別內容
注意:如果你還沒有部署hivesql編程基礎 pdf,sql會在當前工作目錄下創建自己的hive元數據倉庫,稱為它。此外,如果您嘗試使用 (not) 語句創建表,這些表將被放置在您默認文件系統的 /user/hive/ 目錄中(如果您有一個完善的 hdfs-site.xml ,則默認文件系統為hdfs,否則為本地文件系統)。
- hive 默認支持;代碼中默認不支持,需要手動指定(加個參數即可)。
1) 嵌入式 hive
如果你使用內嵌的hive,你什么都不用做,直接使用即可。
存儲hive的元數據,默認倉庫地址:$/-
①展示
scala> spark.sql(show tables).show
②創建表格
scala> spark.sql(create table aa(id int))
③將本地數據加載到表格中并顯示
scala> spark.sql(load data local inpath 'data/id.txt' into table aa) scala> spark.sql(select * from aa).show
注意:在實際使用中,幾乎沒有人會使用內置的hive
2)外的hive
如果要連接到外部部署的 hive,則需要執行以下步驟:
是強類型數據集合,需要提供對應的類型信息。
創建
有兩種創建方式:
(1) with
①創建示例類
scala> case class person(name: string, age: long)
②向表格中添加數據并顯示
scala> val caseclassds = seq(person(zhangsan,2)).tods() scala> caseclassds.show
(2)使用基本類型的序列創建
①創建
scala> val ds = seq(1,2,3,4,5).tods
②顯示數據
scala> ds.show
注意:在實際使用中,很少用于將序列轉換成,更多的是通過rdd獲取
將 rdd 轉換為
包含case類的rdd可以自動轉換為case類定義的結構,通過反射將case類屬性轉換為表的列名。 case 類可以包含復雜的結構,例如 seq 或 seq。
scala> case class user(name:string, age:int) scala> sc.makerdd(list((zhangsan,30), (lisi,49))).map(t=>user(t._1, t._2)).tods
轉換為rdd
其實也是對rdd的封裝,所以可以直接獲取內部rdd
scala> case class user(name:string, age:int) scala> sc.makerdd(list((zhangsan,30), (lisi,49))).map(t=>user(t._1, t._2)).tods scala> val rdd = res11.rdd scala> rdd.collect
和轉化
實際上是一個特例,所以它們可以相互轉換。
(1)被轉換為
scala> case class user(name:string, age:int) scala> val df = sc.makerdd(list((zhangsan,30), (lisi,49))).todf(name,age) scala> val ds = df.as[user]
(2) 轉換為
scala> val ds = df.as[user] scala> val df = ds.todf
rdd與rdd的關系
in 為我們提供了兩個新的抽象,即 and。它們和rdd有什么區別?首先從版本生成的角度:
如果給這三個數據結構賦予相同的數據sql編程基礎 pdf,分別計算后,都會給出相同的結果。區別在于它們的執行效率和執行方法。在以后的版本中,可能會逐漸取代rdd,成為唯一的api接口。
三者的共同點
(1)rdd,都是平臺下的分布式彈性數據集,為處理超大數據提供了便利;
(2)三者都有惰性機制,創建轉換的時候,比如map方法,不會立即執行,只有遇到比如,三者才會開始遍歷操作;
(3)三者有很多常用的功能,比如,排序等;
(4)很多操作都需要這個包:.._(創建對象后嘗試直接導入)
(5)三者會根據內存情況自動緩存操作,這樣即使數據量很大也不必擔心內存溢出
(6)三個都有
的概念
(7)和兩者都可以使用模式匹配來獲取每個字段的值和類型
三者的區別
(1)rdd
(2)
(3)
三者相互轉換。


網站優化可以利用平臺推廣快速上排名嗎?
計算機網站建設需要有哪些規劃與推廣特色?
SEO人員如何每日審查鏈接?
成功電子商務網站不容忽視的因素
關于新手鑒別優質主機商的5個快速有效方法
網站建設前期策劃需要注意哪些?
如何創建自己的網站,這幾步要知曉
如何避免網站制作中出現太空洞的感覺