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()
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号