美文网首页Spark程序员技术干货
PySpark读取Mysql数据到DataFrame!

PySpark读取Mysql数据到DataFrame!

作者: 文哥的学习日记 | 来源:发表于2017-07-05 17:01 被阅读1033次

    Spark版本:2.1
    Python版本:2.7.12

    了解了Spark RDD之后,小编今天有体验了一把Spark SQL,使用Spark SQL时,最主要的两个组件就是DataFrame和SQLContext。

    1、引言

    使用过Pandas的小伙伴们一定对DataFrame比较熟悉,Spark中的DataFrame其实跟pandas中的类似,DataFrame是一个分布式的,按照命名列的形式组织的数据集合。DataFrame基于R语言中的data frame概念,与关系型数据库中的数据库表类似。可以通过如下数据源创建DataFrame:

    已有的RDD
    结构化数据文件
    JSON数据集
    Hive表
    外部数据库

    今天,小编只想带大家如何从外部的mysql数据库中获取数据:加入我有一个test的数据库存在于本地,有一个名为chat的数据表,其中的数据是这样的:


    chat数据表.png

    可以看到主要有四列数据,分别是id,问题,回答以及问题对应的词向量(经过word2vec训练出来的)。

    想要通过SparkSql获取到数据库的数据,小编可真是费了很大的力气,网上的帖子真可谓少之又少,不过经过一番试错,小编最终还是搞定啦,哈哈。

    2、环境配置

    想要了解spark安装的童鞋,可以参考我之前写的文章:http://www.jianshu.com/p/c248b8c966e2
    想要spark能够从mysql中获取数据,我们首先需要一个连接mysql的jar包,jar包下载地址:http://download.csdn.net/download/u012453843/9667329
    将jar包放入虚拟机中合适的位置,比如我放置在/home/sxw/Documents路径下,并在spark的 spark-env.sh 文件中加入:

    export SPARK_CLASSPATH=/home/sxw/Documents/mysql-connector-java-5.1.40-bin.jar
    

    3、代码编写

    使用pyspark并从mysql中获取数据的完整代码如下:

    from pyspark.sql import SparkSession
    from pyspark.sql import SQLContext
    
    sc = SparkSession.builder.appName("Python Spark SQL basic example")\
        .config('spark.some.config,option0','some-value')\
        .getOrCreate()
    ctx = SQLContext(sc)
    jdbcDf=ctx.read.format("jdbc").options(url="jdbc:mysql://localhost:3306/test",
                                           driver="com.mysql.jdbc.Driver",
                                           dbtable="(SELECT * FROM chat) tmp",user="root",
                                           password="0845").load()
    print(jdbcDf.printSchema())
    

    小编还没有仔细研究SparkSQL的语法,所以这里对于语句就不做过多的介绍啦。

    4、运行

    我们把上面的代码保存成test.py,直接使用python test.py命令运行,结果如下:


    运行结果1.png

    可以看到,我们成功从mysql中得到了数据,并打印出了DataFrame的Schema。

    如果你喜欢我写的文章,可以帮忙给小编点个赞或者加个关注,我一定会互粉的!
    如果大家对spark感兴趣,欢迎跟小编进行交流,小编微信为sxw2251,加我要写好备注哟!


    我的微信

    相关文章

      网友评论

      • whoRu_12:不错哦,帮到了我,谢谢!

      本文标题:PySpark读取Mysql数据到DataFrame!

      本文链接:https://www.haomeiwen.com/subject/tvpqhxtx.html