该文是 [Delta Lake 数据源](https://docs.byzer.org/#/byzer-lang/zh-cn/datasource/dw/delta_lake) 一个补充。
DeltaLake 作为Byzer 的内置数据源,使用非常简单,只需要添加启动参数:
代码语言:javascript复制-streaming.datalake.path "对象存储某个目录"
这样启动 Byzer 引擎后,你就可以把数据保存到 数据湖里去了:
刷新下侧边栏,就可以看到 demo 目录下有 table1 表。
如果用户不想以库表方式保存数据,那么可以这么操作:
然后刷新目录,就可以看到 FIleSystem里有相关目录产生了。 读取话也是配置 load 中的 mode="path"。
如果用户使用绝对路径怎么办?我们知道 /tmp/demo/table1
这个目录是个人目录,其他用户是无法看到的。这个时候可以使用带schema的绝对路径。比如:
save overwrite table1 as delta.`oss:/YOUR_BUCKET_NAME/tmp/demo/table1`
where mode="path";
因为 Byzer 默认是不支持使用带Schema路径的,所以你需要开启一个白名单:
代码语言:javascript复制--conf spark.mlsql.path.schemas="oss"
这样所有以 oss://bucket 开头前缀的地址都不会被改写,用户可以正确的去访问这个地址。多个对象存储schema可以按逗号分隔。
注意,你需要通过 core-site.xml 文件配置对应的bucket信息,或者通过祝威廉:如何随心所欲玩转各种云厂商对象存储 提及的方式,添加对象存储的支持。