pyspark随记

news2025/3/6 21:09:52

1、spark读取文件

#1.spark 读取csv
custid_df = spark.read.format("csv").\
    option("sep", ",").\
    option("header", True).\
    option("encoding", "utf-8").\
    schema("custid STRING").\
    load("/tmp/YB_1340802061021181116357983338500_20220701195704994.csv")
custid_df.createOrReplaceTempView("custid_rdd_table")
spark.spark_df("""
    insert into table dw_bu.dwd_base_groupid_info_outside_d partition(day)
    select 'custgroupid001',custid,'2022-08-02' from custid_rdd_table
""")
spark.catalog.dropTempView("custid_rdd_table")

2、获取hive表schemal

from pyspark.sql.types import StructType, StructField, StringType, IntegerType
df = spark.sql("DESCRIBE dw_bu.ods_base_data_d_info_m_d")
table_schamel = ''
table_schamel = ''
for row in df.collect():
    if "#" in row.col_name:
        break
    table_schamel = table_schamel + " " + row.col_name + " " + row.data_type + ' comment "' + row.comment + '",'
table_schamel = table_schamel[:-1]
print(table_schamel)

在这里插入图片描述

3、转换字段类型

from pyspark.sql.types import StructType, StructField, StringType, IntegerType
from pyspark.sql.functions import col, to_date,regexp_replace,when
df = spark.sql("select * from dw_bu.dws_dx_fraud_flag_d limit 1000")
df  = df.select("dt_m_1004","dt_m_1032","dt_m_1034")
df = df.withColumn("dt_m_1004", col("dt_m_1004").cast("string"))
df.show()
df.withColumn("dt_m_1004", regexp_replace(col("dt_m_1004"), "[^0-9\.]", "").cast("bigint")).show()

在这里插入图片描述

4、获取hive表对应spark索引

type_mapping = {
    "string": "keyword",
    "int": "long",
    "bigint": "long",
    "float": "float",
    "double": "float",
    "date": "date","format": "yyyy-MM-dd"
}
hive_table_info = spark.sql("DESCRIBE dw_bu.ods_base_data_d_info_m_d").collect()
column_mapping = {}
for row in hive_table_info:
    column_name = row.col_name
    data_type = row.data_type
    es_type = type_mapping.get(data_type, "keyword")
    column_mapping[column_name] = {"type": es_type}
print(column_mapping)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/762500.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SQL聚合函数和窗口函数

1.创建表格插入数据 DROP TABLE IF EXISTS 学生; create table 学生 (student_id INT PRIMARY KEY,gender TEXT,city TEXT,a_score FLOAT(2),b_score FLOAT(2),weight FLOAT(2) )engineinnodb;INSERT INTO 学生 VALUES (001,female,xiameng,90.6,110.87,50.34), (002,male,gua…

应用程序发生异常,6个方法轻松解决!

“用电脑的时候大家有没有遇到过应用程序异常的情况呀!刚刚突然遇到这种情况不知道应该怎么解决,请大家帮帮我吧!” 应用程序发生异常是在使用电脑时常见的问题之一。当应用程序无法正常运行或突然崩溃时,它会显示一个错误消息或弹…

港联证券-尾盘集合竞价拉升意味着什么意思?

在股票市场中,尾盘集合竞价是指每个交易日的最后几分钟,即下午14:57到3:00之间的交易。在这段时间内,所有股票的买卖都将以竞价的方式进行,最终价格以最高买价与最低卖价的平均值确定,成交量也将作为当日的收盘价和成交…

Qt音视频开发47-文字和图片水印(可存储到MP4中)

一、前言 近期花了两周时间闭门啃硬骨头,主要就解决三个问题(音视频同步存储和推流、图片水印并将水印信息存储到文件或者推流、rtsp推流),这三个问题困扰了很多年,以至于找遍了网络和翻遍ffplay代码以及ffmpeg示例的…

【ceph】存储池pg个数如何设置

存储池pg个数如何设置 参考官方文档说明:https://old.ceph.com/pgcalc/参数说明TargePGs per OSD:每个OSD的pg数OSD#存储池包含osd个数%Data存储池写入数据占总OSD容量百分比Size存储池冗余数

Selenium 报表自动化测试——黑盒测试篇

目录 前言: 背景 需求 分析 解决思路 解决方案 测试流程图 实现的功能 用例代码 两种测试方式 随机测试 指定测试 总结 前言: Selenium是一个广泛使用的自动化测试工具,用于Web应用程序的测试。它提供了一组功能强大的API&…

【CCF推荐】1区TOP刊,稳定检索29年,仅17天见刊,7月26即将截稿~

本期小编给大家推荐的是一本1区计算机科学类SCI. 该期刊为CCF推荐TOP刊,是计算机科学领域高质量期刊,隶属于世界前三出版社旗下。 发表与数字孪生、物联网、服务计算、智能计算、大数据、云计算、网络服务等方向相关或结合研究的高质量原创文章。 在…

关于SpringMVC的面试题

一、SpringMVC执行流程知道吗? 前后端分离开发环境下(接口开发、异步请求): ①用户端发送请求到前端控制器DispatcherServlet ②DispatcherServlet收到请求调用HandlerMapping ③HandlerMapping找到具体的处理器,生…

itheima苍穹外卖项目学习笔记--Day8: 用户下单 / 微信支付

Day8:用户下单、微信支付 Day8:用户下单、微信支付a. 用户下单b. 微信支付 Day8:用户下单、微信支付 a. 用户下单 创建OrderController并提供用户下单方法: /*** 用户下单* param ordersSubmitDTO* return*/ PostMapping("…

数字信号转模拟信号PWM脉宽调制信号输入隔离变送器1Hz~10KHz转0-5V/0-10V4-20mA

主要特性: >>精度等级:0.1级。产品出厂前已检验校正,用户可以直接使用 >>辅助电源:8-32V 宽范围供电 >>PWM脉宽调制信号输入: 1Hz~10KHz >>输出标准信号:0-5V/0-10V/1-5V,0-10mA/0-20mA/4-20mA等&…

基于ClickHouse解决活动海量数据问题 | 京东云技术团队

1、背景 魔笛活动平台要记录每个活动的用户行为数据,帮助客服、运营、产品、研发等快速处理客诉、解决线上问题并进行相关数据分析和报警。可以预见到需要存储和分析海量数据,预估至少几十亿甚至上百亿的数据量,所以需要选择一款能存储海量数…

Linux 6.5 内核提供对 USB4 v2 的初步支持

导读最新内核补丁显示,英特尔正在为 Linux 6.5 内核提供对 USB4 v2 的初步支持,并在其新的英特尔 Barlow Ridge 离散控制器上进行初步启用。 去年,USB4 v2.0 规范作为 USB4 标准的下一代版本发布。 USB4 v2 可通过 USB Type-C 线支持 80 Gbp…

配电室智能运维功能性如何?

很多物业单位在配电室运维上,现状普遍是人少、事多、责任大。有时电工需要同时负责多个高低压配电室值班和设备维修,现有人员平时忙于应付各种设备设施的报修处理,配电室巡检和维护工作常常流于形式。另外,电力运行维护专业性很强…

SAP BOM中的技术类型简介

本文介绍一下BOM中技术类型 1、简单BOM 2、派生BOM 3、多重BOM 由于BOM的技术类型系统会自动设置所以大家基本感觉不到它的存在。基本上很少有同学会关注这个地方。 我们先从简单BOM开始,基本每个项目实施都会用到,就是一个物料具有多个组件清单 这种情…

【软件测试】Git 详细实战-打标签,一篇通关...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 Git 打标签 一般会…

【正点原子STM32连载】 第六十章 USB读卡器实验摘自【正点原子】STM32F103 战舰开发指南V1.2

1)实验平台:正点原子stm32f103战舰开发板V4 2)平台购买地址:https://detail.tmall.com/item.htm?id609294757420 3)全套实验源码手册视频下载地址: http://www.openedv.com/thread-340252-1-1.html# 第六…

Qt开发关于3288,3128,3399程序升级方法

一、自动更新程序流程 加载本地配置文件获取获取保存的版本号 每次启动程序,首先从服务器请求最新的版本信息文件(包括版本号,压缩包下载地址,更新时间,更新说明) 解压下载的文件获取服务器版本号&#xff…

【状态估计】基于UKF法、AUKF法的电力系统三相状态估计研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

比较MQX、FreeRTOS和ucOS的优缺点

MQX, FreeRTOS和ucOS(也称为μC/OS)都是嵌入式实时操作系统(RTOS)中的代表性选择,它们各自有各自的优点和缺点。以下是它们的一些特点: 我这里刚好有嵌入式、单片机、plc的资料需要可以私我或在评论区扣个…

避免IDEA新建项目自动纳入git管理

引言 今天遇到了个很头疼的问题:我在 gitee 上创建了新的远程仓库 test1,然后通过 IDEA 拉取到了本地。随后我打算在该目录下新建新的 module,用来做不同的事情。比如这里的 mybatis 我打算用于测试 mybatis 相关的一些类、方法等。但问题是…