Python-序列化和反序列化

在Spark中使用广播变量时,选择合适的序列化格式是非常重要的。这里重点讲的是Python中的序列化。

1.序列化和反序列化

序列化就是把数据变成可存储或可传输的过程的,只有序列化后的数据才可以写入到磁盘或者通过网络传输到Spark集群的其他节点上。反序列化则相反,反序列就是把序列化的变量重新转到内存里。

2.Python包的使用

2.1 pickle包

pickle包主要使用的就是4个函数。这个只适用于在python环境中传输。

pickle.dump()将任意对象转化成bytes,并写入文件中。
pickle.dumps()将任意对象转化成bytes.
pickle.loads()从bytes中反序列化出对象
pickle.load()从文件中反序列出对象

 pickle.load()和pickle.dump()用法:

pickle.loads()和pickle.dumps()用法:

但是这里要注意,不要把使用pickle.dumps()方法得到的二进制字符串直接存放到文件中,容易导致UnpicklingError错误(因为文件对象f可能会将二进制串中的特殊字符当做换行符处理)。比如:

 另外,还有一个与pickle功能相似的包,即cPickle,这个包底层使用c语言写的,所以运行速度要比pickle包快。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值