博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 解析 python使用 pickle序列化后的数据
阅读量:6579 次
发布时间:2019-06-24

本文共 1261 字,大约阅读时间需要 4 分钟。

hot3.png

    换了新公司,一切也重新开始,接触到的第一个活就是可能需要将之前python写的一套数据传输的代码,改用Java实现,提高开发效率;

    python代码结构很清晰,分为两部分:

  1. 抽取接口数据,pickle序列化后打包上传到云服务器;
  2. 从云服务器下载,解析入库;

    我主要做的是先将解析入库这部分Java化,其中一个很大的问题就是解析pickle序列化后的数据,这个问题折磨我了2天。。

    主要是好像这种问题网上很少解决方案,也不知道是不是我这操作太奇葩了。。度娘就别想了,只能借助梯子了。看过网上的示例都没有能正常跑的,或多或少都有些问题,不过也让我了解到了目前的解决方案,也主要分为两种:

  1. 借助来做,引入jar包后,可以在Java里使用python的代码,当然这应该是对应的Java实现吧,但是感觉有点重,jar包有30多M
  2. 使用包,这个包主要是用于与python通信,进行远程调用python的方法;

   

    因为我们数据打包上传跟下载解析是分开部署的, 如果在解析那块还去单独部署个python用来解析数据,再用Java去远程调用去获取返回值,这就有点多此一举了。。所以我们这边使用的就是通过引入Jython来实现了,到时候数据打包如果也改成Java实现的话,那就再改造了。

    先说说遇到的几个坑吧:

           init: Bootstrapping class not in BootstrapTypesSingleton.getClassToType()[class=class org.python.core.PyBaseString]

            

           解决这个问题花的时间最久,不解决的话使用pystring的时候会报空指针错误;之前从网上看到过类似的,需要在使用前先执行.gcMonitorGlobal方法,但是由于个人粗心。跑去调用pystring.gcMonitorGlobal,所以并没有卵用,最后仔细看错误发现是PyBaseString的问题,而PyString又是继承PyBaseString的,后来在代码中加入静态块解决该问题;

 

           102623_t5mB_3187740.png

            

       ValueError: insecure string pickle

            不安全的值,原因是也是格式问题,python序列化后的格式是这样的

 

               102631_vN2N_3187740.png

 

        然后读取时,在每行尾部需要加上"\n"换行才可以

 

                102638_2L1f_3187740.png

 

                至此遇到的大问题都已经解决,其他问题的话就比较常见了(比如格式转换异常这种),主要是也没有搜到什么完整的解决方案,也是自己东拼西凑才搞定的,也是不容易,还是因为对python也不太了解吧,遇到没见过的报错有点懵,而且有时候报的错也不一定是真实的错。例如ValueError这个错,最开始报的是空指针,通过调试代码看,是Jython里的异常类toString的时候空指针,导致无法发现真实的错误,只能一步步调试,才发现。。有点坑

            因为确实搜索过没有发现什么完整的解决方案或代码示例,所以整理出来希望能帮到大家!

               

 

参考网站:

                

                

                

 

 

转载于:https://my.oschina.net/u/3187740/blog/1793070

你可能感兴趣的文章
美网络安全公司称非蓝牙类无线鼠标和键盘存隐患
查看>>
依靠大数据 社会化协同
查看>>
淮南发力“大数据”激活新动能
查看>>
公共云服务产业规模有望突破百亿元
查看>>
微软研究院—下一个25年该往哪走?
查看>>
河北雄安新区设立 或掀起新一轮智慧城市建设
查看>>
IT产业发展报告:软件业大发展 云计算增长40%
查看>>
前任VMware高管Diane Greene发布一款重量级存储方案
查看>>
美白宫高级顾问遭CWA黑客组织网络攻击
查看>>
DT时代,与坚持梦想者同行!
查看>>
Ciena DCI和SDN平台获得更多部署
查看>>
安防企业需要怎样的智慧
查看>>
进军光伏发电 奥冠集团屋顶分布式光伏发电项目一期已投运
查看>>
Bugfree中保存用例失败
查看>>
苹果敢对“赞赏”分成30%真的是靠垄断吗?
查看>>
Oracle物联网 (IoT) 云服务的神奇世界
查看>>
MySQL使用可重复读作为默认隔离级别的原因之一
查看>>
最高法:侵犯公民个人信息犯罪案件数量显著增长
查看>>
商用SDN必经门槛:SDN Controller的高可用性研究(附demo)
查看>>
2016年 政府行业三个技术面临普及应用
查看>>