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的更多相关文章

  1. Spark之 SparkSql、DataFrame、DataSet介绍

    SparkSql SparkSql是专门为spark设计的一个大数据仓库工具,就好比hive是专门为hadoop设计的一个大数据仓库工具一样. 特性: .易整合 可以将sql查询与spark应用程序进 ...

  2. SparkSQL 中 RDD 、DataFrame 、DataSet 三者的区别与联系

    一.SparkSQL发展: Shark是一个为spark设计的大规模数据仓库系统,它与Hive兼容      Shark建立在Hive的代码基础上,并通过将Hive的部分物理执行计划交换出来(by s ...

  3. 35、sparkSQL及DataFrame

    一.saprkSQL背景 Spark 1.0版本开始,推出了Spark SQL.其实最早使用的,都是Hadoop自己的Hive查询引擎:但是后来Spark提供了Shark:再后来Shark被淘汰,推出 ...

  4. 谈谈RDD、DataFrame、Dataset的区别和各自的优势

    在spark中,RDD.DataFrame.Dataset是最常用的数据类型,本博文给出笔者在使用的过程中体会到的区别和各自的优势 共性: 1.RDD.DataFrame.Dataset全都是spar ...

  5. Spark-SQL之DataFrame操作大全

    Spark SQL中的DataFrame类似于一张关系型数据表.在关系型数据库中对单表或进行的查询操作,在DataFrame中都可以通过调用其API接口来实现.可以参考,Scala提供的DataFra ...

  6. Spark-SQL之DataFrame操作

    Spark SQL中的DataFrame类似于一张关系型数据表.在关系型数据库中对单表或进行的查询操作,在DataFrame中都可以通过调用其API接口来实现.可以参考,Scala提供的DataFra ...

  7. Spark RDD、DataFrame原理及操作详解

    RDD是什么? RDD (resilientdistributed dataset),指的是一个只读的,可分区的分布式数据集,这个数据集的全部或部分可以缓存在内存中,在多次计算间重用. RDD内部可以 ...

  8. SparkSQL和DataFrame

    SparkSQL和DataFrame SparkSQL简介 Spark SQL是Spark用来处理结构化数据的一个模块,它提供了一个编程抽象叫做DataFrame并且作为分布式SQL查询引擎的作用.它 ...

  9. RDD、DataFrame和DataSet

    简述 RDD.DataFrame和DataSet是容易产生混淆的概念,必须对其相互之间对比,才可以知道其中异同:DataFrame多了数据的结构信息,即schema.RDD是分布式的 Java对象的集 ...

随机推荐

  1. linux 信号处理 三 (信号集的使用)

    sigprocmask系统调用 使用条件: 1.有时候不希望在接到信号时就立即停止当前执行,去处理信号,同时也不希望忽略该信号,而是延时一段时间去调用信号处理函数.这种情况是通过阻塞信号实现的. 2. ...

  2. Android 对话框(Dialog)大全

    转自: http://www.cnblogs.com/salam/archive/2010/11/15/1877512.html Activities提供了一种方便管理的创建.保存.回复的对话框机制, ...

  3. make_heap()等函数的用法

    1.make_heap() make_heap()用于把一个可迭代容器变成一个堆,默认是大顶堆. 它有三个参数.第一个参数是指向开始元素的迭代器,第二个参数是指向最末尾元素的迭代器,第三个参数是les ...

  4. java学习——构造类之3!+5!=126

    package my_project; import java.util.Scanner; public class my_first_class { public static void main( ...

  5. [转]链接中 href='#' 和 href='###' 的区别以及优缺点

    本文来自:http://c.jinhusns.com/bar/t-829 链接中 href='#' 和 href='###' 的区别以及优缺点 上一篇 下一篇近乎_问阳 发表于:2013-09-09 ...

  6. python&pandas 与mysql 连接

    1. python 与mysql 连接及操作,直接上代码,简单直接高效: import MySQLdb try: conn = MySQLdb.connect(host='localhost',use ...

  7. Python 编程规范梳理

    缘由 由于项目团队中新加入了几名攻城狮, 大家之前的背景各不相同,写出的代码也是“风格迥异”.正所谓:“无规则不成方圆”,因此需要对编程进行必要的规范. 整体的思路是:依照PEP8 Python 编码 ...

  8. 修改 Docker-MySQL 容器的 默认用户加密规则

    背景介绍 今天开始做集成测试,需要把程序和环境重新部署在新的服务器上.项目的环境都是基于Docker来的,所以数据库也是选择从Docker官网上面拉官方的MySQL镜像.(Tag = 8.0.12) ...

  9. Hibernate JavaBean.hbm.xml配置

    主键生成策略: hibernate中必须设置主键 <generator> 由数据库维护: identity:用于自动生成主键方式(没有自增主键的数据库不使用eg:oracle) seque ...

  10. 【Linux_Unix系统编程】chapter6 进程

    chapter6 进程 重点关注进程虚拟内存的布局及内容.6.1 进程和程序 进程(process)是一个可执行程序(program)的实例. 程序是包含了一系列信息的文件,这些信息描述了如何在运行时 ...