spark

Spark2.x写入Elasticsearch的性能测试

走远了吗. 提交于 2020-04-06 22:47:47
一、Spark集成ElasticSearch的设计动机 ElasticSearch 毫秒级的查询响应时间还是很惊艳的。其优点有: 1. 优秀的全文检索能力 2. 高效的列式存储与查询能力 3. 数据分布式存储(Shard 分片) 相应的也存在一些缺点: 1. 缺乏优秀的SQL支持 2. 缺乏水平扩展的Reduce(Merge)能力,现阶段的实现局限在单机 3. JSON格式的查询语言,缺乏编程能力,难以实现非常复杂的数据加工,自定义函数(类似Hive的UDF等) Spark 作为一个计算引擎,可以克服ES存在的这些缺点: 1. 良好的SQL支持 2. 强大的计算引擎,可以进行分布式Reduce 3. 支持自定义编程(采用原生API或者编写UDF等函数对SQL做增强) 所以在构建即席多维查询系统时,Spark 可以和ES取得良好的互补效果 二、Spark与ElasticSearch结合的架构和原理 ES-Hadoop无缝打通了ES和Hadoop两个非常优秀的框架,我们既可以把HDFS的数据导入到ES里面做分析,也可以将es数据导出到HDFS上做备份,归档,其中值得一提的是ES-Hadoop全面的支持了Spark框架,其中包括Spark,Spark Streaming,Spark SQL,此外也支持Hive,Pig,Storm,Cascading,当然还有标准的MapReduce

【赵强老师】在Spark SQL中读取JSON文件

拈花ヽ惹草 提交于 2020-04-05 17:17:04
Spark SQL是Spark用来处理结构化数据的一个模块,它提供了一个编程抽象叫做DataFrame并且作为分布式SQL查询引擎的作用。为什么要学习Spark SQL?如果大家了解Hive的话,应该知道它是将Hive SQL转换成MapReduce然后提交到集群上执行,大大简化了编写MapReduce的程序的复杂性,由于MapReduce这种计算模型执行效率比较慢。所以Spark SQL的应运而生,它是将Spark SQL转换成RDD,然后提交到集群执行,执行效率非常快!同时Spark SQL也支持从Hive中读取数据。 Spark SQL也能自动解析JSON数据集的Schema,读取JSON数据集为DataFrame格式。 读取JSON数据集方法为SQLContext.read ().json()。该方法将String格式的RDD或JSON文件转换为DataFrame。 需要注意的是,这里的JSON文件不是常规的JSON格式。JSON文件每一行必须包含一个独立的、自满足有效的JSON对象。如果用多行描述一个JSON对象,会导致读取出错。 需要用到的测试数据:people.json {"name":"Michael"} {"name":"Andy", "age":30} {"name":"Justin", "age":19} 定义路径 val path ="/root/temp

Spark机器学习之MLlib整理分析

 ̄綄美尐妖づ 提交于 2020-04-03 16:46:00
友情提示 : 本文档根据林大贵的《Python+Spark 2.0 + Hadoop机器学习与大数据实战》整理得到,代码均为书中提供的源码(python 2.X版本)。 本文的可以利用pandoc转换为docx文档,点击这里安装下载 pandoc 后,在终端输入以下命令: pandoc youfilename.md -f markdown -t docx -s -o outputfilename.docx Mllib 决策树二元分类 环境准备 这个阶段包括数据的下载和整理,去除缺失的数据,不符合规范的数据(比如乱码等),数据类型转换,将字符串类型映射为数字类型(建立字典),数据类型转患(将字符串类型的数字转换为浮点型的数字)。 导入这个模型我们需要的包 # -*- coding: UTF-8 -*- import sys from time import time import pandas as pd import matplotlib.pyplot as plt from pyspark import SparkConf, SparkContext from pyspark.mllib.tree import DecisionTree from pyspark.mllib.regression import LabeledPoint import numpy as np

IDEA,SparkSql读取HIve中的数据

十年热恋 提交于 2020-03-31 18:08:10
传统Hive计算引擎为MapReduce,在Spark1.3版本之后,SparkSql正式发布,并且SparkSql与apache hive基本完全兼容,基于Spark强大的计算能力,使用Spark处理hive中的数据处理速度远远比传统的Hive快。 在idea中使用SparkSql读取HIve表中的数据步骤如下 1、首先,准备测试环境,将hadoop集群conf目录下的core-site.xml、hdfs-site.xml和Hive中conf目录下hive-site.xml拷贝在resources目录下 2、pom依赖 <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.11</artifactId> <version>2.0.1</version> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-client</artifactId> <version>2.7.1</version> </dependency> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-hive_2.11<

spark 任务运行原理

痞子三分冷 提交于 2020-03-30 07:58:58
调优概述 在开发完Spark作业之后,就该为作业配置合适的资源了。Spark的资源参数,基本都可以在spark-submit命令中作为参数设置。很多Spark初学者,通常不知道该设置哪些必要的参数,以及如何设置这些参数,最后就只能胡乱设置,甚至压根儿不设置。资源参数设置的不合理,可能会导致没有充分利用集群资源,作业运行会极其缓慢;或者设置的资源过大,队列没有足够的资源来提供,进而导致各种异常。总之,无论是哪种情况,都会导致Spark作业的运行效率低下,甚至根本无法运行。因此我们必须对Spark作业的资源使用原理有一个清晰的认识,并知道在Spark作业运行过程中,有哪些资源参数是可以设置的,以及如何设置合适的参数值。 Spark作业基本运行原理 详细原理见上图。我们使用spark-submit提交一个Spark作业之后,这个作业就会启动一个对应的Driver进程。根据你使用的部署模式(deploy-mode)不同,Driver进程可能在本地启动,也可能在集群中某个工作节点上启动。Driver进程本身会根据我们设置的参数,占有一定数量的内存和CPU core。而Driver进程要做的第一件事情,就是向集群管理器(可以是Spark Standalone集群,也可以是其他的资源管理集群,美团•大众点评使用的是YARN作为资源管理集群)申请运行Spark作业需要使用的资源

02 使用spark进行词频统计【scala交互】

社会主义新天地 提交于 2020-03-30 00:28:39
我们已经在CentOS7中安装了spark,本节将展示如何在spark中通过scala方式交互的进行词频统计。 1 系统、软件以及前提约束 CentOS 7 64 工作站 作者的机子ip是192.168.100.200,主机名为danji,请读者根据自己实际情况设置 hadoop已经安装完毕并启动 https://www.jianshu.com/p/b7ae3b51e559 spark已经安装完毕并启动 https://www.jianshu.com/p/8384ab76e8d4 为去除权限对操作的影响,所有操作都以root进行 2 操作 1.使用xshell以root登录到192.168.100.200 2.新建一个文件,输入一些字符串,上传到HDFS # 进入hadoop的bin目录 cd /root/hadoop-2.5.2/bin # 编辑word,加入以下内容,保存退出 I am zhangli I am xiaoli who are you I am ali hello jiangsu wanhe wanhe # 上传word到HDFS ./hdfs dfs -put word /word # 查看 ./hdfs dfs -cat /word 3.进入到spark命令行 # 进入spark的命令目录 cd /root/spark-2.2.1-bin-hadoop2.7

spark训练模型

杀马特。学长 韩版系。学妹 提交于 2020-03-27 02:35:19
训练模型 一、前述 经过之前的训练数据的构建可以得到所有特征值为1的模型文件,本文将继续构建训练数据特征并构建模型。 二、详细流程 将处理完成后的训练数据导出用做线下训练的源数据(可以用Spark_Sql对数据进行处理) insert overwrite local directory '/opt/data/traindata' row format delimited fields terminated by '\t' select * from dw_rcm_hitop_prepare2train_dm; 注:这里是将数据导出到本地,方便后面再本地模式跑数据,导出模型数据。这里是方便演示真正的生产环境是直接用脚本提交spark任务,从hdfs取数据结果仍然在hdfs,再用ETL工具将训练的模型结果文件输出到 web项目的文件目录下,用来做新的模型,web项目设置了定时更新模型文件,每天按时读取新模型文件 三、代码详解 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64

记一次--------sparkSQL程序local模式运行不起来,增加参数配置spark.locality.wait

爷,独闯天下 提交于 2020-03-26 02:28:29
问题: 跑本地模式 一直卡在下图最下面日志部分30分钟不动 查看运行日志一直卡在 箭头处不动,没有任何报错。 因为处理逻辑只是简单的sparksql两个表left join, union, having等简单的函数操作。 测试环境 数据仅有3w条。 虽然将程序打包到集群,但还是跑的local模式, 下面是脚本配置 #!/bin/bash #jdk export JAVA_HOME=/usr/java/jdk1.8.0_162 export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin #hadoop export HADOOP_HOME=/opt/cloudera/parcels/CDH-5.14.0-1.cdh5.14.0.p0.24 export PATH=${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native #spark #export SPARK_HOME=/opt/cdh/spark-2.1.0-bin-2.6.0-cdh5.14.0 #export PATH=$PATH:$SPARK_HOME/bin:

Spark之RDD

送分小仙女□ 提交于 2020-03-25 21:26:40
一:RDD简介 (一)RDD概念 RDD(Resilient Distributed DataSet),弹性分布式数据集, 是Spark中最基本,也是最重要的数据抽象, 它 代表一个不可变、可分区、里面的元素可并行计算的集合 。RDD具有数据流模型的特点:自动容错、位置感知度调度和可伸缩性。RDD允许用户在执行多个查询时显式地将工作集缓存在内存中,后续的查询能重用工作集,这极大地提升了查询速度。因为有RDD,所以Spark才支持分布式的计算。RDD由分区组成。 (二)RDD的五个特性 (1)一组分片( Partition ),即数据集的基本组成单位。---RDD会被分片处理,用于并行计算 对于RDD来说,每个分片都会被一个计算任务处理,并决定并行计算的粒度。用户可以在创建RDD时指定RDD的分片个数,如果没有指定,那么就会采用默认值。默认值就是程序所分配到的CPU Core的数目。 (2)一个计算每个分区的函数。---一个对每个split(数据分区)进行计算的函数,也称为RDD的算子 Spark中RDD的计算是以分片为单位的,每个RDD都会实现compute函数以达到这个目的。compute函数会对迭代器进行复合,不需要保存每次计算的结果。 (3)RDD之间的依赖关系。(DAG有向无环图调度构造依赖关系) RDD的每次转换都会生成一个新的RDD

Kafka设计解析(七)Kafka Stream

久未见 提交于 2020-03-24 11:28:31
转载自 技术世界 ,原文链接 Kafka设计解析(七)- Kafka Stream 本文介绍了Kafka Stream的背景,如Kafka Stream是什么,什么是流式计算,以及为什么要有Kafka Stream。接着介绍了Kafka Stream的整体架构,并行模型,状态存储,以及主要的两种数据集KStream和KTable。并且分析了Kafka Stream如何解决流式系统中的关键问题,如时间定义,窗口操作,Join操作,聚合操作,以及如何处理乱序和提供容错能力。最后结合示例讲解了如何使用Kafka Stream。 目录 一、Kafka Stream背景 1. Kafka Stream是什么 2. 什么是流式计算 3. 为什么要有Kafka Stream 二、Kafka Stream架构 1. Kafka Stream整体架构 2. Processor Topology 3. Kafka Stream并行模型 4. KTable vs. KStream 5. State store 三、Kafka Stream如何解决流式系统中关键问题 1. 时间 2. 窗口 3. Join 4. 聚合与乱序处理 5. 容错 四、Kafka Stream应用示例 五、总结 一、Kafka Stream背景 1. Kafka Stream是什么 Kafka Stream是Apache