上文《数据湖系列(九)使用spark程序向Apache Hudi插入数据》我们已经实现了使用spark程序向hudi写入数据了,本文的话我们来演示下从hudi中读取相关的数据。所以示例如下:
1)准备maven项目
这里我们还是使用上文的maven项目,包含里面的依赖等,示例如下:
2)创建读取hudi类
这里我们创建一个读取hudi的类,名称为FindHudi。里面具体的实现代码如下:
val session: SparkSession = SparkSession.builder()
//使用本地模型跑测试
.master("local")
//job名称
.appName("FindHudi")
//设置spark的序列化,这一步很重要,不然要报错
.config("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
.getOrCreate()
//加载hudi仓库的表数据
val frame: DataFrame = session.read.format("hudi").load("/hudi_data/users")
//创建临时视图
frame.createTempView("users")
//查询结果
val result = session.sql(
"""
| select id,name from users
""".stripMargin)
//在控制台显示结果
result.show(true)3)运行测试
接着我们来运行测试一下,看下控制台是否会输出查询的users表结果,示例如下:
可以看到没有任何问题。
备注:
1、这里我们查询Hudi的数据主要步骤如下: 1)创建sparksession 2)加载hudi表目录(hdfs的目录) 3)创建临时视图 4)编写sql查询临时视图 5)显示结果。 2、切记进行config配置的时候需要实现序列化的配置。 3、sql里面我们可以编写成select *,这样子可以显示更多的字段信息,多余的字段信息相当于是元数据。
以上就是我们使用spark读取hudi的数据案例,最后按照惯例,附上本案例的源码,登陆后即可下载。



还没有评论,来说两句吧...