Spark SQL外部資料來源與實現機制
一.資料解釋與雜項
1.External Data Source API 外部資料來源
2.json也有些弊端
例如你第一次讀的是
id:1,name:xxx
第二次
id:1,name:xxx,session:222 這樣程式碼就要改
還有資料型別如果你是
id:"xxx" 根本不行
3.常用外部資料來源
FileSystem:HDFS,Hbase,S3,OSS 等
HDFS 與 mysql join 你要用sqoop把 hdfs,mysql都要記載到hive中
但是用spark 一句話就可以
4.—packages
--packages 優點,靈活,給你都拉去過來本地有的,沒有的才下載的
缺點:生產中叢集不能上網,maven沒用
解決辦法:有--jars 打成jar包傳上去
5.內部內建與外部資料來源
json.vsv,hdfs,hive,jdbc,s3,parquet,es,redis 等
分為兩大類 build-in (內建) , 3th-party(外部)
spark.read.load() 預設讀的是parquet檔案
6.外部新增jar包和使用例項
csv為例使用https://spark-packages.org 這個網址
點homepage
7.讀寫標準寫法
8.自定義約束條件
9.支援陣列等其他複雜型別像hive
二.JDBC讀寫問題
1.寫入時檔案存在問題(已經存在)
2.解決方式官網 載入檔案資料
存在丟擲異常
目標存在追加,但是重跑一次可能兩份,有弊端(保證不了每次處理都是一樣的)
目標表存在,已經存在的資料被清掉
忽略模式,有了就不會再往裡加了
3.想看到你寫的檔案內容可以不壓縮
user.select("name").write.format("json").option("compression","none").save("file:///root/test/json1/")
user.select("name").write().format("json").save("/root/test/json1/")
4.mode原始碼展示 大寫小寫都一樣
5.savemode是列舉型別 java類
6.效果一樣
result.write.mode("default")
result.write.mode(SaveMode.ErrorIfExists)
7.append 重跑一次有兩份了
8.官網讀取JDBC資料注意一定要加driver屬性
9.屬性解釋官網
10.讀jdbc時候可以讓多少條進一個分割槽,其餘進那個分割槽可以設定
哪個欄位分割槽
最少,最多多少條
幾個分割槽
一次進去多少條
三.spark-sql的使用
1.jar包新增 注意如果報加不進去,你要加上最後面一句話,版本問題
2.spark-sql可以直接載入hive中的表
sparksession中有個table方法直接可以把錶轉化為DataFrame
3.載入jdbc 程式碼
4.join 注意
三個等號,否則報錯,注意條件
四.外部資料來源的機制
1.PPD優化
2.實現三個介面或者子類
如何更有效的讀取外部資料來源 Table sCAN
載入外部資料來源資料,定義資料的schema資訊Base(抽象類必須有子類)
寫必須實現RelationProvicer
3.TableScan對應PDD優化的位置
就是上圖第一行什麼都不管,讀出什麼是什麼
裁剪對應第二個
裁剪過濾對應第三個
兩個圖就引數不同,功能一致
4. 其餘兩項原始碼
實現這三個介面
一個可以寫schema資訊
一個是過濾
一個可以寫出去
帶scan是查,insert 寫, base載入資料來源和schema資訊
5.JDBC原始碼中實現了三個介面或者子類
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69941978/viewspace-2653619/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Spark SQL:Hive資料來源複雜綜合案例實戰SparkSQLHive
- Spark SQL:JDBC資料來源複雜綜合案例實戰SparkSQLJDBC
- SparkSQL外部資料來源SparkSQL
- Spark SQL:JSON資料來源複雜綜合案例實戰SparkSQLJSON
- Sentinel-Go 整合 Nacos 實現外部動態資料來源Go
- Spark SQL:Parquet資料來源之自動分割槽推斷SparkSQL
- BW中自定義資料來源的Delta機制
- spark streaming執行kafka資料來源SparkKafka
- 實現多資料來源事務
- 使用 SAP HANA Virtual Table 連線外部資料來源
- 【Spark】Spark容錯機制Spark
- Spark Streaming + Spark SQL 實現配置化ETSparkSQL
- spark sql與mysql 資料載入與匯出資料到mysqlSparkMySql
- 多資料來源與動態資料來源的權衡
- Spark IO機制Spark
- Spring多資料來源管理實現原理Spring
- java中如何實現多個資料來源?Java
- 談談Spring Boot 資料來源載入及其多資料來源簡單實現Spring Boot
- Java反射機制實現與原理Java反射
- 使用單例模式來實現動態資料來源管理單例模式
- Spark的危機與機遇:未來必然是AI框架倒推資料處理框架SparkAI框架
- Spring+MyBatis多資料來源配置實現SpringMyBatis
- Spring 的AbstractRoutingDataSource實現多資料來源Spring
- Spark SQL知識點與實戰SparkSQL
- Flink原理與實現:Window機制
- Spring-Boot 多資料來源配置+動態資料來源切換+多資料來源事物配置實現主從資料庫儲存分離Springboot資料庫
- 聊聊如何利用apollo與druid整合實現資料來源動態熱切UI
- 用VC程式來建立SQL Server ODBC資料來源 (轉)C程式SQLServer
- 如何用hutool-db實現多資料來源配置
- 實現Spring動態註冊多資料來源Spring
- Atomikos實現多資料來源的事物管理
- Spring實現多資料來源動態切換Spring
- Hystrix- 基於 Hystrix 訊號量機制實現資源隔離
- 使用 Admission Webhook 機制實現多叢集資源配額控制WebHook
- Spark SQL知識點大全與實戰SparkSQL
- 分享自研實現的多資料來源(支援同DB不同表、跨DB表、記憶體資料、外部系統資料等)分頁查詢工具類實現原理及使用記憶體
- 用SQL*Loader載入外部資料SQL
- 一個資料倉儲資料重新整理的實現機制(八)