(二)PySpark3,2024年最新完美讲解内存缓存LruCache实现原理

2、操作Hive表

六、总结


PySpark系列文章:

(一)PySpark3:安装教程及RDD编程

(二)PySpark3:SparkSQL编程

(三)PySpark3:SparkSQL40题

(四)PySpark3:Mlib机器学习实战-信用卡交易数据异常检测

一、SparkSQL介绍

Spark SQL是Apache Spark生态系统的一个关键组件,专注于处理和分析结构化和半结构化的大规模数据。Spark SQL建立在Spark核心之上,为用户提供了高效且易用的数据处理接口,从而将关系型和非关系型数据融入到分布式计算环境中。

核心概念之一是DataFrame API,它提供了一个高级的、面向数据的抽象,允许用户以声明性的方式处理数据。DataFrame是一个分布式的、具有表格结构的数据集,类似于传统数据库中的表。通过DataFrame API,用户可以执行各种数据操作,包括过滤、转换、聚合、连接等,而无需深入了解底层的分布式计算模型。

RDD,DataFrame和DataSet对比:

RDD可以存储任何类型的数据,包括结构化数据、半结构化数据和非结构化数据,RDD的操作更接近底层,更适合对数据进行底层控制和自定义处理。

DataFrame构建在RDD之上,提供了更高级的抽象,是一个分布式的、以列为主的数据集合,类似于关系型数据库中的表。DataFrame可以通过多种数据源进行创建,包括结构化数据源(如JSON、CSV、Parquet)和Hive表,并且提供了丰富的SQL和DataFrameAPI,可以方便地进行数据处理和分析。

DataSet在DataFrame基础上进一步增加了数据类型信息,可以通过编程语言的类型系统来检查错误,并提供更好的编译时类型检查。

DataFrame和DataSet都支持SQL交互式查询,可以和 Hive无缝衔接。DataSet只有Scala语言和Java语言接口中才支持,在Python和R语言接口只支持DataFrame。

二、创建DataFrame

首先导包:

import pandas as pd
from pyspark.sql.types import *
import pyspark.sql.functions as F
from pyspark.sql import Row
pd.DataFrame.iteritems = pd.DataFrame.items

1、通过ToDF方法

可以将RDD用toDF方法转换成DataFrame。

rdd = sc.parallelize([(1,“James”,27,1000),(2,“Bob”,22,500),(3,“Alice”,25,800),(4,“Jon”,29,1200)])
df = rdd.toDF([“id”,“name”,“age”,“sal”])
df.show()

输出结果:

±–±----±–±—+
| id| name|age| sal|
±–±----±–±—+
| 1|James| 27|1000|
| 2| Bob| 22| 500|
| 3|Alice| 25| 800|
| 4| Jon| 29|1200|
±–±----±–±—+

2、通过createDataFrame方法

可以将Pandas.DataFrame转换成pyspark中的DataFrame,也可直接对数据列表、schema进行转换。

#将pandas.DataFrame转换为pyspark.DataFrame
pdf = pd.DataFrame([(1,“James”,27,1000),(2,“Bob”,22,500),(3,“Alice”,25,800),(4,“Jon”,29,1200)]
,columns=[“id”,“name”,“age”,“sal”])
df = spark.createDataFrame(pdf)
print(type(df))

#将list转换为pyspark.DataFrame
df = spark.createDataFrame([(1,“James”,27,1000),(2,“Bob”,22,500),(3,“Alice”,25,800),(4,“Jon”,29,1200)]
,[“id”,“name”,“age”,“sal”])
print(type(df))

  • 20
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值