Spark
文章平均质量分 54
分享关于Spark相关的技术知识
一个数据小开发
阿里巴巴集团码农一枚~欢迎一起交流学习进步
展开
-
关于Spark数据倾斜调优看这一篇就够了
调优概述有的时候,我们可能会遇到大数据计算中一个最棘手的问题——数据倾斜,此时Spark作业的性能会比期望差很多。数据倾斜调优,就是使用各种技术方案解决不同类型的数据倾斜问题,以保证Spark作业的性能。数据倾斜发生时的现象绝大多数task执行得都非常快,但个别task执行极慢。比如,总共有1000个task,997个task都在1分钟之内执行完了,但是剩余两三个task却要一两个小时。这种情况很常见。 原本能够正常执行的Spark作业,某天突然报出OOM(内存溢出)异常,观察异常栈,是我们写原创 2021-12-29 20:32:18 · 745 阅读 · 2 评论 -
Spark跨集群读取HDFS文件
大家平时可能都是在本集群上读取本地的HDFS文件,那如果我有两套集群呢?这个时候该如何读取另外一套集群上面的HDFS文件呢?废话不多说,直接上代码,如果代码有关于一些nameservices等这些信息不知道去哪里看的人,可以翻翻我之前的博客,或者私信我。原创 2021-12-21 11:51:38 · 3149 阅读 · 0 评论 -
Spark Dataset<Row>写入Elasticsearch实战
1、前言Spark操作数据写入es,可以参考官方案例来操作Apache Spark support | Elasticsearch for Apache Hadoop [7.14] | Elastic本博客,讲挑选其中的一种方法进行讲解。2、方法JavaEsSpark类中,提供了四大类方法把数据写入到es中。def saveToEs(jrdd: JavaRDD[_], resource: String) = EsSpark.saveToEs(jrdd.rdd, resource原创 2021-09-22 19:42:28 · 1206 阅读 · 2 评论 -
Spark中的UDTF
1、介绍之前的文章中讲到过如何编写Spark的UDF函数之前的文章如下:https://blog.csdn.net/Aaron_ch/article/details/113346185那么何为UDTF呢??又如何在Spark中使用UDTF呢??1.1、何为UDTF其实做过大数据的,熟悉Hive小伙伴一定知道,Hive中也有很多常用官方UDTF,explodejson_tupleget_splits等等。就是把一行数据,转换为多行多列。简单来讲如下:输入 {"test原创 2021-05-19 23:23:30 · 2053 阅读 · 9 评论 -
浅谈Spark中的宽依赖和窄依赖
1、何为Spark中的宽依赖和窄依赖1.1、官方源码解释1.1.1、NarrowDependency(窄依赖)/** * :: DeveloperApi :: * Base class for dependencies where each partition of the child RDD depends on a small number * of partitions of the parent RDD. Narrow dependencies allow for pipelin原创 2021-04-28 00:45:29 · 2245 阅读 · 0 评论 -
Spark RDD的flatMap、mapToPair、reduceByKey三个算子详解
1、官方解释1.1、flatMap<U>JavaRDD<U>flatMap(FlatMapFunction<T,U>f)Return a new RDD by first applying a function to all elements of this RDD, and then flattening the results.Parameters:f- (undocumented)Returns:(undocumented)...原创 2021-04-24 23:02:52 · 1730 阅读 · 2 评论 -
【Spark】根据经纬度算出对应的城市
思路:造一个存有全国每个城市边界经纬度的信息表,把经纬度点使用算法公式按照一定的逻辑挨个循环去匹配。处理过程中的城市经纬度Map类似于如下:如果要全国的可以访问如下链接下载相对应的csv全部实现逻辑代码如下:import org.apache.spark.SparkConf;import org.apache.spark.sql.Dataset;import org.apache.spark.sql.Row;import org.apache.spark.sql.Spark.原创 2021-03-27 22:25:11 · 1832 阅读 · 2 评论 -
Spark SQL使用get_json_object函数解析json
get_json_object(string json_string, string path)说明:第一个参数填写json对象变量,第二个参数使用$表示json变量标识,然后用 . 或 [] 读取对象或数组;如果输入的json字符串无效,那么返回NULL。举例:数据准备如下:使用实例:with data_table as (select "{ \"timestamp\": \"2021-03-23T06:45:11.460Z\", \"metadata\": {原创 2021-03-23 20:57:21 · 10599 阅读 · 0 评论 -
Spark SQL根据竖线进行字符串split函数取最后一个数组值
方法一,使用substring_index函数select substring_index(get_json_object(data,'$.message'),"|",'-1') from table_name;方法二,使用split函数思路:先利用反转函数reverse,把最后一个转到第一个,就可以在split后用下标为0的数组值,然后再使用一次reverse函数进行字符串反转,实例代码如下:这个地方需要注意的点是Spark SQL中使用split函数利用"|",竖线分隔的时候需要..原创 2021-03-23 20:24:53 · 7684 阅读 · 2 评论 -
Spark之窗口函数WindowSpec中的row_number()
Spark的窗口函数WindowSpec之Java语言实现代码如下import org.apache.spark.sql.expressions.WindowSpec;import org.apache.spark.sql.expressions.Window;import org.apache.spark.sql.functions;WindowSpec windowSpec = Window.partitionBy("colName1").orderBy(functions.desc("c原创 2021-02-16 22:14:11 · 856 阅读 · 0 评论 -
Spark数据写入Kudu,报Caused by: java.lang.RuntimeException: PendingErrors overflowed. Failed to write at..
错误如下:2021-02-01 17:11:13 ERROR TaskSetManager:73 - Task 0 in stage 4.0 failed 1 times; aborting job2021-02-01 17:11:13 INFO TaskSchedulerImpl:57 - Removed TaskSet 4.0, whose tasks have all completed, from pool 2021-02-01 17:11:13 INFO TaskSchedulerI原创 2021-02-03 11:12:01 · 1272 阅读 · 2 评论 -
Spark使用Java编写UDF函数
如下图查看Spark源码一共有23中UDF函数他们之间最大的区别就是传参数的个数问题的区别UDF1函数源码如下:public interface UDF1<T1, R> extends Serializable { R call(T1 var1) throws Exception;}UDF2函数源码如下:public interface UDF2<T1, T2, R> extends Serializable { R call(T1 va原创 2021-01-28 20:16:26 · 2250 阅读 · 0 评论 -
Spark写hbase报错 AsyncRequestFutureImpl:490 Cannot get replica 0 location for
AsyncRequestFutureImpl:490 - Cannot get replica 0 location for .....................................org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 1 action: xxx:xxxxx1 time, servers with issues: nullat org.apache.hadoop.hb.原创 2021-01-28 12:34:48 · 2656 阅读 · 0 评论 -
Spark使用Java读Hive写入HBase
Spark使用Java读Hive写入HBaseSpark读取Hive数据得方法在下面之前得一篇博客中有提及,在此就不重复提了,如果感兴趣得可以查阅如下连接中得博客Spark使用Java读Hive得博客:https://blog.csdn.net/Aaron_ch/article/details/113151157rowDataset.foreachPartition((ForeachPartitionFunction<Row>) t -> { ...原创 2021-01-28 12:14:54 · 832 阅读 · 0 评论 -
Spark使用Java通过HiveServer2 JDBC方式跨集群读取Hive数据
Spark通过HiveServer2 JDBC方式访问Hive数据(Java语言)1、环境信息准备jdbc连接url ,通常都是 端口为10000的连接jdbc用户名jdbc密码2、代码实战public static void main(String[] args) { SparkConf conf = new SparkConf().setAppName("Spark-Read-Hive-by-Java") .setMaster.原创 2021-01-25 23:51:32 · 2666 阅读 · 0 评论 -
Spark读取MySQL数据
1、什么是ELT数据工程师,多数情况下接触过ETL,即提取(Extract)、转换(Transform)、加载(Load),随着越来越多的计算平台能力的崛起,很多时候,数据工程师按照ELT进行数据操作,即按照提取(Extract)、加载(Load)、转换(Transform),此好处就是,数据的转换可以借助于强大的计算平台,而数据同步工具只需要更多的关注数据的提取和加更加简单快捷的为开发者提高效率。2、为什么选择Sparka)在日益增长的业务数据同步过程中,很多传统ETL工具都是单机运行,搭建一原创 2020-12-31 22:44:16 · 1890 阅读 · 0 评论