Spark通过三种方式创建DataFrame

news2024/11/18 21:35:02

通过toDF方法创建DataFrame

通过toDF的方法创建

  • 集合rdd中元素类型是样例类的时候,转成DataFrame之后列名默认是属性名
  • 集合rdd中元素类型是元组的时候,转成DataFrame之后列名默认就是_N
  • 集合rdd中元素类型是元组/样例类的时候,转成DataFrame(toDF(“ID”,“NAME”,“SEX”,“AGE6”))可以自定义列名
import org.apache.spark.sql.{DataFrame, SparkSession}
import org.junit.Test


case class Person(id:Int,name:String,sex:String,age:Int)
class TestScala {

  val spark = SparkSession
    .builder()
    .appName("test")
    .master("local[4]")
    .getOrCreate()
    import spark.implicits._

  /**
   * 通过toDF的方法创建
   *    集合rdd中元素类型是样例类的时候,转成DataFrame之后列名默认是属性名
   *    集合rdd中元素类型是元组的时候,转成DataFrame之后列名默认就是_N
   */
  @Test
  def createDataFrameByToDF():Unit={
    //TODO 样例类是属性名
    val list = List(Person(1,"zhangsan","man",10),Person(2,"zhang2","woman",66),Person(3,"zhang3","man",70),Person(4,"zhang4","man",22))
    //需要隐士转换
    val df:DataFrame = list.toDF()
    df.show()
    //TODO 元祖是_N
    val list2 = List((1,"zhangsan","man",10),(1,"zhang2","woman",66),(1,"zhang3","man",70),(1,"zhang4","man",22))
    //需要隐士转换
    val df1:DataFrame = list2.toDF()
    df1.show()
    //TODO 自定义属性名
    val list3 = List((1,"zhangsan","man",10),(1,"zhang2","woman",66),(1,"zhang3","man",70),(1,"zhang4","man",22))
    //需要隐士转换
    val df2:DataFrame = list3.toDF("ID","NAME","SEX","AGE6")
    df2.show()
  }
  
  
}

结果
在这里插入图片描述

通过读取文件创建DataFrame

json数据

{"age":20,"name":"qiaofeng"}
{"age":19,"name":"xuzhu"}
{"age":18,"name":"duanyu"}
  /**
   * 通过读取文件创建
   */
  @Test
  def createDataFrame():Unit={
    val df = spark.read.json("src/main/resources/user.json")
    df.show()
  }

通过createDataFrame方法创建DF

  @Test
  def createDataFrameByMethod():Unit={
    val fields = Array(StructField("id",IntegerType),StructField("name",StringType),StructField("sex",StringType),StructField("age",IntegerType))
    val schema = StructType(fields)
    val rdd = spark.sparkContext.parallelize(List(Row(1, "zhangsan", "man", 10), Row(2, "zhang2", "woman", 66), Row(3, "zhang3", "man", 70), Row(4, "zhang4", "man", 22)))
    val df = spark.createDataFrame(rdd, schema)
    df.show()
  }

在这里插入图片描述

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

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

相关文章

LLM prompt提示工程调试方法经验技巧汇总

现在接到一个LLM模型任务,第一反应就是能不能通过精调prompt来实现,因为使用prompt不需要训练模型,只需输入指令就可以实现和LLM的交互。按照以往经验,不同的prompt对模型输出影响非常大,如果能构造一个好的prompt&…

工业品电商,新的隐形冠军藏不住了?

【潮汐商业评论/原创】 “时代真的变了。”自打从淘宝买了一批配件后,工厂老板李瓦就经常感慨。 李瓦经营着一家专门生产机器零部件的工厂,日常经常要采购传送带、螺丝、螺母等材料,过去他主要通过线下的方式进货。但最近朋友圈里一段淘宝工…

2023.11.15 hive sql之函数标准,字符串,日期,数学函数

目录 一.函数分类标准 二.查看官方函数,与简单演示 三.3种类型函数演示 四.字符串函数 1.常见字符串函数 2.索引函数 解析函数 五.日期函数 1.获取当前时间 2.获取日期相关 3.周,季度等计算 4.时间戳 六.数学函数 一.函数分类标准 目前hive三大标准 UDF:&#xff08…

社区论坛小程序源码系统,功能齐全,页面简洁,前端+后端+完整部署教程

现如今,社区论坛已经成为人们交流思想,分享经验,获取信息的重要平台。近年来,小程序的出现更是改变了传统的网站建设方式,让用户体验更加便捷,高效。今天源码小编来和大家分享一款社区论坛小程序源码系统&a…

基于SSM的OA办公管理系统的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

exce常用

一、冻结 同时冻结行和列 打开一个Excel表格,点击选择需要冻结的行和列交接处对应的单元格(例如:需要同时冻结1、2行和A、B列,则选中行列交接对应的C3单元格)), 即下一行 和下一列的交接点。 …

使用grad-cam对ViT的输出进行可视化

使用grad-cam对ViT的输出进行可视化 文章目录 使用grad-cam对ViT的输出进行可视化前言原理使用代码Pytorch-grad-cam库的更多方法在MMpretrain中使用示例总结 前言 Vision Transformer (ViT) 作为现在CV中的主流backbone,它可以在图像分类任务上达到与卷积神经网络…

mysql数据库超过最大连接数

mysql 超过数据库最大连接数解决办法 1、报错信息 首先无论是navicat 执行sql还是 用idea启动多的服务都会有如下报错信息: 2、解决办法 2.1命令方式修改 这种方法是由其他资料提供的。这种修改方式是临时的,如果mysql服务重启设置就会还原&#xff…

弱类型和强类型自定义UDAF函数

目录 使用自带的avg函数弱类型自定义UDAF函数(AVG)强类型自定义UDAF函数(AVG) 弱类型:3.x过期 2.x有 强类型:3.x 2.x没有 使用自带的avg函数 import org.apache.spark.rdd.RDD import org.apache.spark.sql.{DataFrame, SparkSession}object UserDefine…

双极膜电渗析设备

#双极膜电渗析设备 双极膜(bipolar membrance,简称BPM)是一种新型的离子交换复合膜,它通常由阳离子交换层(N型膜)、界面亲水层(催化层)和阴离子交换膜(P型膜)…

【计算思维】少儿编程蓝桥杯青少组计算思维题考试真题及解析C

【科技素养】少儿编程蓝桥杯青少组计算思维题考试真题及解析 1.天平的左右两端分别放有一些砝码,如下图所示,右边的砝码不变,从左边最多拿走几个砝码,可以使天平左右两边平衡: A、1 B、2 C、3 D、4 2.把下面的图形…

sqli-labs(Less-3)

1. 通过构造id1’ 和id1’) 和id1’)–确定存在注入 可知原始url为 id(‘1’) 2.使用order by 语句猜字段数 http://127.0.0.1/sqlilabs/Less-3/?id1) order by 4 -- http://127.0.0.1/sqlilabs/Less-3/?id1) order by 3 --3. 使用联合查询union select http://127.0.0.1…

Window MongoDB安装

三种NOSQL的一种,Redis MongoDB ES 应用场景: 1.社交场景:使用Mongodb存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人,地点等功能 2.游戏场景:使用Mongodb存储游戏用户信息,用户的装备,积分等直接以内嵌文档的形式存储,方便查询,高效率存储和访问…

IDEA创建JavaFX项目

1、New -> Project 2、选择JavaFX 配置项目名,包名,lib包管理工具,JDK版本(注,JDK版本最低需要11) 3、选择lib包 根据自己需求选择 lib包介绍 BootstrapFX:BootstrapFX 是一个为 JavaFX 提…

怎样正确选择等保测评机构开展等保测评工作?

随着大家对网络安全的重视,越来越多的企业需要做等保测评了。很多小伙伴想知道怎样正确选择等保测评机构开展等保测评工作?这里就给大家简单说说。 怎样正确选择等保测评机构开展等保测评工作? 【回答】:正确选择等保测评机构开展…

Java魔法解密:HashMap底层机制大揭秘

文章目录 一、 源码深度解析1.1 窥探Java集合框架中的设计思想1.2 逐行解读HashMap的源代码1.2.1 类信息1.2.2 常量属性1.2.3 变量属性1.2.4 节点信息1.2.5 构造方法1.2.6 put方法1.2.6.1 putVal方法1.2.6.2 putTreeVal方法1.2.6.3 tieBreakOrder方法1.2.6.4 treeifyBin方法1.2…

【联邦学习+区块链】TORR: A Lightweight Blockchain for Decentralized Federated Learning

文章目录 I.CONTRIBUTIONII. ASSUMPTIONS AND THREAT MODELA. AssumptionsB. Threat Model III. SYSTEM DESIGNA. Design OverviewB. Block DesignC. InitializationD. Role SelectionE. Storage ProtocolF. Aggregation ProtocolG. Proof of ReliabilityH. Blockchain Consens…

Hive的安装部署

目录 1.修改hadoop相关参数2.Hive解压安装3.Hive元数据的三种部署方式3.1 元数据库之Derby3.2 元数据库之Mysql3.3 元数据之MetaStore Server 4.hive的两种访问方式4.1 命令行的方式4.2 HiveServer2模式 1.修改hadoop相关参数 1)修改core-site.xml [roothadoop102…

Android 12 intent-filter添加android:exported后任然报错解决方法

Android 12 或更高版本为目标平台,且包含使用intent-filter 过滤器的 activity、service或receiver,您必须为这些应用组件显式声明 android:exported 属性。 常规操作 查看AndroidManifest.xml文件,搜索intent-filter,然后添加好…