[大数据分析] pySpark数据分析(一)

代码地址:https://github.com/LoftyCloud/courseWork/tree/main/DataAnalyticsWithSpark

pySpark数据分析(一)

我安装的版本是spark 2.4.3和hadoop 2.7.7(或只安装winutils),配置好环境变量。

一、驱动器SparkSession初始化

驱动器程序通过对象SparkContext(即sc)连接spark集群,在spark shell中会自动初始化sc,但python和scala编写的spark程序中需要自定义一个sc。运行会出现一些WARN。

import findspark
findspark.init()

from pyspark import SparkConf, SparkContext

# setMaster为集群URL:即让spark连接到指定集群上,local指的是单机单线程运行,而不必运行在集群上
conf = SparkConf().setMaster("local").setAppName("name")
sc = SparkContext(conf=conf)  # 定义驱动器对象,sparksession的子对象
spark = SparkSession(sc)

# 关闭sc
sc.stop()
  • error1:the environment is inconsistent,耗时会有点久。

解决:更新conda

conda activate base
conda install anaconda
conda update --all

参考链接

  • error2:Solving environment: failed

看到有的说是C:\Users\<YOUR_USERNAME>\.condarc的问题,但对文件进行修改或删除后还是偶尔会出现这样的情况。

参考链接

  • error3:PackagesNotFoundError: The following packages are not available from current channels

使用虚拟环境中的pip进行安装即可:D:\Anaconda3\envs\spark\Scripts\pip.exe install findspark

  • error4:未使用findspark时报错:org.apache.spark.api.python.PythonUtils.isEncryptionEnabled does not exist in the JVM

    使用findspark.init()时报错:TypeError: ‘bytes’ object cannot be interpreted as an integer

原因:pyspark版本需要与python版本相匹配

pyspark版本:3.3.1

python版本:3.10.8

解决:使用更低版本的python,我换成了3.7,解决一些包冲突要等挺久。最后更新一下解释器路径。

参考链接

  • error5:Failed to locate the winutils binary in the hadoop binary path

原因:hadoop的bin目录下没有winutils.exe文件(可能是因为版本原因)

解决:JAVA_HOME环境变量不能有空格;下载一个放入bin目录下,重启一下或加上代码

System.setProperty("hadoop.home.dir", "E:\\Program Files\\hadoop-2.7.0")

参考链接

二、pyspark使用测试

使用pysaprk读取数据并计算元素个数:

def count_line(stream):
	numlines = stream.count()
    stream.show(10)
    print(numlines)
    # multiLine=False:12762 
    # multiLine=True:2184 
    # 期望:12492

# 读取文件
file_path = "F:/Study/spark/dataset/myntra_products_catalog.csv"
# data = sc.textFile(file_path)  # 无法多行读取
spark = SparkSession(sc)
data = spark.read.csv(file_path, multiLine=True, inferSchema= True, header=True)
count_line(data)

pyspark程序运行后可以在http://localhost:4040查看到spark提供的WEB UI界面。由于程序运行完后会关闭spark的驱动器,从而导致连接失败,故需在程序末尾加个空循环再访问。

  • error1:发现行数实际输出与预期输出不匹配,设置读取参数multiLine=True后更是只有2184行。

将读取到的数据保存发现还是有12492行,查阅资料发现使用sparksession读取文件后会返回dataframe格式而不是rdd。考虑到count()是输出rdd中的元素数,故尝试将读取到的data转成rdd。

解决:将numlines = stream.count()改成numlines = stream.rdd.count(),输出为12491。

参考链接

dataframe与rdd的区别

  • error2:ERROR:root:Exception while sending command.

    ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。

    ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。

原因:看文献说是Spark 限制了内存使用导致引发错误。

解决:通过conf修改spark的配置、增加内存,如下。

conf = SparkConf().setMaster("local").setAppName("name").set('spark.executor.memory', '15G')

参考链接

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,您想了解基于pyspark的新闻数据分析方案,我可以为您提供一些思路和建议。 首先,pyspark是一个开源的大数据处理框架,它可以在分布式计算平台上进行数据处理和分析,具有高可扩展性和高性能。在使用pyspark进行新闻数据分析时,可以考虑以下几个步骤: 1. 数据采集和清洗:首先需要从多个数据源中采集新闻数据,并对数据进行清洗和去重处理,以保证数据的准确性和完整性。 2. 数据存储和处理:将清洗后的数据存储到分布式存储系统中,如HDFS或S3,然后使用pyspark进行数据处理和分析,包括数据聚合、统计分析、文本挖掘等。 3. 数据可视化和展示:将分析结果可视化展示出来,可以使用pyspark的可视化工具,如matplotlib和seaborn,也可以使用其他的可视化库,如D3.js和Tableau等。 在进行新闻数据分析时,可以考虑以下几个方面: 1. 新闻热度分析:通过统计新闻的阅读量、评论量、分享量等指标,来分析新闻的热度趋势和热门话题。 2. 新闻情感分析:通过对新闻文本进行情感分析,来分析新闻的正面、负面、中性情感分布,以及不同主题下的情感变化。 3. 新闻主题分析:通过对新闻文本进行主题建模和聚类分析,来发现新闻的主题和热点,以及不同主题下的关键词和趋势。 以上是一些基于pyspark进行新闻数据分析的思路和建议,希望能够对您有所帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值