1.工程maven依赖包

 <properties>
<spark_version>2.3.1</spark_version>
<!-- elasticsearch-->
<elasticsearch.version>5.5.2</elasticsearch.version>
<fastjson.version>1.2.28</fastjson.version>
<elasticsearch-hadoop.version>6.3.2</elasticsearch-hadoop.version>
<elasticsearch-spark.version>5.5.2</elasticsearch-spark.version>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>${spark_version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-sql -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.11</artifactId>
<version>${spark_version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.spark/spark-yarn -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-yarn_2.11</artifactId>
<version>${spark_version}</version>
</dependency>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch-spark-20_2.11</artifactId>
<version>${elasticsearch-spark.version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
</dependency>
</dependencies>

2.spark加载数据库中数据

 public class GoodsFromMySQL {

     /**
* 加载数据库数据
*
* @param sc spark context
* @param sparkSession spark session
*/
public static void loadGoodsInfo(SparkContext sc, SparkSession sparkSession) {
String url = "jdbc:mysql://x.x.x.x:3306/db-test"; String sql = "(SELECT item_name as itemName, goods_category as goodsCategory FROM goods where dict_type='100203' and item_name " +
"is not null) as my-goods"; SQLContext sqlContext = SQLContext.getOrCreate(sc);
DataFrameReader reader = sqlContext.read().format("jdbc").
option("url", url).option("dbtable", sql).
option("driver", "com.mysql.jdbc.Driver").
option("user", "root").
option("password", "xxxxx"); Dataset<Row> goodsDataSet = reader.load(); // Looks the schema of this DataFrame.
goodsDataSet.printSchema(); goodsDataSet.write().mode(SaveMode.Overwrite).json("/data/app/source_new.json");
} public static void main(String[] args) {
SparkConf conf = new SparkConf().setAppName("my-app");
SparkContext sc = new SparkContext(conf); SparkSession sparkSession = new SparkSession(sc); loadGoodsInfo(sc, sparkSession);
}
}

3.spark支持加载多种数据库,仅需要用户依赖不同的数据库驱动包,并且代码进行微调即可

  根据以上java代码,仅需调整18行,更改驱动加载类即可。

Spark 加载数据库mysql表中数据进行分析的更多相关文章

  1. EF如何操作内存中的数据以及加载相关联表的数据:延迟加载、贪婪加载、显示加载

    之前的EF Code First系列讲了那么多如何配置实体和数据库表的关系,显然配置只是辅助,使用EF操作数据库才是每天开发中都需要用的,这个系列讲讲如何使用EF操作数据库.老版本的EF主要是通过Ob ...

  2. JavaScript之加载表格、表单行数据[插件]

    /*** * name:加载表格或表单数据[通用] * name:load-table-or-form-data-common.js * * author:zengtai * date:2017-07 ...

  3. 清除mysql表中数据

    delete from 表名; truncate table 表名; 不带where参数的delete语句可以删除mysql表中所有内容,使用truncate table也可以清空mysql表中所有内 ...

  4. mysql 表中数据不存在则插入,否则更新数据

    在很多时候我们会操作数据库表,但是在向表中插入数据时,会遇到表中已经存在该id的数据或者没有该id的数据的情况,没有该id的数据的情况时直接插入就OK,遇到已经存在该id的数据的情况则更新该id的数据 ...

  5. MySQL表中数据的迁移

    INSERT INTO `crm_attachment`(OPERATOR_ID,ATTACHMENT_ID,TYPE ) SELECT APPLICATION_ID ,ATTACHMENT_ID,' ...

  6. 使用Spark加载数据到SQL Server列存储表

    原文地址https://devblogs.microsoft.com/azure-sql/partitioning-on-spark-fast-loading-clustered-columnstor ...

  7. ajax验证表单元素规范正确与否 ajax展示加载数据库数据 ajax三级联动

    一.ajax验证表单元素规范正确与否 以用ajax来验证用户名是否被占用为例 1创建表单元素<input type="text" id="t"> 2 ...

  8. Android之数据存储----使用LoaderManager异步加载数据库

    一.各种概念: 1.Loaders: 适用于Android3.0以及更高的版本,它提供了一套在UI的主线程中异步加载数据的框架.使用Loaders可以非常简单的在Activity或者Fragment中 ...

  9. InnoDB缓冲池预加载在MySQL 5.7中的正确打开方式

    InnoDB缓冲池预加载在MySQL 5.7中的正确打开方式 https://mp.weixin.qq.com/s/HGa_90XvC22anabiBF8AbQ 在这篇文章里,我将讨论在MySQL 5 ...

随机推荐

  1. dctcp example-ns2

    set N 8 set B 250 set K 65 set RTT 0.0001 set simulationTime 1.0 set startMeasurementTime 1 set stop ...

  2. Sql Server中利用ISNULL方法判断数字并预设值

    1.ISNULL方法有两个参数,ISNULL(a,b),表达式含义为如果a为NULL,则设置该字段内容为b. 例如 table tab id sum 1 1 2 null select t.id,is ...

  3. angular2 文件上传

    ng2-file-upload文件上传 1.安装ng2-file-upload模块 npm install ng2-file-upload --save 2.如果使用systemjs打包,需要在配置s ...

  4. vmware虚拟机添加新硬盘

    1    vmware中添加硬盘 2    重启虚拟机后,fdisk -l 查看已经挂在好的硬盘,比如/dev/sdb3    mkfs.ext3 /dev/sdb4    挂在: mount /de ...

  5. 优秀 Java 程序员写代码的风格,不再留坑给别人

    往 期 精 彩 推 荐    [1]Java Web技术经验总结 [2]15个顶级Java多线程面试题及答案,快来看看吧 [3]面试官最喜欢问的十道java面试题 [4]从零讲JAVA ,给你一条清晰 ...

  6. 奇葩拿shell + 提权wind08r2奇葩拿shell + 提权wind08r2戏

    0x01 小隐拿站篇 某省还是市级还是县级的空防部 先来刺探目录,拿起御剑, 啪啪啪  (鼓掌)后台出来了   试试弱口令 擦  需要管理员验证码,这个咋玩????这个注入都不用找了,就算注射出账号密 ...

  7. eclipse去掉xml验证的方法

    eclipse Multiple annotations found at this line错误,eclipse开发过程中,一些XML配置文件会报错,但是这些其实不是错,飘红的原因是因为eclips ...

  8. Windows彻底卸载系统自带的office

    由于自带office导致按照新的office会提示要先卸载原来32位的office,又在控制面板或软件管理工具中找不到office,用如下方法删除 1.在C盘删除office文件夹 2.删除注册表 1 ...

  9. ZOJ Monthly, January 2019 Little Sub and Isomorphism Sequences 【离线离散化 + set + multiset】

    传送门:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5868 Little Sub and Isomorphism Seque ...

  10. Linux学习总结(九)-源码包和rpm包安装

    一.源码包安装 通常办法是安装三部曲:./configuremakemake install但是具体还要根据包里面的帮助文档操作./configure --help 可以查看可以带什么参数,比如--p ...