1. 环境
| 组件名称 | 版本 |
|---|---|
| Hadoop | 3.1.3 |
| Spark | 2.4.8 |
| Hive | 3.1.3 |
| Iceberg | 0.13.2 |
| trino | 386 |
客户端查询时基本都用DBeaver工具来查询,
由于上了trino做连接器,集成了hive、MySQL、Phoenix、Kafka、Iceberg等组件,所以使用trino来做分析,特别方便。
今天我们在使用pyspark跑批任务时,使用了trino的jdbc连接iceberg表。
df_table = spark.read.format("jdbc") \
.option("url", url + "/iceberg/iceberg_dw") \
.option("driver", driver) \
.option("user", user) \
.option("dbtable", '(select * from iceberg.iceberg_dw.dw_test)') \
.load()
2. 问题描述
当数据量不大时,没任何异常。
但是一旦数据量大,表数据有几十G(平时很正常大小),然后使用这种连接方式做聚合等操作时,就一直卡着很长时间执行不完。
3. 问题解决
后来换成pyspark直接读iceberg表,问题瞬间解决。
df_table = spark.read.format("iceberg").load("iceberg_dw.dw_test")
4. 总结
trino使用要谨慎,可以用在分析,或者前端连接查询等动作。
如果是后台批处理计算,还是老老实实使用spark直接读吧。
不过如果是视图,spark不能直接读,那就只能用trino的jdbc方式连接了。
版权声明:本文为wang6733284原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。