因为需要使用python的一些库,不得不使用pyspark。在这里记录下遇到的问题。
本地开发环境,网上比较容易查到,这里就不写了。
这里主要说线上提交的依赖问题。
这里是用hue提交,主要有以下几个步骤:
1、将所有的依赖打成zip包
2、使用sc.addPyFiles(path)或者是sc.addPyFile(path)(ps:不同版本写法不同)将依赖加入环境
3、在代码中在初始化sc后,写入下面代码。
def import_my_special_package(x):
import my.special.package
return x
int_rdd = sc.parallelize([1, 2, 3, 4])
int_rdd.map(lambda x: import_my_special_package(x))
int_rdd.collect()
另外如果在main函数使用了第三方依赖,也需要在初始化sc之后把引入写出来。不然在执行driver的时候找不到依赖。
4、在引用依赖写,路径写完整。
demo如下
def import_my_special_package(x):
import HBaseUtil
return x
def main():
host = 'xx.xx.xx.xx'
conf = SparkConf()
conf.set("hbase.zookeeper.quorum", host)
sc = SparkContext(master="local", appName="local", conf=conf)
int_rdd = sc.parallelize([1,2,3,4])
int_rdd.map(lambda x:import_my_special_package(x))
sc.addPyFile("hdfs:ip/tmp/xx.zip")
import util.HBaseUtil
HBaseUtil.write_hbase_drict()
sc.stop()
if __name__ == "__main__":
main()