pyspark连接MySQL数据库,执行SQL语句,返回数据查询结果

        在日常的工作中,MySQL和SQLServer是经常使用到的两种数据库,直接连接使用的话是很简单的,如果说需要基于pyspark做连接工具,进行相应的数据查询操作的话就会复杂一点,今天简单的基于pyspark模块实现了连接MySQL数据库,执行给定的查询语句,返回查询结果数据。

      接下来简单的说一点自己学习使用pyspark以来的记录学习,具体如下:

      pyspark顾名思义就是由python和spark组合使用的。Spark提供了一个Python_Shell,即pyspark,从而可以以交互的方式使用Python编写Spark程序。有关Spark的基本架构以及pyspark环境配置相关的内容本篇博客就不再多加阐述了,网络上也有很多不错的讲解。

      pyspark里最核心的模块是SparkContext(简称sc),最重要的数据载体是RDD。RDD就像一个NumPy array或者一个Pandas Series,可以视作一个有序的item集合。只不过这些item并不存在driver端的内存里,而是被分割成很多个partitions,每个partition的数据存在集群的executor的内存中。parkSession是Spark 2.0引入的新概念。SparkSession为用户提供了统一的切入点,来让用户学习spark的各项功能。 在spark的早期版本中,SparkContext是spark的主要切入点,由于RDD是主要的API,我们通过sparkcontext来创建和操作RDD。对于每个其他的API,我们需要使用不同的context。例如,对于Streming,我们需要使用StreamingContext;对于sql,使用sqlContext;对于hive,使用hiveContext。但是随着DataSet和DataFrame的API逐渐成为标准的API,就需要为他们建立接入点。所以在spark2.0中,引入SparkSession作为DataSet和DataFrame API的切入点。SparkSession实质上是SQLContext和HiveContext的组合(未来可能还会加上StreamingContext),所以在SQLContext和HiveContext上可用的API在SparkSession上同样是可以使用的。SparkSession内部封装了SparkContext,所以计算实际上是由SparkContext完成的。
     

         接下来回归正题,基于pyspark的MySQL数据库操作实现如下:

def mysqlDataRead(table='table'):
    '''
    读取 MySQL 数据库内容
    '''
    sqlContext=SQLContext(sc)
    url='jdbc:mysql://'+mysql['host']+':'+str(mysql['port'])+'/'+mysql['db']+'?'+'user='+mysql['user']+'&password='+mysql['passwd']
    df=sqlContext.read.format("jdbc").options(url=url,dbtable=table).load()
    print '=========================================================='
    df.show()
    all_columns=df.columns
    print '=========================================================='
    print all_columns
    res_list=df.collect()
    print '=========================================================='
    print type(res_list)
    print '=========================================================='
    result=splitRowData(all_columns,res_list)
    for one in result[:10]:
        print one
    sc.stop()
    return result

           简单实践如下:

table='(SELECT * FROM myTable LIMIT 5) T'
mysqlDataRead(table=table)

        结果如下:

pyspark连接MySQL数据库,执行SQL语句,返回数据查询结果_第1张图片

pyspark连接MySQL数据库,执行SQL语句,返回数据查询结果_第2张图片

      简单的小工具!
 

你可能感兴趣的:(编程技术,软件工具使用,大数据)