当前位置: 首页 > news >正文

Spark处理方法_提取文件名中的时间

需求描述

        通过读取目录下的类似文件的datapath路径的文件名及文件内容,需要将读取的每一个文件的文件名日期解析出来,并作为读取当前文件内容递归读取当前文件一个df列,列名为“时间”;后面就是读一个文件,解析一下时间,将时间添加到所读文件的dataframe中,相当于给每一个读的文件内容添加了当前读取文件解析出来的时间列,以此递归循环。读取每一个文件后都要加上一列此文件解析出来的时间,形式如下

  Reading file: hdfs://master.test.com:8020/data/测试文件/_L_20231025095119.txtReading file: hdfs://master.test.com:8020/data/测试文件/_L_20231026095119.txtReading file: hdfs://master.test.com:8020/data/测试文件/_L_20231027095119.txt


内容形式如下

  文件名:L_20231025095119.txt文件内容:id,imsi,lon,lat......文件名:L_20231026095119.txt文件内容:id,imsi,lon,lat......文件名:L_20231027095119.txt文件内容:id,imsi,lon,lat......我要的文件内容输出形式为id,imsi,lon,lat,20231025095119...id,imsi,lon,lat,20231026095119...id,imsi,lon,lat,20231027095119......

代码片段:

...
...
//打印读取目录下的文件名
println("文件datapath路径")
if (dataPath.isEmpty) {println("No files to read.")
} else {for (path <- dataPath) {println(s"Reading file: $path")}
}
// 解析时间字段
// 提取文件名中的时间部分,格式为:"_L_20231111095119.txt" 中的 "20231111095119"
// 由于文件名是按目录读取的,因此要变成字符串形式并以逗号隔开
val filePath = dataPath.mkString(",")
val fileName = filePath.split("/").last.stripSuffix(".csv")
val timeStr = fileName.split("_").last
val year = timeStr.substring(0, 4)
val month = timeStr.substring(4, 6)
val day = timeStr.substring(6, 8)
val hour = timeStr.substring(8, 10)
val minute = timeStr.substring(10, 12)
val second = timeStr.substring(12, 14)
val time = s"$year-$month-$day $hour:$minute:$second"
println(time)
// 输出时间类似:2023-03-01 09:51:19
...
...
val rddAll = if(dataPath.isEmpty){sc.emptyRDD[(LongWritable,Text)]
} else {sc.newAPIHadoopRDD(jobConf,classOf[CombineTextInputFormat],classOf[LongWritable],classOf[Text])}val firstLine = {if(rddAll.take(1).length == 0){null} else {val firstLineTemp = rddAll.first()._2getAfterSplitArray(delimiter,new String(firstLineTemp.getBytes,0,firstLineTemp.getLength,encoding))}
}
...
...
val outDF = sqlc.createDataFrame(outRDD,schema)
//2修改
val outDF1 = outDF.withColumn("时间", lit(time))
outDF1.show()

相关文章:

Spark处理方法_提取文件名中的时间

需求描述 通过读取目录下的类似文件的datapath路径的文件名及文件内容&#xff0c;需要将读取的每一个文件的文件名日期解析出来&#xff0c;并作为读取当前文件内容递归读取当前文件一个df列&#xff0c;列名为“时间”&#xff1b;后面就是读一个文件&#xff0c;解析一下时间…...

技术分享 | 测试平台开发-前端开发之数据展示与分析

测试平台的数据展示与分析&#xff0c;我们主要使用开源工具ECharts来进行数据的展示与分析。 ECharts简介与安装 ECharts是一款基于JavaScript的数据可视化图表库&#xff0c;提供直观&#xff0c;生动&#xff0c;可交互&#xff0c;可个性化定制的数据可视化图表&#xff…...

NZ系列工具NZ06:VBA创建PDF文件说明

我的教程一共九套及VBA汉英手册一部&#xff0c;分为初级、中级、高级三大部分。是对VBA的系统讲解&#xff0c;从简单的入门&#xff0c;到数据库&#xff0c;到字典&#xff0c;到高级的网抓及类的应用。大家在学习的过程中可能会存在困惑&#xff0c;这么多知识点该如何组织…...

redis-cli 连接 sentinel架构的redis服务

之前一直用gui连接redis&#xff0c;今天在服务器连接发现redis-cli无法直接连接到redis-sentinel服务器&#xff0c;研究后发现多了几个步骤&#xff0c;如下&#xff1a; 假设有三个redis节点127.0.0.1,127.0.0.2,127.0.0.3,端口为9696先连接任意一个节点: redis-cli -h 12…...

使用github copilot

现在的大模型的应用太广了&#xff0c;作为程序员我们当然野可以借助大模型来帮我们敲代码。 下面是自己注册使用github copilot的过程。 一、注册github copilot 1. 需要拥有github账号 &#xff0c;登录github之后&#xff0c;点右侧自己的头像位置&#xff0c;下面会出现…...

1438 绝对差不超过限制的最长连续子数组(单调队列)

题目 绝对差不超过限制的最长连续子数组 给你一个整数数组 nums &#xff0c;和一个表示限制的整数 limit&#xff0c;请你返回最长连续子数组的长度&#xff0c;该子数组中的任意两个元素之间的绝对差必须小于或者等于 limit 。 如果不存在满足条件的子数组&#xff0c;则返…...

OpenCV入门9:图像增强和图像滤波

图像增强是一种通过对图像进行处理以改善其质量、对比度、清晰度等方面的技术。在OpenCV中&#xff0c;有多种图像增强的方法和函数可用。下面简要介绍一些常见的图像增强方法及其在OpenCV中的实现方式。 直方图均衡化&#xff08;Histogram Equalization&#xff09;&#xff…...

Pycharm常用快捷键和替换正则表达式

原生快捷键的使用&#xff1a; 1.CtrlF&#xff1a;查找 2.CtrlZ&#xff1a;返回上一步 3.Alt 鼠标左键选择&#xff1a;多行同时编辑&#xff08;上、下、左、右键能够移动光标&#xff09; 按住Ctrl,左键点击&#xff0c;定位光标 编辑过程 URL常用的替换正则表达式&am…...

C#,数值计算——函数计算,Epsalg的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { /// <summary> /// Convergence acceleration of a sequence by the algorithm.Initialize by /// calling the constructor with arguments nmax, an upper bound on the /// number of term…...

Delphi 12 重返雅典 (RAD Studio 12)

RAD Studio 12 的新功能&#xff1a; 以最新的平台版本为目标&#xff01; RAD Studio 12 提供对 iOS 17&#xff08;仅适用于 Delphi&#xff09;、Android 14 和 macOS Sonoma 的官方支持。RAD Studio 12 还支持 Ubuntu 22 LTS 和 Windows Server 2022。 Delphi 源代码的多…...

手写链表C++

目录 一、链表基本概念以及注意事项 1.1 构造函数与析构函数 1.2 插入元素 1.3 重载运算符 二、小结 一、链表基本概念以及注意事项 在工作中&#xff0c;链表是一种常见的数据结构&#xff0c;可以用于解决很多实际问题。在学习中&#xff0c;掌握链表可以提高编程能力和…...

为什么我一直是机器视觉调机仔,为什么一定要学一门高级语言编程?

​ 为什么我是机器视觉调机仔&#xff0c;为什么一定要学一门高级语言编程&#xff0c;以后好不好就业&#xff0c;待遇高不高&#xff0c;都是跟这项技术没关系&#xff0c;是跟这个技术背后的行业发展有关系。 你可以选择离机器视觉行业&#xff0c;也可以选择与高级语言相关…...

MongoDB单实例安装(Linux)

实战环境 centos7系统、64位 iptables和selinux关闭 mongodb简介 mongodb是个非关系型数据库&#xff0c;但操作跟关系型数据最类似。mysql是关系型数据库 mongodb是面向文档存储的非关系型数据库&#xff0c;数据以json的格式进行存储 mongodb可用来永久存储&#xff0c;也可用…...

各种业务场景调用API代理的API接口教程(附带电商平台api接口商品详情数据接入示例)

API代理的API接口在各种业务场景中具有广泛的应用&#xff0c;本文将介绍哪些业务场景可以使用API代理的API接口&#xff0c;并提供详细的调用教程和代码演示&#xff0c;同时&#xff0c;我们还将讨论在不同场景下使用API代理的API接口所带来的好处。 哪些业务场景可以使用API…...

React-hooks有哪些 包括用法是什么?

React Hooks是React 16.8版本引入的功能&#xff0c;它允许你在函数组件中使用状态&#xff08;state&#xff09;和其他React特性&#xff0c;而无需编写类组件。以下是一些常用的React Hooks及其用法&#xff1a; 1&#xff1a;useState&#xff1a;用于在函数组件中添加状态…...

根据DataFrame指定的列该列中如果有n个不同元素则将其转化为n行显示explode()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 根据DataFrame指定的列 该列中如果有n个不同元素 则将其转化为n行显示 explode() 选择题 以下代码两次输出结果分别为几行&#xff1f; import pandas as pd df pd.DataFrame({种类:[蔬菜,水…...

《持续交付:发布可靠软件的系统方法》- 读书笔记(十三)

持续交付&#xff1a;发布可靠软件的系统方法&#xff08;十三&#xff09; 第 13 章 组件和依赖管理13.1 引言13.2 保持应用程序可发布13.2.1 将新功能隐蔽起来&#xff0c;直到它完成为止13.2.2 所有修改都是增量式的13.2.3 通过抽象来模拟分支 13.3 依赖13.3.1 依赖地狱13.3…...

【Copilot】登录报错 Extension activation failed: “No auth flow succeeded.“(VSCode)

问题描述 Visual Studio Code 登录 GitHub Copilot 插件报错。 在浏览器中成功授权 GitHub 账户&#xff0c;返回 VSCode 后仍然报错。 [ERROR] [default] [2023-11-06T12:34:56.185Z] Extension activation failed: "No auth flow succeeded."原因分析 网络环境问…...

uboot - 驱动开发 - dw watchdog

说明 公司SOC使用的watchdog模块是新思&#xff08;Synopsys&#xff09;的IP。 需求 用户有时会在uboot/kernel中做些开发&#xff0c;新增一些功能&#xff08;OTA升级等&#xff09;&#xff0c;可能会出现uboot/kernel启动崩溃甚至设备死机等问题&#xff0c;需要在uboo…...

【系统架构设计】架构核心知识: 2.5 软件测试、系统转换计划、系统维护

目录 一 软件测试 1 静态测试 2 动态测试 3 测试 4 集成测试的策略 二...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解&#xff1a;由来、作用与意义**一、知识点核心内容****二、知识点的由来&#xff1a;从生活实践到数学抽象****三、知识的作用&#xff1a;解决实际问题的工具****四、学习的意义&#xff1a;培养核心素养…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

C# SqlSugar:依赖注入与仓储模式实践

C# SqlSugar&#xff1a;依赖注入与仓储模式实践 在 C# 的应用开发中&#xff0c;数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护&#xff0c;许多开发者会选择成熟的 ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;SqlSugar 就是其中备受…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...