Spark-数据源及机器学习算法部署

Posted wind-man

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spark-数据源及机器学习算法部署相关的知识,希望对你有一定的参考价值。

1、数据源读取

使用的时候,需要加载驱动 --jars 或者添加到classpath中 或scaddjar

Spark对Oracle数据库读取,代码如下:

conf = SparkConf().setAppName(string_test)
sc = SparkContext(conf=conf)
ctx = SQLContext(sc)
sqltext = "(select dbms_lob.substr(title,500) as title,id,content,country,languages,time as publishDate,source,subject,source_url from news t where id <= 24) news"
news =ctx.read \
.format("jdbc") \
.option("url", "jdbc:oracle:thin:username/[email protected]//ip:port/sid") \
.option("dbtable", sql) \
.option("user", "user") \
.option("password", "password") \
.option("driver", "oracle.jdbc.driver.OracleDriver") \
.load()

news.registerTempTable("news")

Spark 对Mongo读数据

ctx = SQLContext(sc)
mongourl = "mongodb://username:[email protected]:port"
mongoDB = "dbname"
mongoCollection = "collectionName"
mongoRows = ctx.read.format("com.mongodb.spark.sql").options(uri=mongourl,database=mongoDB, collection=mongoCollection).load()
mongoResultRdd = mongoRows.rdd

2、机器学习算法转换

机器学习算法有两类不能直接添加到spark中:

1) 包中含有复杂依赖关系的,如scipy、numpy等,scipy.special.beta函数在spark中不可以使用的。

2) 包不是.py结尾的,而是有第三方编译包的,不可以添加到spark中

 

解决办法:

在spark改写的代码中使用到上述相关的程序,阔以用subprocess调用python程序,以进行数据处理,然后得到程序返回结果。如下:

test= subprocess.getoutput("python /home/pytest.py \""+content.replace("\‘","’")+"\"")
re= test[test.index("::")+2:len(test)].replace(" ","")

 

以上是关于Spark-数据源及机器学习算法部署的主要内容,如果未能解决你的问题,请参考以下文章

Spark入门实战系列--8.Spark MLlib(上)--机器学习及SparkMLlib简介

大数据推荐系统算法代码全接触(企业内训,现场实录,机器学习算法+Spark实现)

大数据推荐系统算法代码全接触(企业内训,现场实录,机器学习算法+Spark实现)

Spark2.0机器学习系列之6:GBDT(梯度提升决策树)GBDT与随机森林差异参数调试及Scikit代码分析

Spark2.x+Python大数据机器学习视频课程

Spark2.x+Python大数据机器学习视频课程