文章目录
本文介绍了如何使用 Presto 通过 Alluxio 查询 Iceberg 表。由于这项功能目前处于试验阶段,此处提供的信息可能会发生变化,请及时参考官方文档了解最新功能。关于如何使用 Presto 读取 Iceberg 上的数据请参考这里。
我们知道,在 Hive 数据源上,Presto 支持两种形式的 Alluxio 缓存:通过 Alluxio local cache 以及 Alluxio Cluster,截止到本文章编写时,Alluxio 还不支持在 catalog service 中读取 Iceberg 表,所以下面的步骤是基于 filesystem interface 的。
基本设置
将 Alluxio 客户端 jar 安装到 Presto Iceberg connector 里面
将位于 /
的 Alluxio 客户端 jar 复制到位于 ${PRESTO_HOME}/plugin/iceberg/
的 Presto Iceberg 数据源目录中,然后重启 Presto 服务:
$ ${PRESTO_HOME}/bin/launcher restart
另外,还需要将 /
放到 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)