spark
风翔
继续战斗,勇往无前
展开
-
Spark SQL 日期和时间戳函数
Spark SQL 提供了内置的标准 Date 和 Timestamp函数,定义在 DataFrame API 中,所有函数都接受输入日期类型、时间戳类型或字符串。如果是String,是可以转换成日期格式,比如 或 ,分别返回date和timestamp;如果输入数据是无法转换为日期和时间戳的字符串,也返回 null。尽可能尝试利用标准库,因为与Spark UDF相比,它们在编译时更安全、可以处理 null 并且性能更好。为了便于阅读,将 Date 和 Timestamp 函数分为以下几组。在使用以下任何示原创 2022-06-30 17:33:42 · 12899 阅读 · 1 评论 -
如何用vscode替代xshell
公司管理日益严格,xshell收费也不含糊,所以只能找free的替代方案了,但是试了很多工具,都不是那么流畅或方便,另外如果用vscode来做开发,来回的切换工具也非常麻烦,vscode自带的terminal越来越方便,最新版本已经可以将terminal拖动到编辑区,所以能不能用vscode来替代xshell呢。答案肯定是可以的,经过一顿ssh命令操作,和插件尝试,我终于找到了个比较好的配置方案,以后可以直接用vscode来登录不同主机,实现shell上的操作啦。首先,要找到QUICKSSH这个插件原创 2022-04-16 12:33:27 · 2227 阅读 · 0 评论 -
kylin4.0在CDH6.3.2及Hadoop3.0环境部署避坑
将kylin4.0部署在CDH6.3.2环境的某个节点上,当启动Kylin后,kylin会自动查找CDH的hadoop环境,并将其需要的配置文件等同步到hadoop_conf目录下。这时用kylin自带的spark下载工具进行spark下载,下载后spark的jars包里会有一组与CDH匹配的jar包看起来没有问题,但是在执行cube构建时,发现会报错:Exception in thread "main" java.lang.ExceptionInInitializerError at org.ap原创 2022-04-16 12:10:57 · 2336 阅读 · 0 评论 -
scala.util.parsing.json.JSON.parseFull导致的spark任务无法完成的问题
在6台机器的CDH上处理1.5亿条数据时 ,发现经常出现大部分task完成后,只有几个task一直执行的情况,开始以为是数据发生了倾斜,经过加盐、repartition等操作都无法解决。且系统日志没有报错后来以为可能是hive写入过慢,尝试转成文件存储到hdfs再导入外部表,发现有时仍然存在超长时间执行,且文件根本没有写入的问题。最后分析sparkUI 当前任务执行的SQL状态,发现查询执行在某个map中应该已经完成的JSON解析位置,该位置利用scala.util.parsing.json.JSON.原创 2022-03-02 16:16:01 · 2652 阅读 · 1 评论 -
spark DataFrame 根据条件替换数据中的值,并保留非条件的原始值
otherwise子句不但能接收固定的值,还可以接收原来的列,保留列中原始的数据。如下:dataF.withColumn(“newColumnName”,when(col(“columnName”).isNull,0).otherwise(col(“columnName”))).show(false)原创 2022-02-16 16:53:30 · 2081 阅读 · 0 评论 -
spark sql select中传入可变参数列,并拆解动态Map列
spark sql select中传入可变参数列,并拆解动态数组列记录下对某个数组列进行拆解时,如何动态传入可变的参数问题原来的静态写入形式: val resultAllDF = resultDF.select( col("wCycle").getItem("starttime").as("starttime"), col("wCycle").getItem("endtime").as("endtime"), col("wCycle").getItem("level原创 2022-01-21 17:08:57 · 2038 阅读 · 0 评论 -
spark 读取clickhouse 非数值型字段并行分区设置
spark 读取clickhouse 非数值型字段并行分区设置spark jdbc读取clickhousespark jdbc读取clickhouse用spark采用jdbc读取clickhouse,mysql等数据库时,可以根据Long型设置分区字段,如下: def jdbc( url: String, table: String, columnName: String, # 根据该字段分区,需要为整形,比如id等 lowerBound: Long, # 分区的下界原创 2022-01-21 16:46:07 · 2635 阅读 · 0 评论 -
spark离线批处理写入kafka调优
采用老版本spark(1.6)在离线批处理环境下,将DataFrame快速写入kafka,通常可以查到的大部分都是针对Spark-Streaming进行Kafka写入的说明,但是在离线批处理环境下,也希望将批量计算的DataFrame中的数据直接写入到某个topic中,在spark2.0以上,可以直接采用spark-streaming的写入方式,只要用read 代替 resdStream 和用 write代替 writeStream 即可。例如,引入以下同步kafka的包<dependency原创 2020-09-10 12:03:29 · 3273 阅读 · 1 评论