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 ̄)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/weixin_42487460/article/details/109961234
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/287496

相关文章

MySQL批量替换数据库字符集的实用方法(附详细代码)

《MySQL批量替换数据库字符集的实用方法(附详细代码)》当需要修改数据库编码和字符集时,通常需要对其下属的所有表及表中所有字段进行修改,下面:本文主要介绍MySQL批量替换数据库字符集的实用方法... 目录前言为什么要批量修改字符集?整体脚本脚本逻辑解析1. 设置目标参数2. 生成修改表默认字符集的语句3

Oracle Scheduler任务故障诊断方法实战指南

《OracleScheduler任务故障诊断方法实战指南》Oracle数据库作为企业级应用中最常用的关系型数据库管理系统之一,偶尔会遇到各种故障和问题,:本文主要介绍OracleSchedul... 目录前言一、故障场景:当定时任务突然“消失”二、基础环境诊断:搭建“全局视角”1. 数据库实例与PDB状态2

Java 单元测试之Mockito 模拟静态方法与私有方法最佳实践

《Java单元测试之Mockito模拟静态方法与私有方法最佳实践》本文将深入探讨如何使用Mockito来模拟静态方法和私有方法,结合大量实战代码示例,带你突破传统单元测试的边界,写出更彻底、更独立... 目录Mockito 简介:为什么选择它?环境准备模拟静态方法:打破“不可变”的枷锁传统困境解法一:使用M

使用Go调用第三方API的方法详解

《使用Go调用第三方API的方法详解》在现代应用开发中,调用第三方API是非常常见的场景,比如获取天气预报、翻译文本、发送短信等,Go作为一门高效并发的编程语言,拥有强大的标准库和丰富的第三方库,可以... 目录引言一、准备工作二、案例1:调用天气查询 API1. 注册并获取 API Key2. 代码实现3

React 记忆缓存的三种方法实现

《React记忆缓存的三种方法实现》本文主要介绍了React记忆缓存的三种方法实现,包含React.memo、useMemo、useCallback,用于避免不必要的组件重渲染和计算,感兴趣的可以... 目录1. React.memo2. useMemo3. useCallback使用场景与注意事项在 Re

Git打标签从本地创建到远端推送的详细流程

《Git打标签从本地创建到远端推送的详细流程》在软件开发中,Git标签(Tag)是为发布版本、标记里程碑量身定制的“快照锚点”,它能永久记录项目历史中的关键节点,然而,仅创建本地标签往往不够,如何将其... 目录一、标签的两种“形态”二、本地创建与查看1. 打附注标http://www.chinasem.cn

Vue3 如何通过json配置生成查询表单

《Vue3如何通过json配置生成查询表单》本文给大家介绍Vue3如何通过json配置生成查询表单,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录功能实现背景项目代码案例功能实现背景通过vue3实现后台管理项目一定含有表格功能,通常离不开表单

在Android中使用WebView在线查看PDF文件的方法示例

《在Android中使用WebView在线查看PDF文件的方法示例》在Android应用开发中,有时我们需要在客户端展示PDF文件,以便用户可以阅读或交互,:本文主要介绍在Android中使用We... 目录简介:1. WebView组件介绍2. 在androidManifest.XML中添加Interne

Java中字符编码问题的解决方法详解

《Java中字符编码问题的解决方法详解》在日常Java开发中,字符编码问题是一个非常常见却又特别容易踩坑的地方,这篇文章就带你一步一步看清楚字符编码的来龙去脉,并结合可运行的代码,看看如何在Java项... 目录前言背景:为什么会出现编码问题常见场景分析控制台输出乱码文件读写乱码数据库存取乱码解决方案统一使

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性