spark读文件生成df元素长度超过22不想创建schema偷懒方法 可真够懒得 哎φ(* ̄0 ̄)

本文主要是介绍spark读文件生成df元素长度超过22不想创建schema偷懒方法 可真够懒得 哎φ(* ̄0 ̄),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题描述:

当我们使用spark读取文件时用如下方式可以简便读取并快速形成df进行相关操作
在这里插入图片描述
当读取其他类文本时如textFile通常想到sc.textFile("")使用map进行分割,创建schema表结构;偷懒时一般会将列元素放到元组当中如下:

    val dnbgx_df = sc.textFile("hdfs://jzy1:9000/workdata/clean/jlddnbgx_25").map(x=>{val all = x.split("\t")(all(0),all(1))}).toDF("all","timestamp").dropDuplicates("all","timestamp")

但是scala元组最大长度为22,生产环境很多时候元素都会超过22,这时候不得不去创建schema

解决方案

采用以下方法,或者创建样例类case class的形式

val spark = SparkSession.builder().appName("clean02").master("local[*]").getOrCreate()val sc = spark.sparkContextimport spark.implicits._
spark.read.textFile("hdfs://jzy1:9000/workdata/clean/rdj/24").map(_.split("\t")).select($"value"(0).cast(StringType).as("YXDNBBS"),$"value"(1).cast(StringType).as("SJSJ"),$"value"(2).cast(StringType).as("QZJSSJ"),$"value"(3).cast(StringType).as("ZXYGZ"),$"value"(4).cast(StringType).as("ZXYGF"),$"value"(5).cast(StringType).as("ZXYGP"),$"value"(6).cast(StringType).as("ZXYGG"),$"value"(7).cast(StringType).as("ZXYGJ"),$"value"(8).cast(StringType).as("ZXWGZ"),$"value"(9).cast(StringType).as("ZXWGF"),$"value"(10).cast(StringType).as("ZXWGP"),$"value"(11).cast(StringType).as("ZXWGG"),$"value"(12).cast(StringType).as("ZXWGJ"),$"value"(13).cast(StringType).as("FXYGZ"),$"value"(14).cast(StringType).as("FXYGF"),$"value"(15).cast(StringType).as("FXYGP"),$"value"(16).cast(StringType).as("FXYGG"),$"value"(17).cast(StringType).as("FXYGJ"),$"value"(18).cast(StringType).as("FXWGZ"),$"value"(19).cast(StringType).as("FXWGF"),$"value"(20).cast(StringType).as("FXWGP"),$"value"(21).cast(StringType).as("FXWGG"),$"value"(22).cast(StringType).as("FXWGJ"),$"value"(23).cast(StringType).as("YXXWGZ"),$"value"(24).cast(StringType).as("EXXWGZ"),$"value"(25).cast(StringType).as("SAXXWGZ"),$"value"(26).cast(StringType).as("SIXXWGZ"),$"value"(27).cast(StringType).as("SJLYDM"),$"value"(28).cast(StringType).as("timestamp")).show(20)

输出样式:
在这里插入图片描述

这篇关于spark读文件生成df元素长度超过22不想创建schema偷懒方法 可真够懒得 哎φ(* ̄0 ̄)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/287496

相关文章

解读为什么@Autowired在属性上被警告,在setter方法上不被警告问题

《解读为什么@Autowired在属性上被警告,在setter方法上不被警告问题》在Spring开发中,@Autowired注解常用于实现依赖注入,它可以应用于类的属性、构造器或setter方法上,然... 目录1. 为什么 @Autowired 在属性上被警告?1.1 隐式依赖注入1.2 IDE 的警告:

SpringBoot快速接入OpenAI大模型的方法(JDK8)

《SpringBoot快速接入OpenAI大模型的方法(JDK8)》本文介绍了如何使用AI4J快速接入OpenAI大模型,并展示了如何实现流式与非流式的输出,以及对函数调用的使用,AI4J支持JDK8... 目录使用AI4J快速接入OpenAI大模型介绍AI4J-github快速使用创建SpringBoot

使用Python创建一个能够筛选文件的PDF合并工具

《使用Python创建一个能够筛选文件的PDF合并工具》这篇文章主要为大家详细介绍了如何使用Python创建一个能够筛选文件的PDF合并工具,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录背景主要功能全部代码代码解析1. 初始化 wx.Frame 窗口2. 创建工具栏3. 创建布局和界面控件4

Java实战之利用POI生成Excel图表

《Java实战之利用POI生成Excel图表》ApachePOI是Java生态中处理Office文档的核心工具,这篇文章主要为大家详细介绍了如何在Excel中创建折线图,柱状图,饼图等常见图表,需要的... 目录一、环境配置与依赖管理二、数据源准备与工作表构建三、图表生成核心步骤1. 折线图(Line Ch

Android开发中gradle下载缓慢的问题级解决方法

《Android开发中gradle下载缓慢的问题级解决方法》本文介绍了解决Android开发中Gradle下载缓慢问题的几种方法,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、网络环境优化二、Gradle版本与配置优化三、其他优化措施针对android开发中Gradle下载缓慢的问

python 3.8 的anaconda下载方法

《python3.8的anaconda下载方法》本文详细介绍了如何下载和安装带有Python3.8的Anaconda发行版,包括Anaconda简介、下载步骤、安装指南以及验证安装结果,此外,还介... 目录python3.8 版本的 Anaconda 下载与安装指南一、Anaconda 简介二、下载 An

Java中将异步调用转为同步的五种实现方法

《Java中将异步调用转为同步的五种实现方法》本文介绍了将异步调用转为同步阻塞模式的五种方法:wait/notify、ReentrantLock+Condition、Future、CountDownL... 目录异步与同步的核心区别方法一:使用wait/notify + synchronized代码示例关键

Java中对象的创建和销毁过程详析

《Java中对象的创建和销毁过程详析》:本文主要介绍Java中对象的创建和销毁过程,对象的创建过程包括类加载检查、内存分配、初始化零值内存、设置对象头和执行init方法,对象的销毁过程由垃圾回收机... 目录前言对象的创建过程1. 类加载检查2China编程. 分配内存3. 初始化零值4. 设置对象头5. 执行

Python使用Pandas对比两列数据取最大值的五种方法

《Python使用Pandas对比两列数据取最大值的五种方法》本文主要介绍使用Pandas对比两列数据取最大值的五种方法,包括使用max方法、apply方法结合lambda函数、函数、clip方法、w... 目录引言一、使用max方法二、使用apply方法结合lambda函数三、使用np.maximum函数

Qt 中集成mqtt协议的使用方法

《Qt中集成mqtt协议的使用方法》文章介绍了如何在工程中引入qmqtt库,并通过声明一个单例类来暴露订阅到的主题数据,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一,引入qmqtt 库二,使用一,引入qmqtt 库我是将整个头文件/源文件都添加到了工程中进行编译,这样 跨平台