欢迎关注大数据技术架构与案例微信公众号:过往记忆大数据
过往记忆博客公众号iteblog_hadoop
欢迎关注微信公众号:
过往记忆大数据

在 Presto Iceberg 数据源上使用 Alluxio 缓存

本文介绍了如何使用 Presto 通过 Alluxio 查询 Iceberg 表。由于这项功能目前处于试验阶段,此处提供的信息可能会发生变化,请及时参考官方文档了解最新功能。关于如何使用 Presto 读取 Iceberg 上的数据请参考这里

我们知道,在 Hive 数据源上,Presto 支持两种形式的 Alluxio 缓存:通过 Alluxio local cache 以及 Alluxio Cluster,截止到本文章编写时,Alluxio 还不支持在 catalog service 中读取 Iceberg 表,所以下面的步骤是基于 filesystem interface 的。

基本设置

将 Alluxio 客户端 jar 安装到 Presto Iceberg connector 里面

将位于 //client/alluxio-2.7.0-client.jar 的 Alluxio 客户端 jar 复制到位于 ${PRESTO_HOME}/plugin/iceberg/ 的 Presto Iceberg 数据源目录中,然后重启 Presto 服务:

$ ${PRESTO_HOME}/bin/launcher restart

另外,还需要将 //client/alluxio-2.7.0-client.jar 放到 Hive classpath 中,只需要编辑 conf/hive-env.sh 文件,将 Alluxio 客户端 jar 路径设置到 HIVE_AUX_JARS_PATH 变量里面,具体如下:

$ export HIVE_AUX_JARS_PATH=/<PATH_TO_ALLUXIO>/client/alluxio-2.7.0-client.jar:${HIVE_AUX_JARS_PATH}

配置 Presto 以使用 Iceberg 数据源

Presto 使用 Iceberg connector 来读写 Iceberg 表。要启用 Iceberg connector,需要在 Presto 的安装目录中为 Iceberg connector 创建一个名为 ${PRESTO_HOME}/etc/catalog/iceberg.properties 的配置文件,内容如下:

connector.name=iceberg
hive.metastore.uri=thrift://localhost:9083

注意,请使用正确的 Hive Metastore URL。

在 Alluxio 上使用 Presto 查询 Iceberg Tables

创建 Iceberg 表

我们可以使用下面命令进入到 Presto CLI 中:

./presto --server localhost:8080 --catalog iceberg --debug

进入到 Presto 客户端之后,运行下面建库建表语句:

CREATE SCHEMA iceberg_test;
USE iceberg_test;
CREATE TABLE person (name varchar, age int, id int)
    WITH (location = 'alluxio://localhost:19998/person', format = 'parquet');

请注意,上面 Alluxio connection URI 需要使用你设置的 hostname 和 port。

上面的语句在 Alluxio 文件系统的 /person 目录中创建了一个名为 iceberg_test 的库和一张名为 person 的表,并使用 Parquet 作为表的存储格式。

往测试表中插入数据

可以使用下面命令往刚刚建好的表中插入数据:

INSERT INTO person VALUES ('alice', 18, 1000);

然后可以使用下面语句查看数据是否插入正确:

SELECT * FROM person;

同时我们可以看到 Alluxio 里面已经缓存了我们的数据:

$ bin/alluxio fs ls /person
drwxr-xr-x  alluxio    alluxio    10    PERSISTED 06-29-2021 16:24:02:007  DIR /person/metadata
drwxr-xr-x  alluxio    alluxio     1    PERSISTED 06-29-2021 16:24:00:049  DIR /person/data
$ bin/alluxio fs ls /person/data
-rw-r--r--  alluxio    alluxio   400    PERSISTED 06-29-2021 16:24:00:691 100% /person/data/6e6a451a-8f20-4d73-9ef6-ee48070dad27.parquet
$ bin/alluxio fs ls /person/metadata
-rw-r--r--  alluxio    alluxio  1406    PERSISTED 06-29-2021 16:23:28:608 100% /person/metadata/00000-2fd982ae-2a81-44a8-a4db-505e9ba6c09d.metadata.json
...
(snip)

可以看到已经创建了 Iceberg 表的元数据和数据文件。

本博客文章除特别声明,全部都是原创!
原创文章版权归过往记忆大数据(过往记忆)所有,未经许可不得转载。
本文链接: 【在 Presto Iceberg 数据源上使用 Alluxio 缓存】(https://www.iteblog.com/archives/10087.html)
喜欢 (5)
分享 (0)
发表我的评论
取消评论

表情
本博客评论系统带有自动识别垃圾评论功能,请写一些有意义的评论,谢谢!