文章大纲
简介
最近需要实现一个小DEMO, 通过spark 数据ETL 之后转到python 环境执行一些基于python 的复杂数据清洗工作,或者是复用数据分析人员的python清洗脚本。应该怎么做? 请看以下文章提供的一些思路:
1. python 调用scala
python 作为一种胶水语言调用其他语言比较容易 , 由于Spark使用Scala语言开发,底层启动的是JVM,而PySpark是Scala中PythonRDD对象启动的一个Python子进程,Python与JVM的通信使用了Py4J, 通过Py4J Python程序能够动态的访问JVM中的Java对象,这一过程使用了linux pipe,在底层JVM需要对RDD进行序列化,在Python端需要对RDD进行反序列化,