Apache Spark

1、spark-submit脚本的使用及理解

南笙酒味 提交于 2019-12-07 11:15:16
一、介绍 1、安装省略,因为现在基本上都用大数据集成平台:cdh,hdp等 2、spark-submit脚本是spark提供的一个用于提交任务的脚本,通过它的--master 参数可以很方便的将任务提交到对应的平台去执行,比如yarn、standalone、mesos等。 3、spark-submit会在提交任务时,把集群大部分的配置文件都打包在__spark_conf__.zip中,包括core-site.xml、hdfs-site.xml、yarn-site.xml、mapreduce-site.xml、hbase-site.xml、hive-site.xml等。然后将其和工程依赖的第三方jar(flume、kafka、以及com.apache.org.lang3等)一同发送到spark的资源存放目录下,默认是:/user/root/.sparkStaging/xxxId/。 4、上述的__spark_conf__.zip还包含一个重要的配置文件__spark_conf__.properties,里面包含着spark-submit脚本的启动参数 在main类中SparkConf conf = new SparkConf();时会加载这个配置文件,所以不再需要执行conf.setMaster("yarn"); 如图: 5、有了上面配置文件和jar,就可以很方便的访问 hive

Hive 分布式搭建,Spark集成Hive记录

青春壹個敷衍的年華 提交于 2019-12-07 11:03:06
本帖详细介绍搭建步骤,仅仅记录自己搭建过程以及采坑经历。 前提环境: Hadoop集群 版本2.7.2 Spark集群 版本2.1.0 Linux版本 Centos7 准备搭建 MySql版本5.5.61 ,Hive-2.1.0 去官网下载MySQl的tar包。我下的是mysql-5.5.61-linux-glibc2.12-x86_64.tar.gz 解压tar包 tar -zxvf mysql-5.5.61-linux-glibc2.12-x86_64.tar.gz 添加系统mysql组和mysql用户: 执行命令:groupadd mysql和useradd -r -g mysql mysql groupadd mysql useradd -r -g mysql mysql 修改当前目录拥有者为mysql用户:执行命令 chown -R mysql:mysql ./ 安装数据库:执行命令 ./scripts/mysql_install_db --user=mysql 修改当前目录拥有者为root用户:执行命令 chown -R root:root ./ 修改当前data目录拥有者为mysql用户:执行命令 chown -R mysql:mysql data 到此数据库安装完毕 --------------------- 启动mysql服务和添加开机启动mysql服务:

spark集群使用hanlp进行分布式分词操作说明

一个人想着一个人 提交于 2019-12-06 23:17:12
本篇分享一个使用hanlp分词的操作小案例,即在spark集群中使用hanlp完成分布式分词的操作,文章整理自【 qq_33872191 】的博客,感谢分享!以下为全文: 分两步: 第一步:实现hankcs.hanlp/corpus.io.IIOAdapter 1. public class HadoopFileIoAdapter implements IIOAdapter { 2. 3. @Override 4. public InputStream open(String path) throws IOException { 5. Configuration conf = new Configuration(); 6. FileSystem fs = FileSystem.get(URI.create(path), conf); 7. return fs.open(new Path(path)); 8. } 9. 10. @Override 11. public OutputStream create(String path) throws IOException { 12. Configuration conf = new Configuration(); 13. FileSystem fs = FileSystem.get(URI.create(path), conf);

Hanlp分词1.7版本在Spark中分布式使用记录

泪湿孤枕 提交于 2019-12-06 23:16:58
新发布1.7.0版本的hanlp自然语言处理工具包差不多已经有半年时间了,最近也是一直在整理这个新版本hanlp分词工具的相关内容。不过按照当前的整理进度,还需要一段时间再给大家详细分享整理的内容。昨天正好看到的这篇关于关于1.7.0版本hanlp分词在spark中的使用介绍的文章,顺便分享给大家一起学习一下! 以下为分享的文章内容: HanLP分词,如README中所说,如果没有特殊需求,可以通过maven配置,如果要添加自定义词典,需要下载“依赖jar包和用户字典". 直接"java xf hanlp-1.6.8-sources.jar" 解压源码,把源码加入工程(依赖本地jar包,有些麻烦,有时候到服务器有找不到jar包的情况) 按照文档操作,在Spark中分词,默认找的是本地目录,所以如果是在driver中分词是没有问题的。但是如果要分布式分词,是要把词典目录放在HDFS上面,因为这样每台机器才可以访问到 【参考代码】 最好把新增词典放在首位,第一次使用时,HanLP会把新增txt文件,生成bin文件,这个过程比较慢。但是只需要跑一次,它会把bin文件写到HDFS路径上面,第二次以后速度就快一些了。 注意到issue中说,只可以在mapPartition中使用。 参考scala代码 class HadoopFileIoAdapter extends IIOAdapter {

spark +hive 自定义聚合函数回顾--group_concat实现

一曲冷凌霜 提交于 2019-12-06 13:54:26
闲下来再回顾下spark 和 hive 的聚合函数 使用: spark自定义聚合函数类 class GroupConcatUDAF extends UserDefinedAggregateFunction{ /** * 指定输入字段的字段及类型 * group by 之后会有1到多个数据被归到一组,所以用Array()封装 */ override def inputSchema: StructType = { StructType(Array( StructField("str",StringType,true) )) } //聚合过程中的中间结果集类型 override def bufferSchema: StructType ={ StructType(Array( StructField("strings",StringType,true) )) } //函数的返回类型 override def dataType: DataType = { StringType } override def deterministic: Boolean = { true } //为每个分组的数据初始化 override def initialize(buffer: MutableAggregationBuffer): Unit = { buffer(0)="" } //指的是,每个分组

数据科学. Data Science.

无人久伴 提交于 2019-12-06 11:39:54
Python vs R和最高薪水:数据科学领域的热门趋势 一份新报告显示了数据科学工作的薪资水平和编程语言的趋势。 史蒂夫·兰格 由史蒂夫游侠 | 2019年6月19日-12:03 GMT(20:03 GMT + 08:00) | 主题:企业软件 随着公司寻求扩大对数据分析的使用,对数据科学专家的需求持续增长,需求最大的员工转移工作以大幅度提高工资。 技术共和国备忘单 如何成为一名开发人员:薪水,技能和最佳学习语言 根据技术招聘公司Harnham的数据,入门级数据科学家现在可以预期在伦敦赚取45,000英镑,在伦敦以外地区赚取34,000英镑,而最高级的董事级别数据科学家可以预期在伦敦赚取平均140,000英镑。资本-尽管要达到这个资历水平需要花10到15年的时间。最近发表的其他研究表明,对于某些IT工作者而言,一旦考虑到生活成本,在伦敦以外的地方工作可能是更好的选择。 SEE: Python吞噬着世界:一个开发人员的副项目如何成为地球上最热门的编程语言(封面故事PDF) (TechRepublic) 定量分析师的薪水略高-入门级职位的薪资为55,000英镑,首都的薪资为155,000英镑。机器学习工程师可以期望获得与数据科学家相同的收入。这家招聘公司表示,公司的多元化已经大大增加了他们的团队,并雇用了特定的角色来专注于深度学习,计算机视觉和自然语言处理。 也许是由于需求如此之高

【大数据分析常用算法】0.简介

让人想犯罪 __ 提交于 2019-12-06 09:59:57
简介 本系列教程主要探讨有关大数据的所有常用算法的实现,定期加入有趣的项目实践。 1、实现语言 初步使用java实现,后续加入python。 Hadoop Mapreduce Java实现 位于包*.mapreduce下。 Spark MapReduce Java实现 位于包*.spark下。 python实现会在以后加入。 每个算法存在一个模块,测试文件位置父模块根目录下,对应名字可从系列教程里面找到。 2、实现框架 Hadoop 2.7.3 Spark 2.4 3、参考 书籍《算法实现:Hadoop/spark》 来源: oschina 链接: https://my.oschina.net/u/3091870/blog/3001293

Spark应用HanLP对中文语料进行文本挖掘--聚类详解教程

蹲街弑〆低调 提交于 2019-12-06 08:19:54
软件:IDEA2014、Maven、HanLP、JDK; 用到的知识:HanLP、Spark TF-IDF、Spark kmeans、Spark mapPartition; 用到的数据集:http://www.threedweb.cn/thread-1288-1-1.html(不需要下载,已经包含在工程里面); 工程下载:https://github.com/fansy1990/hanlp-test 。 1、 问题描述 现在有一个中文文本数据集,这个数据集已经对其中的文本做了分类,如下: 其中每个文件夹中含有个数不等的文件,比如环境有200个,艺术有248个;同时,每个文件的内容基本上就是一些新闻报道或者中文描述,如下: 现在需要做的就是,把这些文档进行聚类,看其和原始给定的类别的重合度有多少,这样也可以反过来验证我们聚类算法的正确度。 2.、解决思路: 2.1 文本预处理: 1. 由于文件的编码是GBK的,读取到Spark中全部是乱码,所以先使用Java把代码转为UTF8编码; 2. 由于文本存在多个文件中(大概2k多),使用Spark的wholeTextFile读取速度太慢,所以考虑把这些文件全部合并为一个文件,这时又结合1.的转变编码,所以在转变编码的时候就直接把所有的数据存入同一个文件中; 其存储的格式为: 每行: 文件名.txt\t文件内容 如: 41.txt 【 日 期

使用Spark、pandion客户端测试ejabberd服务器

耗尽温柔 提交于 2019-12-06 06:46:37
测试admin用户和summergao用户相互发送消息: 1.下载 pandion 客户端 https://en.softonic.com/download/pandion/windows/post-download 2.下载 spark 客户端 http://www.igniterealtime.org/downloads/download-landing.jsp?file=spark/spark_2_8_3.exe 3.修改配置文件 vim /usr/local/etc/ejabberd/ejabberd.yml 配置5222端口如下: - port: 5222 ip: "127.0.0.1" module: ejabberd_c2s max_stanza_size: 262144 shaper: c2s_shaper access: c2s starttls_required: false 因为是本地测试,设置 ip: "127.0.0.1",starttls_required: false 4.重启使新配置生效 ejabberdctl restart 5.运行Spark客户端连接ejabberd服务器 使用admin用户登录,连接设置如右图: 连接成功: 6.使用Pandion客户端连接ejabberd服务器 使用summergao用户登录,连接设置如下图所示

是时候改变你数仓的增量同步方案了

北城以北 提交于 2019-12-06 00:42:02
经过一段时间的演化,spark-binlog,delta-plus慢慢进入正轨。spark-binlog可以将MySQL binlog作为标准的Spark数据源来使用,目前支持insert/update/delete 三种事件的捕捉。 delta-plus则是对Delta Lake的一个增强库,譬如在Delta Plus里实现了将binlog replay进Detla表,从而保证Delta表和数据库表接近实时同步。除此之外,detla-plus还集成了譬如布隆过滤器等来尽快数据更新更新速度。更多特性可参考我写的专栏。 数据湖Delta Lake 深入解析 ​ zhuanlan.zhihu.com 图标 有了这两个库,加上Spark,我们就能通过两行代码完成库表的同步。 以前如果要做数据增量同步,大概需要这么个流程: 问题很明显,Pipeline长,涉及到技术多,中间转存其实也挺麻烦的,难做到实时。我们希望可以更简单些,比如最好是这样: 然后我可能只要写如下代码就可以搞定: val spark: SparkSession = ??? val df = spark.readStream. format("org.apache.spark.sql.mlsql.sources.MLSQLBinLogDataSource"). option("host","127.0.0.1").