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

时间: 2024-10-01 04:00:20

sparksql---通过pyspark实现的相关文章

python开发sparkSQL应用

准备条件: 部署hadoop集群 部署spark集群 安装python(本人安装的是anaconda3,python是3.6) 配置环境环境变量: vi .bashrc  #添加如下内容 export SPARK_HOME=/opt/spark/current export PYTHONPATH=$SPARK_HOME/python/:$SPARK_HOME/python/lib/py4j-0.10.4-src.zip ps:spark里面会自带一个pyspark模块,但是本人官方下载的 spa

Pyspark 提交任务遇到的问题

最近使用Pyspark的时候,遇到一些新的问题,希望记录下来,解决的我会补充. 1. WARN DomainSocketFactory: The short-circuit local reads feature cannot be used 2. pyspark TypeError: 'PipelinedRDD' object does not support indexing 该格式的RDD不能直接索引,但是可以通过其他方式实现: 方法一:使用take之后,再索引 —— some_rdd.t

SparkSQL程序设计

1.创建Spark Session val spark = SparkSession.builder . master("local") .appName("spark session example") .getOrCreate()注:下面的 spark 都指的是 sparkSession 2.将RDD隐式转换为DataFrame import spark.implicits._ 3.SparkSession 介绍 spark中包含 sparkContext和 s

Spark-Sql整合hive,在spark-sql命令和spark-shell命令下执行sql命令和整合调用hive

1.安装Hive 如果想创建一个数据库用户,并且为数据库赋值权限,可以参考:http://blog.csdn.net/tototuzuoquan/article/details/52785504 2.将配置好的hive-site.xml.core-site.xml.hdfs-site.xml放入$SPARK_HOME/conf目录下 [root@hadoop1 conf]# cd /home/tuzq/software/hive/apache-hive-1.2.1-bin [root@hadoo

Spark-SQL之DataFrame操作大全

Spark SQL中的DataFrame类似于一张关系型数据表.在关系型数据库中对单表或进行的查询操作,在DataFrame中都可以通过调用其API接口来实现.可以参考,Scala提供的DataFrame API. 本文中的代码基于Spark-1.6.2的文档实现. 一.DataFrame对象的生成 Spark-SQL可以以其他RDD对象.parquet文件.json文件.Hive表,以及通过JDBC连接到其他关系型数据库作为数据源来生成DataFrame对象.本文将以MySQL数据库为数据源,

【Spark深入学习 -16】官网学习SparkSQL

----本节内容-------1.概览        1.1 Spark SQL        1.2 DatSets和DataFrame2.动手干活        2.1 契入点:SparkSession        2.2 创建DataFrames        2.3 非强类型结果集操作        2.4 程序化执行SQL查询        2.5 全局临时视图        2.6 创建DataSets        2.7 与RDD交互操作        2.8 聚集函数3.Sp

spark中使用sparksql对日志进行分析(属于小案例)

一:使用sparksql开发 1.sparksql开发的两种方式 HQL:SQL语句开发 eq : sqlContext.sql("xxxx") DSL : sparkSql中DataFrame的API调用方式 eq:val df=sqlContext.xxx df.select("number") 二:HQL的开发案例 1.新建目录上传日志 2.书写程序

shape into blocks--source code in python based on pySpark

这是微博深度和广度预测的原始代码,写了大约半个月,第一个版本不是这样的,但是这个版本包含所有需要的功能. 模块化的程度也更高.找工作前一直想用python完美解决这个问题,后来发现自己的方法和硬件都有很大的局限. 算是我的第一次正儿八经的尝试在分布式计算的框架下,计算海量的数据. 意识到很多问题,影响我面试时候很多的代码风格. def get_basic_info(): win_path = "E:/spark/weibo_predict/" linux_path = "/h

sparkSQL随笔

sparkSQL 1.主要的数据结构 DataFreames 2.开始使用:SQLContext 创建步骤: Val  sc:sparkContext Val  sqlContext=new org.apache.spark.sql.SQLContext(sc) Import sqlContext.implicits._ //隐形将RDD转化DF 3.构建DF及DF 操作 Val sc:SparkContext Val Val  sqlContext=new org.apache.spark.s