spark
qq_43193797
github:https://github.com/yanjie666
展开
-
Spark读取Json类型的数据与读取Hive中的数据
1.spark读取json类型的数据val df = spark.read.json("examples/src/main/resources/vertex")df.show(5,false)2.spark读取hive中的数据val spark = SparkSession.builder().master("yarn").appName("hive2nebula").enableHiveSupport().getOrCreate()val sql: String ="select id_no原创 2021-04-12 20:20:27 · 659 阅读 · 0 评论 -
Spark-submit打印数据
spark.read.json("/user/log/ad/hdt_bid/2021041201")df.take(5).foreach(print)spark.read.json("/user/log/ad/hdt_bid/2021041201")df.show(true)原创 2021-04-12 11:57:44 · 438 阅读 · 0 评论 -
Spark读取hdfs文件原理
var sconf = new SparkConf().setAppName(this.getClass.getName).setMaster("yarn")var sc = new SparkContext(sconf)sc.textFile("hdfs://m2:9820/README.md")查看textFile方法内容如下: /** * Read a text file from HDFS, a local file system (available on all nodes),原创 2020-12-25 16:13:01 · 823 阅读 · 0 评论 -
spark-sql读取嵌套json数据
SparkSql 版本为 2.2.0sparksql解析json格式的数据源首先,获取操作sparkSql的SparkSession操作实例:val session = SparkSession.builder().master(“local[*]”).appName(this.getClass.getSimpleName).getOrCreate()// 导入隐式转换和functionsimport session.implicits._import org.apache.spark.s转载 2020-09-07 11:42:36 · 1892 阅读 · 0 评论 -
hive中的distribute by
1.背景hive中有一个store表,字段分别是"商店所属人标识"(merid),“商户余额(money)”,“商店名称(name)”。求每个法人下属的商店的余额按照降序排序。//merid,money,nameB 10 store_B_4A 12 store_A_1A 14 store_A_2B 15 store_B_1B 19 store_B_2B 30 store_B_32...原创 2020-04-01 15:03:14 · 764 阅读 · 0 评论 -
spark数据清洗解决方案
数据倾斜的解决方案 之 小表join大表转为小表broadcast+map大表实现。适用场景:在对RDD使用join类操作,或者是在Spark SQL中使用join语句时,并且join操作中的一个RDD或表的数据量比较小(比如几百M或者一两G)。实现原理:普通的join是会走shuffle过程的,而一旦shuffle,就相当于会将相同key的数据拉取到一个shuffle read task...原创 2020-01-15 15:02:11 · 2458 阅读 · 0 评论 -
java.lang.RuntimeException: java.lang.String is not a valid external type for schema of boolean
使用spark进行json解析时发生 Caused by: java.lang.RuntimeException: java.lang.String is not a valid external type for schema of boolean表示的是,hive表的数据类型是Boolean类型,但是你自己却定义成string类型...原创 2020-01-14 10:10:38 · 802 阅读 · 0 评论 -
spark中flatMap函数用法--spark学习(基础)
说明在spark中map函数和flatMap函数是两个比较常用的函数。其中map:对集合中每个元素进行操作。flatMap:对集合中每个元素进行操作然后再扁平化。理解扁平化可以举个简单例子val arr=sc.parallelize(Array(("A",1),("B",2),("C",3)))arr.flatmap(x=>(x._1+x._2)).foreach(println...转载 2019-12-31 15:27:51 · 704 阅读 · 0 评论 -
Hive使用Spark on Yarn作为执行引擎
Hive从1.1之后,支持使用Spark作为执行引擎,配置使用Spark On Yarn作为Hive的执行引擎,首先需要注意以下两个问题:Hive的版本和Spark的版本要匹配;具体来说,你使用的Hive版本编译时候用的哪个版本的Spark,那么就需要使用相同版本的Spark,可以在Hive的pom.xml中查看spark.version来确定;Hive rootpom.xml...转载 2019-12-11 17:42:41 · 1335 阅读 · 0 评论 -
如何使用spark查询数据清洗的key
举例来说,对于上面所说的单词计数程序,如果确定了是stage1的reduceByKey算子导致了数据倾斜,那么就应该看看进行reduceByKey操作的RDD中的key分布情况,在这个例子中指的就是pairs RDD。如下示例,我们可以先对pairs采样10%的样本数据,然后使用countByKey算子统计出每个key出现的次数,最后在客户端遍历和打印样本数据中各个key的出现次数。...原创 2019-12-02 20:34:05 · 197 阅读 · 0 评论 -
使用spark清洗json数据踩坑
hive表的结构和数据类型如下:建表语句如下:CREATE EXTERNAL TABLE `ad.ad_win_hdt`(`req_id` string COMMENT '??id',`price` bigint COMMENT '??',`source_type` string)PARTITIONED BY ( `data_date` bigint)STORED AS PAR...原创 2019-10-18 16:21:51 · 685 阅读 · 0 评论 -
spark报错Caused by: java.lang.RuntimeException: java.lang.Long is not a valid external type for schema
注意hive中的数据类型与spark解析后的类型一致def getResponseEncoder: Encoder[Row] = { val schema = StructType( StructField("price", StringType, nullable = true) :: StructField("app_bundle_id", Strin...原创 2019-10-17 15:03:32 · 1583 阅读 · 0 评论 -
Spark(Hive) SQL数据类型使用详解(Python)
Spark(Hive) SQL数据类型使用详解(Python)文章转载:https://www.cnblogs.com/yurunmiao/p/4923694.htmlSpark SQL使用时需要有若干“表”的存在,这些“表”可以来自于Hive,也可以来自“临时表”。如果“表”来自于Hive,它的模式(列名、列类型等)在创建时已经确定,一般情况下我们直接通过Spark SQL分析表中的数据...转载 2019-10-16 17:41:48 · 847 阅读 · 0 评论 -
spark读取parquet文件
spark-shell读取parquet文件1、进入spark-shell窗口2、val sqlContext = new org.apache.spark.sql.SQLContext(sc)3、val parquetFile = sqlContext.parquetFile("hdfs://cdp/user/az-user/sparkStreamingKafka2Hd...原创 2019-10-14 13:31:04 · 1541 阅读 · 0 评论 -
Spark之RDD的创建
要使用Spark,开发者需要编写一个Driver程序,它被提交到集群以调度运行WorkerRDD的创建在Spark中创建RDD的创建方式可以分为三种:从集合中创建RDD;从外部存储创建RDD;从其他RDD创建。从集合中创建从集合中创建RDD,Spark主要提供了两种函数:parallelize和makeRDD1)使用parallelize()从集合创建2)使用make...原创 2019-04-12 10:58:28 · 152 阅读 · 0 评论 -
Spark 任务调度机制
Driver的工具流程Driver线程Driver线程主要是初始化SparkContext对象,准备运行所需的上下文,然后一方面保持与ApplicationMaster的RPC连接,通过ApplicationMaster申请资源,另一方面根据用户业务逻辑开始调度任务,将任务下发到已有的空闲Executor上。Executor进程Executor进程起来后,会向Driver反向注册,...原创 2019-04-24 21:30:51 · 335 阅读 · 0 评论 -
YARN Cluster模式
(1)执行脚本提交任务,实际是启动一个SparkSubmit的JVM进程;(2)SparkSubmit类中的main方法反射调用Client的main方法;(3)Client创建Yarn客户端,然后向Yarn发送执行指令:bin/java ApplicationMaster;(4)Yarn框架收到指令后会在指定的NM中启动ApplicationMaster;(5)A...原创 2019-04-25 10:47:14 · 758 阅读 · 0 评论 -
Spark Shuffle解析
ShuffleMapStage与ResultStageShuffleMapStage的结束伴随着shuffle文件的写磁盘。ResultStage基本上对应代码中的action算子,即将一个函数应用在RDD的各个partition的数据集上,意味着一个job的运行结束。HashShuffle解析未优化的HashShuffle一个Task多个缓存如下图中有3个 Reducer...原创 2019-04-25 12:52:07 · 147 阅读 · 0 评论 -
Spark 数据倾斜
一、前述数据倾斜问题是大数据中的头号问题,所以解决数据清洗尤为重要,本文只针对几个常见的应用场景做些分析 。二。具体方法1、使用Hive ETL预处理数据方案适用场景:如果导致数据倾斜的是Hive表。如果该Hive表中的数据本身很不均匀(比如某个key对应了100万数据,其他key才对应了10条数据),而且业务场景需要频繁使用Spark对Hive表执行某个分析操作...原创 2019-05-14 01:53:29 · 92 阅读 · 0 评论 -
sparkstreaming的reduceByKeyAndWindow窗口函数的用法
今天我们主要来说一下spark中reduceByKeyAndWindow窗口函数的使用方法;先看一下官网的图片吧:这个是sparkstreaming提供的窗口计算,允许你在一个滑动的窗口中进行计算,所有这些窗口操作都需要两个参数 -windowLength和slideInterval。(窗口长度-窗口的持续时间,滑动间隔- 执行窗口操作的间隔)比如说我们现在要每隔2秒,统计前...转载 2019-05-12 22:21:51 · 800 阅读 · 0 评论 -
使用spark随机读取前10条数据
val rdd=sc.textFile("/hive/external/ad_win_b/2019122704");rdd.take(100).foreach(println)原创 2019-08-12 15:00:50 · 3063 阅读 · 0 评论 -
spark读取文件并查看表结构
val jsrdd=spark.read.json("hdfs://nameservice1/user/ad/ad_uc_click/20180907/*");jsrdd.createOrReplaceTempView("click")jsrdd.printSchema原创 2019-09-10 10:51:22 · 2666 阅读 · 0 评论 -
Spark集群启动通讯原理简单解析
(1)start-all.sh脚本,实际是执行“java -cp Master”和“java -cp Worker”;(2)Master启动时首先创建一个RpcEnv对象,负责管理所有通信逻辑;(3)Master通过RpcEnv对象创建一个Endpoint,Master就是一个Endpoint,Worker可以与其进行通信;(4)Worker启动时也是创建一个RpcEnv对象...原创 2019-04-23 16:26:44 · 273 阅读 · 0 评论 -
SparkStreaming有哪几种方式消费Kafka中的数据,它们之间的区别是什么?
一、基于Receiver的方式这种方式使用Receiver来获取数据。Receiver是使用Kafka的高层次Consumer API来实现的。receiver从Kafka中获取的数据都是存储在Spark Executor的内存中的(如果突然数据暴增,大量batch堆积,很容易出现内存溢出的问题),然后Spark Streaming启动的job会去处理那些数据。然而,在默认的配置下,这种方...原创 2019-04-14 17:08:36 · 2038 阅读 · 0 评论 -
Spark中任务划分
RDD任务切分中间分为:Application、Job、Stage和Task1)Application:初始化一个SparkContext即生成一个Application;2)Job:一个Action算子就会生成一个Job;3)Stage:根据RDD之间的依赖关系的不同将Job划分成不同的Stage,遇到一个宽依赖则划分一个Stage;对于宽依赖,由于有Shuffle的存在,只能在...原创 2019-04-12 21:22:26 · 830 阅读 · 0 评论 -
Spark之行动算子(Action)
reduce(func)案例1. 作用:通过func函数聚集RDD中的所有元素,先聚合分区内数据,再聚合分区间数据。2. 需求:创建一个RDD,将所有元素聚合得到结果(1)创建一个RDD[Int]scala> val rdd1 = sc.makeRDD(1 to 10,2)rdd1: org.apache.spark.rdd.RDD[Int] = ParallelCo...原创 2019-04-12 20:52:37 · 904 阅读 · 0 评论 -
Spark RDD之Key-Value类型操作详解
partitionBy案例1. 作用:对pairRDD进行分区操作,如果原有的partionRDD和现有的partionRDD是一致的话就不进行分区,否则会生成ShuffleRDD,即会产生shuffle过程。2. 需求:创建一个4个分区的RDD,对其重新分区(1)创建一个RDDscala> val rdd = sc.parallelize(Array((1,"aaa"...原创 2019-04-12 15:04:15 · 7498 阅读 · 0 评论 -
RDD和RDD之间的操作
union(otherDataset) 案例1. 作用:对源RDD和参数RDD求并集后返回一个新的RDD要求俩个RDD是相同类型subtract (otherDataset) 案例1. 作用:计算差的一种函数,去除两个RDD中相同的元素,不同的RDD将保留下来2. 需求:创建两个RDD,求第一个RDD与第二个RDD的差集(1)创建第一个RDDscala> va...原创 2019-04-12 14:00:33 · 1247 阅读 · 0 评论 -
RDD的转换之value类型详解
Value类型map(func)案例源码如下RDD整体上分为Value类型和Key-Value类型1. 作用:返回一个新的RDD,该RDD由每一个输入元素经过func函数转换后组成2. 需求:创建一个1-10数组的RDD,将所有元素*2形成新的RDD(1)创建scala> var source = sc.parallelize(1 to 10)sour...原创 2019-04-12 13:18:17 · 807 阅读 · 0 评论 -
Spark之RDD的属性以及RDD特点
RDD的属性源码描述如下:一组分区(Partition),即数据集的基本组成单位; 一个计算每个分区的函数; RDD之间的依赖关系; 一个Partitioner,即RDD的分片函数; 一个列表,存储存取每个Partition的优先位置(preferred location)。RDD特点RDD表示只读的分区的数据集,对RDD进行改动,只能通过RDD的转换操作,由一个RDD...原创 2019-04-12 09:59:35 · 621 阅读 · 1 评论 -
关于RDD分区(一)
RDD是弹性分布式数据集,通常RDD很大,会被分成很多个分区,分别保存在不同的节点上,作用有二:增加并行度和减少通信开销(连接操作),例如下图:RDD分区原则:RDD分区的一个原则是使得分区的个数尽量等于集群中的CPU核心(core)数目对于不同的Spark部署模式而言(本地模式、Standalone模式、YARN模式、Mesos模式),都可以通过设置spark.default.pa...转载 2019-04-11 00:59:23 · 1722 阅读 · 0 评论 -
spark RDD 宽窄依赖理解
== 转载 == http://blog.csdn.net/houmou/article/details/52531205宽依赖与窄依赖窄依赖是指父RDD的每个分区只被子RDD的一个分区所使用,子RDD分区通常对应常数个父RDD分区(O(1),与数据规模无关) 相应的,宽依赖是指父RDD的每个分区都可能被多个子RDD分区所使用,子RDD分区通常对应所有的父RDD分区(O(n),与数据规模...原创 2019-04-10 20:52:51 · 186 阅读 · 0 评论 -
Spark之Yarn模式
概述Spark客户端直接连接Yarn,不需要额外构建Spark集群。有yarn-client和yarn-cluster两种模式,主要区别在于:Driver程序的运行节点。yarn-client:Driver程序运行在客户端,适用于交互、调试,希望立即看到app的输出yarn-cluster:Driver程序运行在由RM(ResourceManager)启动的AM(APPMaster)适...原创 2019-04-10 15:02:05 · 244 阅读 · 0 评论 -
Spark中键值对RDD数据分区
Spark目前支持Hash分区和Range分区,用户也可以自定义分区,Hash分区为当前的默认分区,Spark中分区器直接决定了RDD中分区的个数、RDD中每条数据经过Shuffle过程属于哪个分区和Reduce的个数注意:(1)只有Key-Value类型的RDD才有分区器的,非Key-Value类型的RDD分区的值是None(2)每个RDD的分区ID范围:0~numPartitions-...原创 2019-04-12 21:24:04 · 590 阅读 · 0 评论 -
Spark中的累加器
累加器累加器用来对信息进行聚合,通常在向 Spark传递函数时,比如使用 map() 函数或者用 filter() 传条件时,可以使用驱动器程序中定义的变量,但是集群中运行的每个任务都会得到这些变量的一份新的副本,更新这些副本的值也不会影响驱动器中的对应变量。如果我们想实现所有分片处理时更新共享变量的功能,那么累加器可以实现我们想要的效果。举例代码:object TestAcc...原创 2019-04-09 18:34:16 · 1286 阅读 · 0 评论 -
简述SparkSQL中RDD、DataFrame、DataSet三者的区别与联系?
1)RDD优点:编译时类型安全编译时就能检查出类型错误面向对象的编程风格直接通过类名点的方式来操作数据缺点:序列化和反序列化的性能开销无论是集群间的通信, 还是IO操作都需要对对象的结构和数据进行序列化和反序列化。GC的性能开销,频繁的创建和销毁对象, 势必会增加GC2)DataFrameDataFrame引入了schema和off-heap...原创 2019-04-14 16:43:19 · 396 阅读 · 0 评论 -
Spark Stream之读取Kafka数据源
用法及说明在工程中需要引入Maven工件spark-streaming-kafka-0-8_2.11来使用它。包内提供的 KafkaUtils对象可以在StreamingContext和JavaStreamingContext中以你的Kafka消息创建出 DStream。两个核心类:KafkaUtils、KafkaCluster(保存zk)案例实操1)需求:通过SparkStrea...原创 2019-04-14 01:21:53 · 691 阅读 · 0 评论 -
Spark Streaming 背压(Back Pressure)机制
背景在默认情况下,Spark Streaming 通过 receivers (或者是 Direct 方式) 以生产者生产数据的速率接收数据。当 batch processing time > batch interval 的时候,也就是每个批次数据处理的时间要比 Spark Streaming 批处理间隔时间长;越来越多的数据被接收,但是数据的处理速度没有跟上,导致系统开始出现数据堆积,...转载 2019-04-14 00:59:39 · 264 阅读 · 0 评论 -
SparkSQL之用户自定义聚合函数
强类型的Dataset和弱类型的DataFrame都提供了相关的聚合函数, 如count(),countDistinct(),avg(),max(),min()。除此之外,用户可以设定自己的自定义聚合函数。弱类型用户自定义聚合函数:通过继承UserDefinedAggregateFunction来实现用户自定义聚合函数。下面展示一个求平均工资的自定义聚合函数。import o...原创 2019-04-13 23:29:37 · 305 阅读 · 0 评论 -
Spark之DataFrame创建
DataFrame创建在Spark SQL中SparkSession是创建DataFrame和执行SQL的入口,创建DataFrame有三种方式:通过Spark的数据源进行创建;从一个存在的RDD进行转换;还可以从Hive Table进行查询返回。1)从Spark数据源进行创建(1)查看Spark数据源进行创建的文件格式scala> spark.read.csv fo...原创 2019-04-13 11:16:50 · 203 阅读 · 0 评论