sparkSQL、dataframe
spark 读hive表:2.1.1
https://blog.csdn.net/qq_35741557/article/details/81135003
http://www.aboutyun.com/forum.php?mod=viewthread&tid=12358&page=1
空值填充:http://spark.apache.org/docs/1.5.0/api/python/_modules/pyspark/sql/dataframe.html
spark 将dataframe数据写入Hive分区表:http://www.cnblogs.com/longjshz/p/5414051.html
#df22.select("pkg","cnt01").sort("cnt01",ascending=False).show(100) #按照某一个字段进行排序,降序
#从数据表读取数据,把数据读为数据框
df=sqlContext.sql("select * from zhangb.gedeng limit 2")
#把整张数据表变成数据框
df1=sqlContext.table("zhangb.gedeng")
#把数据框转成rdd形式
dfrdd=df1.rdd #不正规
dfrdd1 =df1.rdd.map(tuple)
dfrdd2 =df1.rdd.map(list)
#把数据框注册为表
df1.registerTempTable("people")
# 将普通RDD转变为DataFrame
rdd = sparkContext.textFile("sex") \
.flatMap(lambda line: line.split()) \
.map(lambda word: (word, 1)) \
.reduceByKey(lambda a, b: a + b) \
wordCounts = sqlContext.createDataFrame(rdd, ["word", "count"]
#实际数据练习rdd转换成df
rdd = sc.textFile("sex").map(lambda p :p.strip().split('\t')).\
filter(lambda p:len(p)==3).map(lambda p:((re.split(";|,",p[2])),int(p[1]))).\
flatMap(lambda p:[(p[0][i],p[1])for i in range(len(p[0])) if i%2==0]).filter(lambda p:p[0]!='')
pkg1 = sqlContext.createDataFrame(rdd, ["pkg", "sex"])
# 将本地数据容器转变为DataFrame
da = [("Alice", 21), ("Bob", 24)]
people = sqlContext.createDataFrame(da, ["name", "age"])
db=[("Alice", 100,46), ("Bob", 39,47),("cele", 89,30)]
score=sqlContext.createDataFrame(db,['name','math','eng'])
#join
dc=people.join(score,people.name==score.name,"left_outer")
# 将Pandas DataFrame转变为Spark DataFrame(Python API特有功能)
sparkDF = sqlContext.createDataFrame(pandasDF)
#=========对数据框进行查看操作
# 创建一个只包含"年轻"用户的DataFrame
young = users.filter(users.age < 21)
# 也可以使用Pandas风格的语法
young = users[users.age < 21]
# 将所有人的年龄加1
young2=young.select(young.name, young.age + 1)
# 统计年轻用户中各性别人数
young.groupBy("gender").count().show()
# 将所有年轻用户与另一个名为logs的DataFrame联接起来(合并)
young.join(logs, logs.userId == users.userId, "left_outer")
# 除DSL以外,我们当然也可以像以往一样,用SQL来处理DataFrame:
df1.registerTempTable("dd")
#==============保存输出
#最后,当数据分析逻辑编写完毕后,我们便可以将最终结果保存下来或展现出来:
# 保存为SQL表
young.saveAsTable(tableName="young", source="parquet" mode="overwrite")
# 转换为Pandas DataFrame(Python API特有功能)
pandasDF = young.toPandas()
#追加至HDFS上的Parquet文件
young.save(path="hdfs://path/to/data.parquet",
source="parquet",
mode="append")
#覆写S3上的JSON文件
young.save(path="s3n://path/to/data.json",
source="json",
mode="append")
#空值填充
1 pyspark --master yarn-client --executor-memory 5G --num-executors 50
2 import os
3 import copy
4 import codecs
5 import operator
6 import re
7 from math import log
8 from pyspark.sql import SQLContext,Row
9 from pyspark.mllib.regression import LabeledPoint
10 from pyspark import SparkContext, SparkConf
11
12 #从数据表读取数据,把数据读为数据框
13 df=sqlContext.sql("select * from zhangb.gedeng limit 2")
14
15 #把整张数据表变成数据框
16 df1=sqlContext.table("zhangb.gedeng")
17
18 #把数据框注册为表
19 df1.registerTempTable("people")
20
21 # 将普通RDD转变为DataFrame
22 rdd = sparkContext.textFile("sex") \
23 .flatMap(lambda line: line.split()) \
24 .map(lambda word: (word, 1)) \
25 .reduceByKey(lambda a, b: a + b) \
26 wordCounts = sqlContext.createDataFrame(rdd, ["word", "count"]
27
28 #实际数据练习rdd转换成df
29
30 rdd = sc.textFile("sex").map(lambda p :p.strip().split('\t')).\
31 filter(lambda p:len(p)==3).map(lambda p:((re.split(";|,",p[2])),int(p[1]))).\
32 flatMap(lambda p:[(p[0][i],p[1])for i in range(len(p[0])) if i%2==0]).filter(lambda p:p[0]!='')
33
34 pkg1 = sqlContext.createDataFrame(rdd, ["pkg", "sex"])
35
36 # 将本地数据容器转变为DataFrame
37 da = [("Alice", 21), ("Bob", 24)]
38 people = sqlContext.createDataFrame(da, ["name", "age"])
39
40 db=[("Alice", 100,46), ("Bob", 39,47),("cele", 89,30)]
41 score=sqlContext.createDataFrame(db,['name','math','eng'])
42
43 #join
44 dc=people.join(score,people.name==score.name,"left_outer")
45
46 # 将Pandas DataFrame转变为Spark DataFrame(Python API特有功能)
47 sparkDF = sqlContext.createDataFrame(pandasDF)
48
49 #=========对数据框进行查看操作
50
51 # 创建一个只包含"年轻"用户的DataFrame
52 young = users.filter(users.age < 21)
53
54 # 也可以使用Pandas风格的语法
55 young = users[users.age < 21]
56
57 # 将所有人的年龄加1
58
59 young2=young.select(young.name, young.age + 1)
60
61 # 统计年轻用户中各性别人数
62 young.groupBy("gender").count().show()
63
64 # 将所有年轻用户与另一个名为logs的DataFrame联接起来
65 young.join(logs, logs.userId == users.userId, "left_outer")
66
67 # 除DSL以外,我们当然也可以像以往一样,用SQL来处理DataFrame:
68
69 df1.registerTempTable("dd")
70
71 #==============保存输出
72
73 #最后,当数据分析逻辑编写完毕后,我们便可以将最终结果保存下来或展现出来:
74 # 保存为SQL表
75 young.saveAsTable(tableName="young", source="parquet" mode="overwrite")
76
77 # 转换为Pandas DataFrame(Python API特有功能)
78 pandasDF = young.toPandas()
79
80 #追加至HDFS上的Parquet文件
81 young.save(path="hdfs://path/to/data.parquet",
82 source="parquet",
83 mode="append")
84
85 #覆写S3上的JSON文件
86
87 young.save(path="s3n://path/to/data.json",
88 source="json",
89 mode="append")
sparkSQL、dataframe的更多相关文章
- Spark之 SparkSql、DataFrame、DataSet介绍
SparkSql SparkSql是专门为spark设计的一个大数据仓库工具,就好比hive是专门为hadoop设计的一个大数据仓库工具一样. 特性: .易整合 可以将sql查询与spark应用程序进 ...
- SparkSQL 中 RDD 、DataFrame 、DataSet 三者的区别与联系
一.SparkSQL发展: Shark是一个为spark设计的大规模数据仓库系统,它与Hive兼容 Shark建立在Hive的代码基础上,并通过将Hive的部分物理执行计划交换出来(by s ...
- 35、sparkSQL及DataFrame
一.saprkSQL背景 Spark 1.0版本开始,推出了Spark SQL.其实最早使用的,都是Hadoop自己的Hive查询引擎:但是后来Spark提供了Shark:再后来Shark被淘汰,推出 ...
- 谈谈RDD、DataFrame、Dataset的区别和各自的优势
在spark中,RDD.DataFrame.Dataset是最常用的数据类型,本博文给出笔者在使用的过程中体会到的区别和各自的优势 共性: 1.RDD.DataFrame.Dataset全都是spar ...
- Spark-SQL之DataFrame操作大全
Spark SQL中的DataFrame类似于一张关系型数据表.在关系型数据库中对单表或进行的查询操作,在DataFrame中都可以通过调用其API接口来实现.可以参考,Scala提供的DataFra ...
- Spark-SQL之DataFrame操作
Spark SQL中的DataFrame类似于一张关系型数据表.在关系型数据库中对单表或进行的查询操作,在DataFrame中都可以通过调用其API接口来实现.可以参考,Scala提供的DataFra ...
- Spark RDD、DataFrame原理及操作详解
RDD是什么? RDD (resilientdistributed dataset),指的是一个只读的,可分区的分布式数据集,这个数据集的全部或部分可以缓存在内存中,在多次计算间重用. RDD内部可以 ...
- SparkSQL和DataFrame
SparkSQL和DataFrame SparkSQL简介 Spark SQL是Spark用来处理结构化数据的一个模块,它提供了一个编程抽象叫做DataFrame并且作为分布式SQL查询引擎的作用.它 ...
- RDD、DataFrame和DataSet
简述 RDD.DataFrame和DataSet是容易产生混淆的概念,必须对其相互之间对比,才可以知道其中异同:DataFrame多了数据的结构信息,即schema.RDD是分布式的 Java对象的集 ...
随机推荐
- win xp 安装 VS2010 时要重启是因为没安装WINDOWS INSTALLER 4.5
win xp 安装 VS2010 时要重启是因为没安装WINDOWS INSTALLER 4.5. 无意间看到VS2010安装列表中有一项是 WINDOWS INSTALLER 4.5 . 装这个玩意 ...
- sql表设计
数据库实际上是系统逻辑在磁盘上的固化,是信息河流的蓄水池. 数据库的表应有如下类型 1)类表.配置表.作为业务逻辑基本的名字,状态的定义,作为构建逻辑世界的最基础框架,解释框架的框架. 特点,数据不会 ...
- iOS APP网络分析之rvictl(可以捕捉除了Wifi以外的网络类型)
From: http://danqingdani.blog.163.com/blog/static/18609419520135204934551/ wireshark亲测可用. ********** ...
- 介绍了如何取成员函数的地址以及调用该地址:C++
摘要:介绍了如何取成员函数的地址以及调用该地址. 关键字:C++成员函数 this指针 调用约定 一.成员函数指针的用法 在C++中,成员函数的指针是个比较特殊的东西.对普通的函数指针来说,可以视为一 ...
- ansible的安装过程 和基本使用
之前安装了一遍,到最后安装成功的时候出现了这种问题: [root@localhost ~]# ansible webserver -m command -a 'uptime' ............ ...
- JavaScript之图片操作4
本次要实现的效果是,在一个盒子里面有一张长图,只显示了一部分,为方便用户浏览,当鼠标移入时,图片开始滚动,将盒子分成上下两部分,当鼠标移入上部分时,图片向上滚动,当鼠标移入下部分时,图片向下滚动. 为 ...
- dom2级事件兼容性写法
添加事件 function addEvent(node,type,hander){ if(!node) return false; //如果没有这个元素 ,直接返回: if(node.addE ...
- uploadify是通过flash上传,服务器获取type为application/octet-stream
uploadify是通过flash上传,服务器获取type为application/octet-stream,因此允许上传的类型要加上application/octet-stream
- Scipy
插值interpolate模块 计算插值有两个基本方法: 1.对一个完整的数据集去拟合一个函数(一条线穿过所有数据集的点) 2.对数据集的不同部分拟合出不同的函数,而函数之间的曲线平滑对接 一维插值 ...
- NOIP考前复习-数制转换,数论模板与文件读写
数制转换有两种题型,一般一题,分值1.5分. 题型一:R进制转十进制 解法就是:按权展开,但要注意各个位的权,最低位(最右边)的权是0次方,权值为1. 纯整数的情况: (11010110)2 = 1× ...