【博学谷学习记录】超强总结,用心分享|狂野大数据课程【Spark SQL的入门案例】的总结分析

1 Spark SQL的统一入门

​ 从Spark SQL开始, 需要更换核心对象, 因为SparkContext对象是SparkCore核心对象, 无法支持Spark SQL编写的, Spark框架专门提供了一个用于支持Spark SQL的编程入口类: SparkSession, 此类同时也可以获取原有的SparkContext对象

如何构建一个SparkSession对象呢?

from pyspark import SparkContext, SparkConf
from pyspark.sql import SparkSession
import os

# 锁定远端环境, 确保环境统一
os.environ['SPARK_HOME'] = '/export/server/spark'
os.environ['PYSPARK_PYTHON'] = '/root/anaconda3/bin/python3'
os.environ['PYSPARK_DRIVER_PYTHON'] = '/root/anaconda3/bin/python3'

if __name__ == '__main__':
    print("演示: 如何创建SparkSession核心对象")

    # 1. 创建SparkSession对象
    spark = SparkSession.builder.appName('create_spark_session').master('local[*]').getOrCreate()


    # 2. 获取SparkContext对象
    sc = spark.sparkContext


    # 3. 执行相关的操作: Spark SQL  还是 Spark RDD

    # 4. 释放资源
    sc.stop()
    spark.stop()

2. Spark SQL的入门案例

需求: 有如下结构化数据, 要求查询在北京地区的学员有那些?

数据集:

1,张三,男,北京
2,李四,女,上海
3,王五,女,北京
4,赵六,男,广州
5,田七,男,北京
6,周八,女,杭州

代码实现:

from pyspark import SparkContext, SparkConf
from pyspark.sql import SparkSession
import os

# 锁定远端环境, 确保环境统一
os.environ['SPARK_HOME'] = '/export/server/spark'
os.environ['PYSPARK_PYTHON'] = '/root/anaconda3/bin/python3'
os.environ['PYSPARK_DRIVER_PYTHON'] = '/root/anaconda3/bin/python3'

if __name__ == '__main__':
    print("Spark SQL的入门案例")

    # 1. 创建SparkSession对象
    spark = SparkSession.builder.appName('spark_sql_init').master('local[*]').getOrCreate()

    # 2.读取外部文件数据
    """
        path: 指定读取数据的路径
        header: 数据集是否含有头信息,默认为False(如果为true, 会将数据集第一行设置为表头)
        inferSchema: 是否需要自动识别每一列的数据类型,默认为false 
        sep: 设置字段与字段之间的分隔符号, 默认为 csv为 逗号
    """
    df = spark.read.csv(
        path='file:///export/data/workspace/ky06_pyspark/_03_SparkSql/data/stu.txt',
        header=True,
        inferSchema=True,
        sep=' ',
        encoding='UTF-8'
    )

    #df.printSchema() # 查看字段结构信息
    #df.show() # 显示数据, 默认显示前20行

    # 3- 执行相关的操作:
    # 3.1 使用SQL 的形式
    df.createTempView('stu')

    df_res = spark.sql("""
        select
            *
        from stu where address = '北京'
    """)

    df_res.show()

    # 3.2  代码的形式
    df.where("address = '北京'").show()

    # 3- 释放资源
    spark.stop()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值