You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

开启multiLine:如何在Databricks中按文件读取.flib到Delta表

解决方案

方法1:分组拼接文件内容

基于你现有的查询逻辑,通过按文件名分组,将同一文件的所有行内容拼接成完整文本。用collect_list收集当前文件的所有行数据,再通过concat_ws以换行符分隔拼接,还原文件原始结构:

USE CATALOG "data-beta";
USE data_beta_dev;
DROP TABLE IF EXISTS data_beta;
CREATE TABLE data_beta 
USING delta
AS
SELECT
  REVERSE(SUBSTRING_INDEX(REVERSE(_metadata.file_path), '/', 1)) as FileName,
  concat_ws('\n', collect_list(value)) AS FileData
FROM read_files("wasbs://<redacted>@<redacted>.blob.core.windows.net/some/path/to/flibs/*.flib", format => 'text')
GROUP BY REVERSE(SUBSTRING_INDEX(REVERSE(_metadata.file_path), '/', 1));

SELECT * FROM data_beta;

方法2:以二进制文件格式读取(更高效)

直接使用binaryFile格式读取文件,每个文件会被作为单条记录返回,再将二进制内容转换为字符串即可得到完整文件内容:

USE CATALOG "data-beta";
USE data_beta_dev;
DROP TABLE IF EXISTS data_beta;
CREATE TABLE data_beta 
USING delta
AS
SELECT
  REVERSE(SUBSTRING_INDEX(REVERSE(_metadata.file_path), '/', 1)) as FileName,
  CAST(content AS STRING) AS FileData
FROM read_files("wasbs://<redacted>@<redacted>.blob.core.windows.net/some/path/to/flibs/*.flib", format => 'binaryFile');

SELECT * FROM data_beta;

补充说明

  • 方法1适合需要严格保留原文件换行结构的场景,concat_ws('\n', ...)会确保行分隔符与原文件一致。
  • 方法2性能更优,无需分组聚合操作,直接读取整个文件内容。如果你的.flib文件使用非UTF-8编码,可添加encoding参数指定(例如encoding => 'GBK')。

内容的提问来源于stack exchange,提问作者hotmeatballsoup

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 02:22:45