创建 spark_session 读取数据-加入缓存-并使用SQL语句分析

本文详细介绍如何使用SparkSession读取并缓存数据,通过SparkSQL进行数据分析,包括使用DSL和SQL方式,以及处理CSV文件的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


c.spark_session_quick_start.py

1 创建 spark_session 读取数据-加入缓存
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os
import time
from pyspark.sql import SparkSession

if __name__ == "__main__":
	#配置环境变量
    os.environ['JAVA_HOME'] = 'C:/Java/jdk1.8.0_91'
    os.environ['HADOOP_HOME'] = 'C:/Java/hadoop-2.6.0-cdh5.7.6'
    os.environ['SPARK_HOME'] = 'C:/Java/spark-2.2.0-bin-2.6.0-cdh5.7.6'

    # 实例化SparkSession对象,以本地模式是运行Spark程序
    spark = SparkSession \
        .builder \
        .appName("Hello_World_Application") \
        .master("local[2]")\
        .getOrCreate()
    # print type(spark)   检验spark是否可用

    # 读取数据, 一行一行的读取,每行数据的字段名称为value,类型为字符串
    log_data = spark.read.text("datas/README.md")
    print (type(log_data))
    print (log_data.first())
    print ("Count: " + str(log_data.count()))
    print ('\n')

    # 在Spark框架中可以将数据进行缓存,以便再次使用时,直接从缓存中读取数据
    # 默认缓存级别:MEMORY_AND_DISK,先放内存,不足放磁盘
    log_data.cache()

    # 对DataFrame中每条数据进行过滤,获取每条数据中的value字段的只值,进行筛选
    nums_spark = log_data.filter(log_data.value.contains('Spark')).count()
    nums_python = log_data.filter(log_data.value.contains('Python')).count()
    print("Lines with Spark: %i, lines with Python: %i" % (nums_spark, nums_python))
2 SparkSQL数据分析(DSL,SQL)
    # 使用SparkSession读取wc.data,数据封装在DataFrame集合中
    wc_df = spark.read.text('datas/wc.data')
    print (type(wc_df))
    wc_df.show(n=5,  truncate=False)

    # DataFrame = RDD + schema, 如何将DataFrame转换为RDD
    """
    SparkSQL中对数据分析两种方式:
    -1. DSL分析    调用DataFrame中函数  
    -2. SQL分析    需要将DataFrame注册为临时视图,编写类似MySQL中SQL进行分析    
    """
    # 导入SparkSQL中函数库
    from pyspark.sql.functions import *

    word_df = wc_df\
        .select(explode(split(wc_df.value, '\\s+'))\
        .alias('word'))

    word_count_df = word_df.groupBy('word').count()  # 操作以后, 聚合count以后的字段名称为count
    word_count_df.show()


    # 注册时临时视图
    word_df.createOrReplaceTempView('view_tmp_word')
    spark.sql('SELECT word, COUNT(1) AS count FROM view_tmp_word GROUP BY word').show()

    # 读取CSV文件
    csv_df = spark.read.csv('datas/flights.csv', header=True, inferSchema=True)
    csv_df.printSchema()
    csv_df.show(n=10, truncate=False)

    csv_df.write.csv('datas/flights.tsv', header=True, sep='\t')

    # 为了查看Spark程序运行是的WEB UI界面,让线程休眠一段时间
    time.sleep(100000)

    # SparkContext Stop
    spark.stop()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SongpingWang

你的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值