IBM SQL Query 如何知道我在 CSV 文件中使用的模式?

How does IBM SQL Query know the schema I'm using in my CSV files?

我有兴趣使用 IBM SQL Query 服务来询问我在对象存储中的一些文件,但它如何知道我在这些文件中使用的模式。它如何知道应该用于我的 CSV 文件中的列的数据类型?我没有看到任何允许我定义字段名称和数据类型的 "CREATE TABLE" 机制。

IBM SQL 查询依赖于读取模式。它对 SQLs 查询引用的每个数据集执行模式推断。 IBM SQL Query 使用 Apache Spark 作为执行引擎,它也用于执行模式推理。

在 CSV 数据的情况下(以及查询 JSON 数据时),此模式推断涉及扫描数据值以便为每一列派生数据类型。当您的数据量变大并且您想要优化 SQLs 的性能时,最好以更精细的格式存储数据,例如 parquet,它将元数据与数据值结合在一起。在这种情况下,架构推断非常高效且快速,因为 IBM SQL Query 只需要读取 parquet 页脚即可检索数据的架构。

当您想要查询分布在对象存储中多个对象分区的大数据集时,这种效果会变得更加明显。在这种情况下,IBM SQL 查询确实只需要检索镶木地板对象之一(即分区之一)并读取它的页脚以推断整个数据集的模式。