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

Java常用API之Encoders类解读

写在开头:本文用于作者学习Java常用API

我将官方文档中Encoders类中所有API全测了一遍并打印了结果,日拱一卒,常看常新

在Spark中,Encoders类提供了一些静态方法用于创建不同数据类型的编码器。

首先,我遇到这样一个问题,就是:

Encoder<String> string = org.apache.spark.sql.Encoders.STRING();标黄的这个包必须得加,如果我不加,自动导包导得是 import org.apache.spark.network.protocol.Encoders;这个包

但是我需要org.apache.spark.sql.Encoders这个包的这个类,所以加了完整的类路径。下面是Encoders的API介绍

1. Encoders.STRING()

// 创建一个String类型的编码器

@Test// 创建一个String类型的编码器// 1. Encoders.STRING()public void test_STRING(){Encoder<String> string = org.apache.spark.sql.Encoders.STRING();System.out.println(string);//class[value[0]: string]System.out.println(string.schema());//StructType(StructField(value,StringType,true))}

2. Encoders.INT()

// 创建一个Integer类型的编码器

@Test// 创建一个Integer类型的编码器// 2. Encoders.INT()public void test_INT(){Encoder<Integer> anInt = org.apache.spark.sql.Encoders.INT();System.out.println(anInt);//class[value[0]: int]}


3. Encoders.bean(MyClass.class)

// 创建一个自定义类的编码器,其中MyClass是自定义类的类名

@Test// 创建一个自定义类的编码器,其中MyClass是自定义类的类名// 3. Encoders.bean(MyClass.class)public void test_bean(){Encoder<MyClass> myClassEncoder = org.apache.spark.sql.Encoders.bean(MyClass.class);System.out.println(myClassEncoder.clsTag());//com.atguigu.sparksql.MyClassSystem.out.println(myClassEncoder.schema());//StructType()}

4. Encoders.kryo(MyClass.class)

// 创建一个使用Kryo序列化的自定义类的编码器

@Test// 创建一个使用Kryo序列化的自定义类的编码器// 4. Encoders.kryo(MyClass.class)public void test_kryo(){Encoder<MyClass> kryo = org.apache.spark.sql.Encoders.kryo(MyClass.class);System.out.println(kryo);//class[value[0]: binary]System.out.println(kryo.schema());//StructType(StructField(value,BinaryType,true))System.out.println(kryo.clsTag());//com.atguigu.sparksql.MyClass}

5. Encoders.tuple(Encoders.INT(), Encoders.STRING())

// 创建一个元组编码器,用于将多个数据类型组合成一个元组

@Test// 创建一个元组编码器,用于将多个数据类型组合成一个元组// 5. Encoders.tuple(Encoders.INT(), Encoders.STRING())public void test_tuple(){Encoder<Tuple2<Integer, String>> tupleEncoder = org.apache.spark.sql.Encoders.tuple(org.apache.spark.sql.Encoders.INT(), org.apache.spark.sql.Encoders.STRING());System.out.println(tupleEncoder);//class[_1[0]: int, _2[0]: string]System.out.println(tupleEncoder.clsTag());//scala.Tuple2System.out.println(tupleEncoder.schema());//StructType(StructField(_1,IntegerType,true),StructField(_2,StringType,true))}

http://www.lryc.cn/news/332789.html

相关文章:

  • java中大型医院HIS系统源码 Angular+Nginx+SpringBoot云HIS运维平台源码
  • windows部署Jenkins并远程部署tomcat
  • 设计模式|责任链模式(Chain of Responsibility Pattern)
  • 文件服务器之二:SAMBA服务器
  • 20.安全性测试与评估
  • 阿里巴巴实习面经
  • javaweb学习(day11-监听器Listener过滤器Filter)
  • 教你快速认识Java中的抽象类和接口
  • Linux第5课 Linux目录介绍
  • GitHub要求2FA?不慌,有它(神锁离线版)帮你!
  • C语言第四十弹---预处理(下)
  • SYS-2722音频分析仪SYS2722
  • 下载页面上的视频
  • 静态路由协议实验综合实验
  • qt MVC软件设计模式
  • 代码随想录刷题随记15-二叉树回溯
  • 基于SpringBoot Vue养老院管理
  • 盘点编程方法论中的一些思想
  • 通过电机转速计算主轴旋转单圈所需时间(CODESYS ST代码)
  • 多线程的入门(二)线程实现与初步使用
  • 数据结构(初阶)第二节:顺序表
  • 鸿蒙OS元服务开发:【(Stage模型)设置应用主窗口】
  • lua学习笔记6(经典问题输出99乘法表)
  • 物联网行业中,我们如何选择数据库?
  • openstack云计算(一)————openstack安装教程,创建空白虚拟机,虚拟机的环境准备
  • Linux存储的基本管理
  • Python yield解析:深入理解生成器的魔力
  • 【Linux】GCCGDB
  • InternLM2-Chat-1.8B 模型测试
  • Flutter 关键字