Spark kryo序列化 Spark中序列化的目的:序列化后数据更小,更便于传输和存储, 但是会耗用更多的cpu资源。 Spark中数据共有两种序列化方式: java :(默认) 兼容性好, 但是慢、较大。 Kryo :快, 较小, 但是需要手动地注册用到的类。 kryo的用法 : val sp...
Spark Core 实现排序的三种方式 一、普通的实现方式 val data: RDD[String] = sc.parallelize(Array("aa 200 3000", "bb 200 4000", "cc 999 3000", "dd 10 20000")) data.map(x => {...
Spark on yarn 资源调优 Spark作业在运行的时候应该分配足够多的资源, 在一定范围内, 增加资源和性能提升是成正比的。 提交到Yarn上时, 相关配置: --driver-memory Driver的内存 --executor-memory Executor的内存 --executor-cores Executor...
Kafka消费者分区分配策略 当有多个消费者和多个分区时, 该如何分配它们?配置项partition.assignment.strategy决定了分配策略。 range (默认) 配置为org.apache.kafka.clients.consumer.RangeAssignor 对于每一个Topic, 计算Pa...
Spark的宽依赖与窄依赖 窄依赖(Narrow Dependency): 一个父RDD的Partition只能被子RDD的某一个Partition使用一次 宽依赖(Wide Dependency):发生了Shuffle。一个父RDD的Partition只能被子RDD的某一个Partition使用多次 PS: join...
Spark persist 持久化 持久化算子可以将计算结果保存起来, 不必重新计算。 相关源码 持久化算子cache, persist, unpersist源码如下: /** * Persist this RDD with the default storage level (`MEMORY_ONLY`...
Spark Application 名称 解释 Application 被提交的Spark作业。由一个Driver和多个Executor构成。 Driver program 运行main主函数并创建SparkContext...
flume写到HDFS处理小文件问题 当使用hdfs sink时 有可能会产生严重的小文件问题。 通过配置rollInterval, rollSize, rollCount三个参数来缓解小文件问题。 a1.sinks.hdfssink.type = hdfsa1.sinks.hdfssin...
Spark on yarn yarn 的执行流程 Spark Application Spark与MapReduce的区别 MapReduce是基于进程的, mapTask、reducerTask 都是进程。当task完成了, 这个进程就结束了。 Spark是基于线程的, 多个task并行...
Spark 累加器 Accumulator Spark的累加器Accumulator中, Executor内只能做add操作, 只有Driver才能读取它的值。 val doubleAcc: DoubleAccumulator = sc.doubleAccumulator("doubleAcc") val collA...
Spark History Server 当Spark程序运行时, 会开启一个web服务显示该程序的详细信息, 但是程序运行完过后便不再能访问这个页面了。 开启Spark的HistoryServer后, 可以记录并显示这些信息。 配置 编辑 spark-defaults.conf, 修改参数spark.eventlog.ebab...
Spark Streaming 及相关算子 外部数据源 如果使用了基于receiver的数据源, 则receiver会占用一个进程来接受数据, 如果运行的环境上只有一个cpu核心, 那么SparkStreaming程序无法正常运行。 相关transformation算子 transform 将DStream中的...
Spark添加数据至Hive分区表 准备工作: 创建hive分区表 create table login_origin(created_date string,event_id string,dev_mac string,domain string,session_id string,dev_na...
Spark Streaming与kafka对接 使用KafkaUtil来实现SparkStreaming的对接。 KafkaUtil共有两个版本: spark-streaming-kafka-0-8 spark-streaming-kafka-0-10 kafk...
flume kafka sink 抛出异常 Bootstrap Servers must be specified 使用flume kafka sink时, 启动flume抛出异常 Sink kafkasink has been removed due to an error during configurationorg.apache.flume.conf.ConfigurationExceptio...
在IDEA本地Spark连接Hive 步骤复制hive-site.xml、hdfs-site.xml文件至项目的资源文件夹。maven中引入spark-hive_2.11以及访问元数据数据库所需要的依赖如mysql-connector-java <dependency> <group...
解决HDFS突然无法启动 启动HDFS时, 突然NameNode无法启动。日志上抛出如下异常:Failed to load image from FSImageFile(file=/dfs/nn/current/fsimage_0000000000000020745, cpktTxId=00000000000000...
使用DBeaver连接hive 使用DBeaver连接hive1.1.0时, 会抛出Required field 'client_protocol' is unset的异常, 原因是默认的驱动不匹配。解决方案: 将$HIVE_HOME/jars下的hive-jdbc-1.1.0-cdh5.16.1-standalone.j...
解决Spark读取HDFS小文件的问题 若Spark读取HDFS文件夹时, 其中的小文件过多会降低程序性能,也给HDFS带来压力。当Spark读取文件时, 会为每个文件的数据分配一个Partition, 可以使用coalesce算子减少rdd中的分区。首先, 编写函数实现根据文件大小来确定分区数的功能 def coale...
flume异常org.apache.flume.ChannelFullException 使用flume接受avro数据时, 抛出异常org.apache.flume.ChannelFullException: Space for commit to queue couldn't be acquired. Sinks are likely not keeping up with ...