sparksql---通过pyspark实现
上次在spark的一个群里面,众大神议论:dataset会取代rdd么?
大神1:听说之后的mlib都会用dataset来实现,呜呜,rdd要狗带
大神2:dataset主要是用来实现sql的,跟mlib没多大关系,你们说为什么要用dataset呢?
大神3:因为老板喜欢。-------在市场上找一个会写sql和会做spark开发是两个工资等级,两个字“省钱”。
结论:上面的说的东西确实是如此,很多时候我们看到的结果其实某种程度都是市场选择的结果。
-------------------------------------------------------------------------------华丽的分割线-------------------------------------------
以我自己了解sparksql的学习方法,我更倾向于首先实现它,然后再了解具体的原理,however,对于sparksql的数据类型还是要首先理解下,不然之后做的事情可能都做不了。
sparksql里面的类:

这些都在:http://spark.apache.org/docs/1.3.1/api/python/pyspark.sql.html#pyspark.sql
重点说下SQLContext这个就是一个装dataframe的容器,datafram就相当于一张表,Row格式是经常用到;
其他的大家可以去网上了解下:dataframe/rdd的区别于联系,目前mlib大多是用rdd写出来的;
以下给出一个用pyspark写出来的列子:
###first table
from pyspark.sql import SQLContext,Row
ccdata=sc.textFile("/home/srtest/spark/spark-1.3.1/examples/src/main/resources/cc.txt")
ccpart = ccdata.map(lambda le:le.split(",")) ##我的表是以逗号做出分隔
cc1=ccpart.map(lambda p:Row(sid=p[0],age=int(p[1]),yz=p[2],yf=p[3],yc=p[4],hf=p[5],hk=p[6])) ####这就是将数据变成ROW的格式,另外确定数据类型
schemacc1=sqlContext.createDataFrame(cc1)#######源码中createDataframe(ROW,schema),所以如果上步没有转化成ROW是无法完成转化成dataframe
schemacc1.registerTempTable("cc1")#############注册临时表
xx=sqlContext.sql(" SELECT * FROM cc1 WHERE age=20 ") ########直接用写sql就能实现表的运算
point1:说了上面的例子,大家会有可能用到IN,exist这样的关系时,目前2.0版本一下的spark是不支持in,exist.到了2.0后你想怎么折腾都可以;
那么有人肯定会问,如果要用到in,exist,怎么办,我只能说多建张表,用join实现;
point2:下篇博客,我打算直接不用注册成表,直接用dataframe来实现sql
sparksql---通过pyspark实现的更多相关文章
- 基于PySpark的网络服务异常检测系统 (四) Mysql与SparkSQL对接同步数据 kmeans算法计算预测异常
基于Django Restframework和Spark的异常检测系统,数据库为MySQL.Redis, 消息队列为Celery,分析服务为Spark SQL和Spark Mllib,使用kmeans ...
- sparksql udf的运用----scala及python版(2016年7月17日前完成)
问:udf在sparksql 里面的作用是什么呢? 答:oracle的存储过程会有用到定义函数,那么现在udf就相当于一个在sparksql用到的函数定义: 第二个问题udf是怎么实现的呢? regi ...
- Hue 之 SparkSql interpreters的配置及使用
1.环境说明: HDP 2.4 V3 sandbox hue 4.0.0 2.hue 4.0.0 编译及安装 地址:https://github.com/cloudera/hue/releases/t ...
- Spark RDDs vs DataFrames vs SparkSQL
简介 Spark的 RDD.DataFrame 和 SparkSQL的性能比较. 2方面的比较 单条记录的随机查找 aggregation聚合并且sorting后输出 使用以下Spark的三种方式来解 ...
- 【sparkSQL】SparkSession的认识
https://www.cnblogs.com/zzhangyuhang/p/9039695.html https://www.jianshu.com/p/dea6a78b9dff 在Spark1.6 ...
- PySpark笔记
spark源码位置:https://github.com/apache/spark Spark Core核心RDD及编程 什么是RDD:1.是一个抽象类不能直接使用,在子类中实现抽象方法是一个抽象类不 ...
- pyspark 编写 UDF函数
pyspark 编写 UDF函数 前言 以前用的是Scala,最近有个东西要用Python,就查了一下如何编写pyspark的UDF. pyspark udf 也是先定义一个函数,例如: def ge ...
- Spark系列-SparkSQL实战
Spark系列-初体验(数据准备篇) Spark系列-核心概念 Spark系列-SparkSQL 之前系统的计算大部分都是基于Kettle + Hive的方式,但是因为最近数据暴涨,很多Job的执行时 ...
- pyspark学习笔记
记录一些pyspark常用的用法,用到的就会加进来 pyspark指定分区个数 通过spark指定最终存储文件的个数,以解决例如小文件的问题,比hive方便,直观 有两种方法,repartition, ...
随机推荐
- CUDA代码移植
如果CUDA的代码移植,一个是要 include文件夹对不对,这个是.h文件能否找到的关键,另一个就是lib,这个是.lib文件能否找到的关键.具体检查地方,见下头. include: lib:
- Huffman树实现_详细注释
//最优二叉树 #include <iostream> #include <iomanip> using namespace std; //定义结点类型 //[weight | ...
- Sublime Text 2 增加python版本
当系统中装有多个python版本时,Sublime Text 2 使用哪个版本需要手动添加 键入一下内容,path输入python的安转路径 保存至Python27.sublime-build文件 ...
- win7远程桌面连接总是显示凭证不工作解决方法总结
使用远程桌面连接可以在网络的另一端控制某台计算机,对计算机进行实时操作,但有时会出现连接失败的情况,比如总是显示您的凭证不工作,下面是我对此问题解决办法的总结. 方法一: 1.在开始菜单内的运行框里输 ...
- python中datetime模块
Python提供了多个内置模块用于操作日期时间,像calendar,time,datetime.time模块我在之前的文章已经有所介绍,它提供 的接口与C标准库time.h基本一致.相比于time模块 ...
- Oracle的优化器介绍
Oracle优化器介绍 本文讲述了Oracle优化器的概念.工作原理和使用方法,兼顾了Oracle8i.9i以及最新的10g三个版本.理解本文将有助于您更好的更有效的进行SQL优化工作. RBO优化器 ...
- AgileEAS.NET SOA 中间件平台5.2版本下载、配置学习(一):下载平台并基于直连环境运行
一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...
- QuickTest Professionar 快捷键
新建Test – New Test CTRL + N录制 – Record F3打开Test – Open Test CTRL + O新建业务组件 – Business Component > ...
- HDU-1203(01背包)
I NEED A OFFER! Problem Description Speakless 很早就想出国,现在他已经考完了所有需要的考试,准备了所有要准备的材料,于是,便需要去申请学校了.要申请国外的 ...
- cookie小析
cookie用于存储数据,当用户访问了某个网站(网页)时,我们就可以通过cookie来向访问者电脑上存储数据1.不同的浏览器存放的cookie位置不同,也不能通用2.cookie的存储是以域名的形式进 ...