Spark在集群上执行代码案例(中文切词)
Spark在集群上执行代码案例
- java的切词使用案例(Demo)
- Spark中文切词代码
- 需求:利用jieba进行中文分词,并打包上传到集群进行执行
java的切词使用案例(Demo)
@Test
public void testDemo() {JiebaSegmenter segmenter = new JiebaSegmenter();String[] sentences =new String[] {"这是一个伸手不见五指的黑夜。我叫孙悟空,我爱北京,我爱Python和C++。", "我不喜欢日本和服。", "雷猴回归人间。","工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作", "结果婚的和尚未结过婚的"};for (String sentence : sentences) {System.out.println(segmenter.process(sentence, SegMode.INDEX).toString());}
}
Spark中文切词代码
package com.badouimport com.huaban.analysis.jieba.{JiebaSegmenter, SegToken}
import com.huaban.analysis.jieba.JiebaSegmenter.SegMode
import org.apache.spark.SparkConf
import org.apache.spark.sql.{DataFrame, SparkSession}
import org.apache.spark.sql.functions._object JiebaSeg {def main(args: Array[String]): Unit = {// 定义结巴分词类的序列化val conf = new SparkConf()//注册自定义类交给KryoSerializer序列化处理类进行序列化.registerKryoClasses(Array(classOf[JiebaSegmenter]))//设置优化参数.set("spark.rpc.message.maxSize","800")// 建立sparkSession,并传入定义好的Confval spark = SparkSession.builder().appName("Jieba UDF").enableHiveSupport().config(conf).getOrCreate()// 定义结巴分词的方法,传入的是DataFrame,输出也是DataFrame多一列seg(分好词的一列)def jieba_seg(df:DataFrame,colname:String): DataFrame ={// 定义类的实例化val segmenter = new JiebaSegmenter()//使用广播变量进行序列化(广播变量只能读,不能修改,类似分发)val seg = spark.sparkContext.broadcast(segmenter)val jieba_udf = udf{(sentence:String)=>
// 通过value获取到一段中文val segV = seg.valuesegV.process(sentence.toString,SegMode.INDEX).toArray().map(_.asInstanceOf[SegToken].word).filter(_.length>1).mkString(" ")}df.withColumn("seg",jieba_udf(col(colname)))}val df =spark.sql("select content,label from badou.new_no_seg limit 300")val df_seg = jieba_seg(df,"content")df_seg.show()
// saveAsTable 直接存储到对应的hive表df_seg.write.mode("overwrite").saveAsTable("badou.news_jieba")}
}------------------------------------+--------+----------+
| content| label| seg|
+-------------------------------------+--------+---------+
|成都猎豹飞腾经典版赠万元精美礼包搜...| auto| 成都 猎豹 ...|
|预算法修正案二审重申地方不得自行发...|business| 预算 算法 ...|
|黄宗泽曝徐子珊私下犹如男生女人味不...| yule| 黄宗泽 曝 ,...|+-------------------------------------+--------+-------+
only showing top 20 rows
需求:利用jieba进行中文分词,并打包上传到集群进行执行
打包命令:
mvn clean install assembly:assembly
git上传文件到Linux系统
scp -rp badou_spark_20-1.0-SNAPSHOT-jar-with-dependencies.jar root@master:/usr/local/src/badou_code/spark/sub
注意:工作中慎用
rm -rf
run_cluster.sh(文件)
cd $SPARK_HOME
./bin/spark-submit \#指定要执行的class类--class com.badou.JiebaSeg \--master yarn-cluster \#将hive-site.xml分发到集群中--file $HIVE_HOME/conf/hive-site.xml \#将jar包上传/usr/local/src/badou_code/spark/sub/badou_spark_20-1.0-SNAPSHOT-jar-with-dependencies.jar
run_local.sh(文件)
cd $SPARK_HOME
./bin/spark-submit \--class com.badou.JiebaSeg \#本地集群加载--master local[2] \--files $HIVE_HOME/conf/hive-site.xml \/usr/local/src/badou_code/spark/sub/badou_spark_20-1.0-SNAPSHOT-jar-with-dependencies.jar
切词函数换成另一个函数
来查看为什么要用map(_.asInstanceOf[SegToken].word)
def jieba_seg(df:DataFrame,colname:String): DataFrame ={// 定义类的实例化val segmenter = new JiebaSegmenter()val seg = spark.sparkContext.broadcast(segmenter)val jieba_udf = udf{(sentence:String)=>
// 通过value获取到一段中文val segV = seg.value//切词处理,返回的是一个迭代器,一个个词组segV.process(sentence.toString,SegMode.INDEX)//将迭代器(返回多个元素),所以进行toArray转换成数组 scala转换成java实例类对象.toArray().mkString(" ")}df.withColumn("seg",jieba_udf(col(colname)))}+-------------------------------------+--------+-------------------------+
| content| label| seg|
+-------------------------------------+--------+-------------------------+
|成都猎豹飞腾经典版赠万元精美礼包搜...| auto| [成都, 0, 2] [猎豹, 2...|
|预算法修正案二审重申地方不得自行发...|business| [预算, 0, 2] [算法, 1...|
|黄宗泽曝徐子珊私下犹如男生女人味不...| yule| [黄宗泽, 0, 3] [曝, 3...|
|成都英朗自动时尚版优惠现金万元搜狐...| auto| [成都, 0, 2] [英朗, 2...|
|彩合网排列三第期分析:个位路决杀搜...| sports|[彩合网, 0, 3] [排列, ...|
|金志文赞郭浩《其实你不懂我伤悲》男...| yule| [金志, 0, 2] [文赞, 2...|
|女超上海女足轻取长春尤佳一己之力定...| sports| [女超, 0, 2] [上海, 2...|
|从欧洲杯看理财阵型搭配:前锋犹如风...|business| [从, 0, 1] [欧洲, 1,...|
|不辱没无敌兔佳能售搜狐数码佳能报价...| it| [不, 0, 1] [辱没, 1,...|
|全国武术套路赛河南夺得两金项比赛团...| sports| [全国, 0, 2] [武术, 2...|
|法拉利预计年利润增长尚无上市计划搜...| auto|[法拉, 0, 2] [法拉利, ...|
|《向着炮火前进》质检:漫画式抗战剧...| yule| [《, 0, 1] [向着, 1,...|
|黑天鹅来袭金陵药业跌停机构卖出万元...|business| [黑天, 0, 2] [天鹅, 1...|
|全球经济向好家电业四季度将全面复苏...| it| [全球, 0, 2] [经济, 2...|
|郑洁透露晏紫有望中网复出赞张帅是要...| sports| [郑洁, 0, 2] [透露, 2...|
|网上掀起陪驾热价格猛涨搜狐闯红灯一...| it| [网上, 0, 2] [掀起, 2...|
|沪上四成大型企业已建首席信息官制搜...|business| [沪, 0, 1] [上, 1, ...|
| 家公司半年“报忧”周期行业成重灾区...|business| [家, 0, 1] [公司, 1,...|
|天津大众劲取现车有售直降元搜狐汽车...| auto| [天津, 0, 2] [大众, 2...|
|厦门购现代全系均可现金让利搜狐汽车...| auto| [厦门, 0, 2] [购, 2,...|
+-------------------------------------+--------+-------------------------+
only showing top 20 rows
Spark在集群上执行代码案例(中文切词)相关推荐
- spark在集群上运行
1.spark在集群上运行应用的详细过程 (1)用户通过spark-submit脚本提交应用 (2)spark-submit脚本启动驱动器程序,调用用户定义的main()方法 (3)驱动器程序与集群管 ...
- 独家 | 带你认识HDFS和如何创建3个节点HDFS集群(附代码案例)
作者:尼廷·兰詹(Nitin Ranjan) 翻译:陈之炎 校对:王威力 本文约1500字,建议阅读5分钟. 在本文中,大数据专家将为您介绍如何使用HDFS以及如何利用HDFS创建HDFS集群节点. ...
- 09_Flink入门案例、word-count程序(java和scala版本)、添加依赖、Flink Streaming和Batch的区别 、在集群上执行程序等
1.9.Flink入门案例-wordCount 1.9.1.开发工具 1.9.2.编写java版本word-count程序 1.9.2.1.添加Flink Maven依赖 1.9.2.2.编写word ...
- 在阿里云Serverless K8S集群上部署Spark任务并连接OSS(详细步骤)
在阿里云ASK集群上部署Spark任务并连接OSS 简介 ASK是阿里云的一个产品,属于Serverless Kubernetes 集群,这次实验是要在ASK集群上运行Spark计算任务(以WordC ...
- mapreduce复制连接的代码_MapReduce:在大型集群上简化数据处理(2)
特别说明 这是一个由simviso团队所组织进行的基于mit分布式系统课程翻译的系列,由知秋带领和其他成员一起翻译的课程以及课程当中涉及的论文翻译. 由于微信排版功能有限,想要看最新版文档的小伙伴,请 ...
- spark集群访问mysql_spark连接数据源以及在spark集群上跑
1.spark连接mysql import org.apache.spark.SparkConf import org.apache.spark.sql.{SaveMode, SparkSession ...
- anaconda3环境整体打包放在Spark集群上运行
一.将虚拟Python环境打包 创建好环境后,进入到环境所在的文件夹,例如环境是/home/hadoop/anaconda3/envs, cd到envs下,使用打包命令将当前目录下的文件打成zip包: ...
- 小白学习Spark03-在集群上运行Spark
03 在集群上运行Spark 3.1 Spark运行架构 3.1.1 驱动器节点 3.1.2 执行器节点 3.1.3 集群管理器 3.1.4 启动Spark程序 3.1.5 小结 3.2 使用spar ...
- 使用Python+jieba和java+庖丁分词在Spark集群上进行中文分词统计
写在前边的话: 本篇博客也是在做豆瓣电影数据的分析过程中,需要对影评信息和剧情摘要信息进行分析而写的一篇博客 以前学习hadoop时,感觉做中文分词也没那么麻烦,但是到了Spark,却碰到了诸多困难, ...
最新文章
- 《jQuery Mobile入门经典》—— 2.7 练习
- Matlab读取文本数据
- Selwyn College, Cambridge
- Selenium3+MoocTest环境搭建常见问题解决方案
- C++::CPLEX文件读写
- acm常见算法及例题
- 百度与华为全面战略合作 人工智能手机真的要来了
- 如果有这样一台服务器……
- 图 矩阵 两点间有m的路径 矩阵乘法_代数图论I: 基本理论和无向图的同调
- python 笔记 之 线程锁
- chmod 与fchmod函数
- 手机同步查看html,手机版同步html几点注意使用
- instagram怎么用_用PHP和Instagram API征服Instagram
- 中国互联网二十四年红黑史
- CUDA10,Torch安装解决NOTFOUND CUDA_cublas_device_LIBRARY,Ubuntu16.04安装torch遇到的错误
- 五、鼎捷T100总账管理之总账报表及查询
- 从烂漫少女到已为人母:八年青春 梦断互联网
- Maven中的pom.xml文件超详细解析
- 经济学常识之破窗谬论
- Weighted Median
热门文章
- ubuntu16.04之升级python3.5到3.6
- 数据库学习--DCL(数据库控制语言)
- android jni 机器码,NDK构建
- window下配置定时任务实现类似linux的cron定时任务
- 探索“云计算”的双重含义(节选)
- 顺势而为,戴尔加速流动文件系统进化
- image.merge图像有什么变化_图像特征工程:HOG特征描述子介绍
- html5作品分析报告,性能报告之HTML5 性能测试报告
- 如何做WP的登录/注册功能
- 避免门事件 巧妙清除搜狗浏览器记录