背景
本文基于hudi 0.12.2
目前hudi的与spark的集合还是基于spark datasource V1来的,这一点可以查看hudi的source实现就可以知道:
class DefaultSource extends RelationProvider
with SchemaRelationProvider
with CreatableRelationProvider
with DataSourceRegister
with StreamSinkProvider
with StreamSourceProvider
with SparkAdapterSupport
with Serializable {
闲说杂谈
我们先从hudi的写数据说起(毕竟没有写哪来的读),对应的流程:
createRelation
||
\/
HoodieSparkSqlWriter.write
###具体的代码
首先是一系列table配置的前置校验:
assert(optParams.get("path").exists(!StringUtils.isNullOrEmpty(_)), "'path' must be set")
val path = optParams("path")
val basePath = new Path(path)
val sparkContext = sqlContext.sparkContext
val fs = basePath.getFileSystem(sparkContext.hadoopConfiguration)
tableExists = fs.exists(new Path(basePath, HoodieTableMetaClient.METAFOLDER_NAME))
var tableConfig = getHoodi

文章详细介绍了Hudi0.12.2版本中与Spark集成的数据源仍然是基于DataSourceV1的。内容主要围绕Hudi写数据的流程,包括创建关系、配置验证、HoodieSparkSqlWriter的write方法,以及各种配置参数的校验,如路径、表配置、键生成器类等。在写入过程中,Hudi会检查路径参数,判断是否为首次写入,并从.hoodie/hoodie.properties文件中读取配置进行校验,确保DataSource和Table配置的一致性。
最低0.47元/天 解锁文章
730

被折叠的 条评论
为什么被折叠?



