求助:如何创建Trino连接器查询CSV格式平面文件?
解决Trino查询本地平面文件(CSV)的方案
方案一:通过Hive连接器映射本地CSV
这是最通用的落地方案,借助Hive外部表能力挂载本地文件:
配置Hive连接器
在Trino的etc/catalog目录下新建hive.properties文件,内容示例:connector.name=hive-hadoop2 hive.metastore.uri=thrift://localhost:9083 hive.config.resources=/etc/hadoop/conf/core-site.xml需确保Hadoop的
core-site.xml中配置本地文件系统:<property><name>fs.defaultFS</name><value>file:///</value></property>在Hive中创建外部表
连接Hive执行SQL,定义匹配CSV结构的外部表:CREATE EXTERNAL TABLE csv_data ( id INT, name STRING, score DOUBLE ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' STORED AS TEXTFILE LOCATION 'file:///opt/data/csv_files' TBLPROPERTIES ("skip.header.line.count"="1"); -- CSV首行是列名时添加在Trino中查询
直接在Trino客户端执行SELECT * FROM hive.default.csv_data;即可读取数据。
方案二:使用Trino CSV连接器(Trino 350+版本支持)
如果你的Trino版本足够新,可直接用官方原生CSV连接器:
配置CSV连接器
在etc/catalog目录下新建csv.properties文件:connector.name=csv csv.directory=/opt/data/csv_files csv.skip-header-line-count=1 -- 可选,用于跳过首行列名直接查询
Trino会自动将目录下的CSV文件识别为表(文件名即为表名),比如文件名为my_data.csv,直接执行SELECT * FROM csv.default.my_data;即可。
注意事项
- 确保Trino进程对目标文件目录拥有读权限
- 若为Trino集群,本地文件需在所有节点的相同路径下,或通过NFS等共享存储统一挂载
- 若CSV存在特殊格式(如引号包裹字段、自定义分隔符),需在表定义或连接器配置中对应调整参数
内容的提问来源于stack exchange,提问作者Gopi
相关产品推荐
相关产品推荐

