2024.8.24(hadoop学习第七周)

这周学习了python中面对对象编程以及一些和pyspark相关的东西,对于python面向对象编程方面的东西,我发现大部分和c++的面向对象以及Java等语言都是极其相似的,其中令我感觉比较新的东西应该是python类对象所具有的名叫魔术方法的函数,类似于c++当中类对象的重载,但不同的是在python中这类方法的方法名被固定化了,并且书写格式相较于c++和Java感觉起来也简单了许多,不得不说python的确是一种比较简单的方法,下面是几种常用的魔术方法的代码示例:

class Clock1:
    id=None
    price=None

class Clock2:
    id = None
    price = None

    def __init__(self,id,price):
        self.id=id
        self.price=price

    def __str__(self):
        return f"将对象从地址转换为自定义字符串{self.id}"

    def __lt__(self, other):   #重载大于和小于号
        return self.price<other.price

    def __le__(self, other):   #重载大于等于和小于等于号
        return self.price<=other.price

    def __eq__(self, other):   #重载==号
        return self.id==other.id


clock1=Clock1()
clock1.id="003032"
clock1.price=19.99
print(clock1)
print(str(clock1))

clock2=Clock2("000001",20.00)
print(clock2)
print(str(clock2))

clock3=Clock2("000001",10.00)
print(clock2<clock3)
print(clock2<=clock3)
print(clock2==clock3)

对于pyspark方面的知识,我其实在最开始下载pyspark库时就出现了问题,在下载完第一个三百二十多MB的文件包后,我的命令框报出了以下错误:error: subprocess-exited-with-error,在pycharm内通过设置->python解释器进行下载pyspark软件包同样报错,于是我开始上网进行搜索资料,有的报告说是我的python解释器的setuptools包版本过低,需要我升级到最新版本重新进行下载,可是依照教程升级到最新版本后发现依旧会报错,于是我继续搜索,最终在Profile of spark-upload · PyPI网站下依照教程将whl(一个叫做轮子的东西)下载并更新至最新版本后成功解决了这一问题,并且通过黑马程序员的课程学会了一些pyspark的基本代码操作:

from pyspark import SparkConf,SparkContext

#创建SparkConf类对象
conf=SparkConf().setMaster("local[*]").setAppName("test_spark_app")
#基于SparkConf类对象创建SparkContext对象
sc=SparkContext(conf=conf)
#打印PySpark的运行版本
print(sc.version)
#停止SparkContext对象的运行(停止PySpark程序)
sc.stop()
#通过PySpark代码加载数据,即数据输入

from pyspark import SparkConf,SparkContext

#创建SparkConf类对象
conf=SparkConf().setMaster("local[*]").setAppName("test_spark_app")
#基于SparkConf类对象创建SparkContext对象
sc=SparkContext(conf=conf)

#通过parallelize方法将Python对象加载到Spark内,成为RDD对象
rdd1=sc.parallelize([1,2,3,4,5])   #列表
rdd2=sc.parallelize((1,2,3,4,5))   #元组
rdd3=sc.parallelize("abcdefg")     #字符串
rdd4=sc.parallelize({1,2,3,4,5})   #集合
rdd5=sc.parallelize({"key1":"value1","key2":"value2"})   #字典

#如果要查看RDD里面有什么内容,需要用collect()方法
print(rdd1.collect())
print(rdd2.collect())
print(rdd3.collect())
print(rdd4.collect())
print(rdd5.collect())

#使用textFile方法,读取文件数据加载到Spark内,成为RDD对象
rdd=sc.textFile("资料/hello.txt")
print(rdd.collect())

sc.stop()

 

posted @ 2024-08-24 22:01  贾贾鱼  阅读(7)  评论(0)    收藏  举报