Spark 載入資料庫mysql表中數據進行分析

来源:https://www.cnblogs.com/woodylau/archive/2018/08/14/9475709.html
-Advertisement-
Play Games

1.工程maven依賴包 2.spark載入資料庫中數據 3.spark支持載入多種資料庫,僅需要用戶依賴不同的資料庫驅動包,並且代碼進行微調即可 根據以上java代碼,僅需調整18行,更改驅動載入類即可。 ...


1.工程maven依賴包

 1  
 2 <properties>
 3     <spark_version>2.3.1</spark_version>
 4     <!-- elasticsearch-->
 5     <elasticsearch.version>5.5.2</elasticsearch.version>
 6     <fastjson.version>1.2.28</fastjson.version>
 7     <elasticsearch-hadoop.version>6.3.2</elasticsearch-hadoop.version>
 8     <elasticsearch-spark.version>5.5.2</elasticsearch-spark.version>
 9 </properties>
10 <dependencies>
11     <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core -->
12     <dependency>
13         <groupId>org.apache.spark</groupId>
14         <artifactId>spark-core_2.11</artifactId>
15         <version>${spark_version}</version>
16     </dependency>
17     <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-sql -->
18     <dependency>
19         <groupId>org.apache.spark</groupId>
20         <artifactId>spark-sql_2.11</artifactId>
21         <version>${spark_version}</version>
22     </dependency>
23     <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-yarn -->
24     <dependency>
25         <groupId>org.apache.spark</groupId>
26         <artifactId>spark-yarn_2.11</artifactId>
27         <version>${spark_version}</version>
28     </dependency>
29     <dependency>
30         <groupId>org.elasticsearch</groupId>
31         <artifactId>elasticsearch-spark-20_2.11</artifactId>
32         <version>${elasticsearch-spark.version}</version>
33     </dependency>
34     <dependency>
35         <groupId>mysql</groupId>
36         <artifactId>mysql-connector-java</artifactId>
37         <version>5.1.46</version>
38     </dependency>
39 </dependencies>

2.spark載入資料庫中數據

 1 public class GoodsFromMySQL {
 2 
 3     /**
 4      * 載入資料庫數據
 5      *
 6      * @param sc           spark context
 7      * @param sparkSession spark session
 8      */
 9     public static void loadGoodsInfo(SparkContext sc, SparkSession sparkSession) {
10         String url = "jdbc:mysql://x.x.x.x:3306/db-test";
11 
12         String sql = "(SELECT item_name as itemName, goods_category as goodsCategory FROM goods where dict_type='100203' and item_name " +
13                 "is not null) as my-goods";
14 
15         SQLContext sqlContext = SQLContext.getOrCreate(sc);
16         DataFrameReader reader = sqlContext.read().format("jdbc").
17                 option("url", url).option("dbtable", sql).
18                 option("driver", "com.mysql.jdbc.Driver").
19                 option("user", "root").
20                 option("password", "xxxxx");
21 
22 
23         Dataset<Row> goodsDataSet = reader.load();
24 
25         // Looks the schema of this DataFrame.
26         goodsDataSet.printSchema();
27 
28         goodsDataSet.write().mode(SaveMode.Overwrite).json("/data/app/source_new.json");
29     }
30 
31 
32     public static void main(String[] args) {
33         SparkConf conf = new SparkConf().setAppName("my-app");
34         SparkContext sc = new SparkContext(conf);
35 
36         SparkSession sparkSession = new SparkSession(sc);
37 
38         loadGoodsInfo(sc, sparkSession);
39     }
40 }

3.spark支持載入多種資料庫,僅需要用戶依賴不同的資料庫驅動包,並且代碼進行微調即可

  根據以上java代碼,僅需調整18行,更改驅動載入類即可。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • [20180814]慎用查看表壓縮率腳本.txt--//最近看exadata方面書籍,書中提供1個腳本,查看某些表採用那些壓縮模式壓縮比能達到多少.--//通過調用DBMS_COMPRESSION.get_compression_ratio確定壓縮比.例子如下:--//測試版本11.2.0.4.de ...
  • Oracle 簡單子查詢 顧名思義,簡單子查詢是嵌套在 SQL 語句中的另一個SELECT 語句,並且子查詢只返回一列數據 1,單行子查詢: 子查詢 (內查詢) 在主查詢之前一次執行完成。子查詢的結果被主查詢(外查詢)使用 ,單行子查詢,一個子查詢語句只返回一行結果,不能返回空值 可以使用>,<,< ...
  • [20180813]刷新共用池與父子游標.txt--//測試刷新共用池與父子游標含有那些信息保存在共用池.--//自己最近遇到的問題,感覺自己以前理解有點亂,測試看看.1.環境SCOTT@book> @ ver1PORT_STRING VERSION BANNER x86_64/Linux 2.4. ...
  • Oracle刪除語句drop、delete、truncate的差別 ...
  • 一.概述 作為應用系統的持久化層,不管資料庫採取了什麼樣的Cache機制,資料庫最終總是要將數據儲存到可以長久保存的I/O設備磁碟上。但磁碟的存取速度顯然要比cpu,ram的速度慢很多。因此,對於比較大的資料庫,磁碟I/0 一般總會總為資料庫的一個性能瓶頸。 ram:又稱作“隨機存儲器”,是與CPU ...
  • 有個字典表並定期維護,對DBA和開發很重要,終於把他們整合在一起了,看有沒問題? 一條SQL生成數據字典,包含所有OPEN用戶、表名、欄位名、欄位序號、欄位屬性、預設值、是否非空、欄位意思、主鍵標識、外鍵標識、主鍵表名、主鍵欄位名、外鍵表名、外鍵欄位名、外鍵名、外鍵標識、外鍵表用戶其中聯合外鍵會出現 ...
  • 轉自:http://www.maomao365.com/?p=6227 摘要: 下文將製作一個isnumber驗證整型的函數,供在sql腳本中做數值判斷,如下所示: 例: 實現原理:判斷 是否包含特殊字元,是否全部為0-9的自然數組成 ...
  • 正則表達式最能解決: 例如: 這裡主要是註意正則表達式要寫對,該轉義的註意轉義,否則報錯。 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...