
spark
文章平均质量分 74
spark相关内容
shy_01
真正的优秀是习惯的优秀。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
spark参数说明及优化
合理并行度set spark.default.parallelism=72;set spark.sql.shuffle.partitions=72;资源动态分配set spark.dynamicAllocation.enabled=false;推测机制set spark.speculation=true;set spark.speculation.interval=50000;set spark.speculation.quantile=0.95;s...原创 2022-05-26 16:22:06 · 2202 阅读 · 0 评论 -
spark写出阶段-job commit时间过长
spark写hive表,若有rename过程,driver端串行rename每个文件(每秒一个),会导致写表速度缓慢;1. 使用了hive的元数据而非spark的;2. 触发使用了一致性提交方式;原创 2021-11-21 16:35:48 · 2248 阅读 · 0 评论 -
spark开发问题汇总
1 可能导致内存溢出的聚合函数1 错误代码Container exited with a non-zero exit code 134. Error file: prelaunch.err.Last 4096 bytes of prelaunch.err2 函数collect_set 、 collect_list3 原因某个key值(null, unknown, 空串)过多, 被聚合的value值过多, 导致范围(数组超范围)超限;3 解决方法1) 调大内存2) .原创 2021-09-23 09:57:56 · 4389 阅读 · 0 评论 -
spark-sql优化
1 任务拆解1) 原始查询sql(多个etype, 多个dt查询, 数据量过大查询不出来) select dt, etype, count(distinct gazj) from table_name where dt between '20201101' and '20210228' and etype in ('10410007','10410008','10410009') and get_json_object(eparam,...原创 2021-04-06 14:41:03 · 3581 阅读 · 0 评论 -
spark场景功能实现
1. 字符串累加2 行列转换3 数据填充4 设定变量5 生成id7 lateral view使用1. lateral view级联使用8 分组聚合9 数据透视Spark SQL 的 PIVOT 子句用于数据透视。根据特定的列值获得聚合值,这些值将转换为 SELECT 子句中使用的多个列.10 抽样数据tablesample是对表采样(先采样后过滤), 会导致扫全表;因此, 使用时最好先限定分区和过滤条件获得临时结果表, 再对临时表进行采样;11 选择列12 分析函数13 去重统计。原创 2021-04-02 15:23:33 · 1753 阅读 · 0 评论 -
spark直接写hive表速度慢
1. sparksql动态分区直接写入hive表速度慢1 动态写入速度慢的sqlset hive.exec.dynamic.partition.mode=nonstrict;insert overwrite table ssjt_test partition(dt) select a,dt from ssjt.test2 where dt>='20200801';2. 文件方式写入后, alter方式添加分区1) 过滤出要删除的目录;2) 删除要重新覆盖的目录;3) 文件方式写入(原创 2020-10-15 11:52:01 · 3956 阅读 · 0 评论 -
表的join操作
2) 最好显示的指明广播join /*+ broadcast(bb) */每天活跃A表: 主键ID、应用名pkg、其它维度值, 数据量-300W。全量激活B表: 主键ID、应用名pkg、其它维度值, 数据量-370亿。1) 广播的名字不对,有别名时要广播表的别名;表A数据倾斜并且数据量大, 表B数据量较小。聚合A表当天活跃中是当天激活的数据.降低join的数据量。原创 2020-10-14 19:10:50 · 123 阅读 · 0 评论 -
spark读取hive表异常
1 原因为了性能spark对元数据做了缓存,如果外部系统更新了元数据,spark使用时要更新缓存过的该表元数据./*** Invalidates and refreshes all the cached data and metadata of the given table. For performance* reasons, Spark SQL or the external data source library it uses might cache certain metadata原创 2020-10-10 17:31:23 · 2961 阅读 · 0 评论 -
spark操作json数据
一、转换到JSON格式2. spark-sql转json串1. 把某些列封装到json串2. 把所有列封装到json串二、 特殊字符1. key中含有特殊字符三、数组操作四、 spark读取json文件1. dataframe指定schema读取。原创 2020-08-09 21:18:02 · 10982 阅读 · 1 评论 -
spark字符串操作处理
目录1 spark-sql字符串截取操作1.1 sql语句中使用1.2 dsl语句中使用1 spark-sql字符串截取操作1.1 sql语句中使用1 返回字符串A从start位置到结尾的字符串select substring('abcde',3);cdeselect substring('abcde',-2);de2 返回字符串A从start位置开始,长度为len的字符串select substring('abcde',3,2);cdselect substrin原创 2020-07-25 17:43:11 · 9471 阅读 · 1 评论 -
spark日期时间处理
标准日期格式符号: yyyy-MM-dd HH:mm:ss、yyyy-M-ddTHH:mm:ss。'२०२४-१०-१९ ०५:१६:०५' 转换到 '2024-10-19 05:16:05'前端显示date、time类型的时候,有可能收时区的影响,为了避免不必要的麻烦可存成字符串;1. 函数性能,选择高性能方式或函数。从指定格式的时间转换到Unix时间。2) 这种特定时间戳格式受时区影响。这两个函数从官方文档看是相同的;第一个参数必须是标准格式的时间。第一个参数是10位的时间戳。原创 2020-07-25 09:22:26 · 15487 阅读 · 0 评论 -
spark添加空值-null列直接以parquet格式写出到指定目录
1 原因 parquet格式自带描述信息, 写出的数据必须明确数据类型; null是无数据类型, 增加空值列, 必须把null转成相应的数据类型。2 添加方式1) 方式01import org.apache.spark.sql.functions._import org.apache.spark.sql.types.StringType// 1 获取SparkSessionval spark = SparkSession .builder() .appNa...原创 2020-06-04 07:38:54 · 1929 阅读 · 0 评论 -
spark-sql读写数据源
spark读写数据源的相关操作一、读FileSystem;1)from后的表名用“文件格式.`存储路径`”代替;2) 可以使用分区字段, 但路径要指定到分区字段的上一层;1) 用options设定参数, 实现个性化读取;2) 可以使用分区字段, 但路径要指定到分区字段的上一层;3)获取记录所在文件路径:input_file_name()-- 忽略损坏的文件-- 忽略丢失的文件2. 使用样例。原创 2020-05-30 17:57:58 · 2364 阅读 · 1 评论 -
hive查询时某些字段为null而用spark查询则正常
1 原因_01spark写出数据到hive表时, 写出的字段名、字段类型、字段顺序必须与hive表一致, 否则可能出现用hive查询时某些字段为null, 用spark查询则正常;原创 2020-05-30 16:02:44 · 1530 阅读 · 0 评论 -
sprk使用手册
1 spark-sql字符串截取操作1.1 sql语句中使用1 返回字符串A从start位置到结尾的字符串select substring('abcde',3);cdeselect substring('abcde',-2);de2 返回字符串A从start位置开始,长度为len的字符串select substring('abcde',3,2);cdselect subs...............原创 2020-04-19 11:39:11 · 2780 阅读 · 1 评论 -
spark-sql显示的指明广播join
1 dataframe中指明广播join// 1 广播变量参数 conf.set( "spark.sql.autoBroadcastJoinThreshold", "104857600" ) //广播表的上限:单位为B,现设置最大广播100M的表;conf.set( "spark.sql.broadcastTimeout", "-1" ) //广播超时时间:...原创 2020-04-19 10:26:07 · 2872 阅读 · 0 评论 -
dataframe获取分区个数及每个分区的内容
1 dataframe获取分区个数val df = spark.sparkContext.makeRDD(1.to(100), 4).toDF("id")val partition_num=df.rdd.partitions.lengthprintln(partition_num)2 dataframe获取每个分区的内容// 构造测试数据val df = spark.s...原创 2020-04-19 09:40:58 · 3122 阅读 · 0 评论 -
spark和hive注册udf
// 1 用此方式注册udf函数,dsl和sql中都能使用。注意:注册名(sql中用)和返回值(dsl中用)名要一致val simpleUDF = spark.udf register("simpleUDF", (v: Int) => v * v)// val simpleUDF = spark.udf register("simpleUDF", v2 _)// 2 构造数据源v............原创 2020-04-16 06:49:38 · 3050 阅读 · 0 评论 -
获取hive表最新分区时间
1 shell实现方式#!/usr/bin/env bashsource ~/.bashrc# 获取hive表最新分区时间函数function getNewestDate() { # 获取(库名.表名) local database_table_name=${1} # hive命令获取所有分区, 降序排列后(shell命令排序, 去掉了hive命令的re...原创 2020-04-05 12:12:30 · 4724 阅读 · 1 评论 -
spark的dataframe分组聚合及dataframe随机分成几组
目录1 dataframe随机分组1 dataframe随机分组1 实现功能 dataframe按照权重随机分成n组, 权重和为1.2 代码demo// 1 获取SparkSessionval spark: SparkSession = SparkSession .builder() .appName(s"${this.getClass.getSi...原创 2020-04-06 09:44:16 · 2980 阅读 · 1 评论 -
Unable to instantiate SparkSession with Hive support because Hive classes are not found
1 问题spark 本地测试时,报如下错误日志:Caused by: java.lang.IllegalArgumentException: Unable to instantiate SparkSession with Hive support because Hive classes are not found.2 解决1) 获取sparksession时不要用enableHiveSup...原创 2020-02-13 22:46:38 · 1143 阅读 · 0 评论 -
Spark读取路径及通配符使用
Spark读取单路径及多路径下的文件1.1 sparkContext方式读取文件spark.sparkContext.textFile方法返回一个rdd。1.1.1 单路径读取val rdd=spark.sparkContext.textFile(path)1.1.2 多路径读取1) 方式01val rdd=spark.sparkContext.textFile("D:\\dat...原创 2020-01-05 21:00:43 · 5563 阅读 · 0 评论