300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > pyspark连接MySQL数据库 执行SQL语句 返回数据查询结果

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

时间:2019-04-24 16:24:14

相关推荐

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.columnsprint '=========================================================='print all_columnsres_list=df.collect()print '=========================================================='print type(res_list)print '=========================================================='result=splitRowData(all_columns,res_list)for one in result[:10]:print onesc.stop()return result

简单实践如下:

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

结果如下:

简单的小工具!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。