使用Java中的Records创建不可变数据对象

218 篇文章 5 订阅 ¥59.90 ¥99.00
Java 14及更高版本引入Records特性,用于创建不可变数据对象。Records自动提供访问器、equals()、hashCode()和toString()方法。本文通过示例解释如何定义并使用Records,展示其简化代码、增强可读性的优点。
摘要由CSDN通过智能技术生成

在Java 14及更高版本中,引入了Records(记录)作为一种新的类类型。Records提供了一种简洁的方式来定义不可变数据对象,它们自动为数据成员生成访问器方法、equals()、hashCode()和toString()等方法。本文将介绍如何使用Records创建不可变数据对象,并提供相应的源代码示例。

首先,让我们看一下Records的基本语法:

public record ClassName(parameters) {
   
    // 数据成员声明
}

其中,ClassName是记录的名称,parameters是记录的参数列表。在记录内部,可以声明数据成员以及其他方法。但需要注意的是,记录的数据成员默认是final和private的,它们只能通过构造函数进行初始化,并且不能被修改。

下面是一个简单的例子,展示如何使用Records创建一个表示人员信息的不可变数据对象:

public 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java使用Hudi的Spark客户端创建Hudi表并写入数据,你可以按照以下步骤进行操作: 1. 首先,确保你已经在项目添加了Hudi和Spark依赖。你可以在pom.xml文件添加以下依赖项: ```xml <dependencies> <!-- Hudi --> <dependency> <groupId>org.apache.hudi</groupId> <artifactId>hudi-spark-bundle_2.12</artifactId> <version>0.9.0</version> </dependency> <!-- Spark --> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.12</artifactId> <version>3.1.1</version> </dependency> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-sql_2.12</artifactId> <version>3.1.1</version> </dependency> </dependencies> ``` 2. 在Java创建SparkSession对象: ```java import org.apache.spark.sql.SparkSession; SparkSession spark = SparkSession.builder() .appName("HudiExample") .master("local[*]") // 根据实际运行环境设置 .config("spark.serializer", "org.apache.spark.serializer.KryoSerializer") .getOrCreate(); ``` 3. 创建Hudi表,指定表名、表类型(如COPY_ON_WRITE或MERGE_ON_READ)、键名和分区列: ```java import org.apache.hudi.DataSourceWriteOptions; import org.apache.hudi.HoodieDataSourceHelpers; import org.apache.hudi.config.HoodieWriteConfig; String tableName = "my_hudi_table"; String basePath = "/path/to/hudi_table"; String primaryKey = "id"; String partitionColumn = "date"; HoodieWriteConfig writeConfig = HoodieWriteConfig.newBuilder().withPath(basePath) .withSchema(HoodieDataSourceHelpers.createHoodieWriteSchema(schema)) // 设置数据模式 .withParallelism(2, 2) // 设置并行度 .forTable(tableName) .withIndexConfig(HoodieIndexConfig.newBuilder().withIndexType(HoodieIndex.IndexType.BLOOM).build()) // 设置索引类型为Bloom .withCompactionConfig(HoodieCompactionConfig.newBuilder().archiveCommitsWith(30, TimeUnit.SECONDS).build()) // 设置30s内自动归档 .build(); HoodieSparkEngineContext context = new HoodieSparkEngineContext(spark.sparkContext()); HoodieTableMetaClient metaClient = HoodieTableMetaClient.builder().setConf(spark.sparkContext().hadoopConfiguration()) .setBasePath(basePath) .setLoadActiveTimelineOnLoad(true) .build(); HoodieTable table = HoodieSparkTable.create(writeConfig, context, metaClient); ``` 4. 将数据写入Hudi表: ```java import org.apache.hudi.common.model.HoodieRecord; // 创建要写入的数据集 List<HoodieRecord> records = Arrays.asList( new HoodieRecord(new HoodieKey("1", "2021-01-01"), data1), new HoodieRecord(new HoodieKey("2", "2021-01-02"), data2), new HoodieRecord(new HoodieKey("3", "2021-01-03"), data3) ); JavaRDD<HoodieRecord> recordRDD = JavaSparkContext.fromSparkContext(spark.sparkContext()).parallelize(records); String commitTime = HoodieTestUtils.makeNewCommitTime(); HoodieWriteClient<HoodieRecord> writeClient = new HoodieWriteClient<>(context, writeConfig); writeClient.startCommit(commitTime); writeClient.insert(recordRDD, commitTime); writeClient.commit(commitTime, recordRDD); ``` 以上是使用Hudi Spark客户端在Java创建Hudi表并写入数据的基本步骤。请根据你的实际情况进行调整和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值