Spark SQL and DataFrames
来源:互联网 发布:淘宝账户怎么贷款额度 编辑:程序博客网 时间:2024/05/22 15:35
1.SparkSession
SparkSQL的操作都建立在SparkSession上,创建一个SparkSession叫spark,后面代码都基于此,不再提示
from pyspark.sql import SparkSessionspark = SparkSession\ .builder\ .appName("PythonSQL")\ .config("spark.some.config.option", "some-value")\ .getOrCreate()
2.创建SparkDataFrames
df = spark.read.json("examples/src/main/resources/people.json")df.show()
3.DataFrame的基本操作
读取文件生成DataFrame df = spark.read.json("examples/src/main/resources/people.json")
查看内容 df.show()
树结构打印表结构df.printSchema()
选择一列df.select("name").show()
选择两列,其中一列+1df.select(df['name'],df['age']+1).show()
筛选df.filter(df['age']>21).show()
分组聚合df.groupBy("age").count().show()
4.由RDD转换
方式1:Row推断模式
from pyspark.sql import Rowsc = spark.sparkContextlines = sc.textFile("examples/src/main/resources/people.txt")parts = lines.map(lambda l:l.split(','))people = parts.map(lambda p:Row(name=p[0],age=int(p[1])))schemaPeople = spark.createSchema(people)schemaPeople.createOrReplaceTempView('people')
名为spark
的SparkSession注册了名为people
的table,可通过spark.sql()
执行对注册的表的sql语句。
table由RDD转化来,由Row()
建立列,用createDataFrame()
注册table,用createOrReplaceTempView()
建立表名。
teenagers = spark.sql('SELECT name FROM people WHERE age >= 13 AND age <= 19')teenNames = teenagers.map(lambda p:'name:' + p.name)for teenName in teenNames.collect(): print(teenName)
已经注册了表的SparkSession执行的sql语句可用RDD的操作。
方式2:StructType指定模式
from pyspark.sql.types import *sc = spark.sparkContextlines = sc.textFile("examples/src/main/resources/people.txt")parts = lines.map(lambda l:l.split(','))people = parts.map(lambda p:(p[0],p[1].strip()))schema = StructType().add('name','string',True).add('age','int',True)schemaPeople = spark.createDataFrame(people, schema)schemaPeople.createOrReplaceTempView("people")
RDD转换为DataFrame没有用Row时未识别模式,通过StructType()
用添加add()方法加入StructField('列名','数据类型',是否允许null)
建立表结构(即模式schema),注册table时候StructType()对象作为第二个参数以createDataFrame
加入SparkSession。
5.Todo
0 0
- Spark SQL and DataFrames
- Spark SQL and DataFrames Version 1.6
- Spark SQL, DataFrames and Datasets Guide
- Spark SQL, DataFrames and Datasets Guide
- Spark SQL, DataFrames and Datasets Guide
- pyspark-Spark SQL, DataFrames and Datasets Guide
- Spark SQL, DataFrames and Datasets Guide
- 学习spark:五、Spark SQL, DataFrames and Datasets Guide
- Spark -9:Spark SQL, DataFrames and Datasets 编程指南
- spark sql 创建dataframes
- Spark SQL,DataFrames and DataSets Guide官方文档翻译
- Spark SQL and DataFrame Guide(1.4.1)——之DataFrames
- Spark SQL, DataFrames 和 Datasets 指南
- Spark SQL和DataFrames支持的数据格式
- Spark SQL RDD与DataFrames相互转换
- Spark DataFrames
- Spark DataFrames
- 《Spark 官方文档》Spark SQL, DataFrames 以及 Datasets 编程指南
- Android Studio五分钟带你从菜鸟到高级调试
- IDEA Intellij小技巧和插件
- 深入浅出JMS(一)--JMS基本概念
- 继承view的自定义控件示例
- EditText基础属性
- Spark SQL and DataFrames
- 如何使用iOS 开发证书 和 Profile 文件
- 质数因子
- Xamarin.ios引用第三方SDK
- 常用sql注入语句
- ButterKnife在Android 中的使用
- log4j2 详细配置
- iOS中字符串转日期,日期转字符串
- php中防止SQL注入的方法