这是Spark SQL中用于存储元数据的高级抽象Catalog的功能。Catalog是在Spark 2.x的扩展功能并使用了新的公共方法,使你能够检查与数据库、表和视图关联的元数据。Spark 3.0将其扩展为使用外部catalog(我们将在第12章中进行简要讨论)。例如,在Spark应用程序中,创建SparkSession之后赋值成变量spark,你可以通过以下方法访问...
我们可以使用catalog提供的API来删除view。如果是Spark SQL情况,那么它会删除事先注册好的view;如果是hive情况,那么它会从元数据中删除表。 查询已经注册的函数 我们不仅可以使用Catalog API操作表,还可以用它操作UDF。下面代码片段展示SparkSession上所有已经注册号的函数,当然也包括了Spark内置的函数。
Spark SQL引擎首先会为SQL或DataFrame查询生成一个抽象语法树(AST)。在此初始阶段,任何列或表名都将会被解析为内部的Catalog,catalog是一个指向Spark SQL的编程接口,该接口包含列、数据类型、函数、表、数据库、列名等等的列表。一旦全部成功解决,查询将继续进入下一阶段。 阶段2:逻辑优化 如图3-4所示,该阶段包括两...
特别是,我们研究了动态分区修剪(DPP)和自适应查询执行(AQE),这两种优化可以提高Spark在执行时的性能。我们还探索了实验性Catalog API如何将Spark生态系统扩展到用于批处理和流数据的源和接收器的自定义数据存储,并研究了Spark 3.0中新的调度程序,使其能够在执行程序中利用GPU。 作为第7章中对Spark UI的讨论的补充,...
此外,Catalog可以定义如何修改自己的元数据,从而支持CREATE TABLE,ALTER TABLE等操作。 例如,在SQL中,你现在可以发出命令来为目录创建命名空间。要使用可插入目录,请在spark-defaults.conf文件中启用以下配置: spark.sql.catalog.ndb_catalog com.ndb.ConnectorImpl # connector implementation spark.sql.catalog.ndb_...
spark.sql.catalog.iceberg_catalog = org.apache.iceberg.spark.SparkCatalog 接口定义如下: public interface CatalogPlugin { void initialize(String name, CaseInsensitiveStringMap options); String name();} 增加了TableCatalog的接口,该接口继承自CatalogPlugin,定义了相关的方法用来解析SQL中的元数据,如,tableExis...
通过访问 Spark 中的 Catalog 存储库来解析验证语义、列名、类型、表名等。 优化后的逻辑执行计划:== Optimized Logical Plan == Catalyst 优化器根据各种规则进行优化。 物理执行计划:== Physical Plan == a. HashAggregate 运算符表示数据聚合,一般 HashAggregate 是成对出现,第一个 HashAggregate 是将执行节点...
Spark SQL引擎首先会为SQL或DataFrame查询生成一个抽象语法树(AST)。在此初始阶段,任何列或表名都将会被解析为内部的Catalog,catalog是一个指向Spark SQL的编程接口,该接口包含列、数据类型、函数、表、数据库、列名等等的列表。一旦全部成功解决,查询将继续进入下一阶段。阶段2:逻辑优化 该阶段包括两个内部阶段...
HiveMetastoreCatalog是Spark中对Hive Metastore访问的wrapper。HiveMetastoreCatalog通过调用相应的Hive Api可以获得数据库中的表及表的分区,也可以创建新的表和分区。 HiveMetastoreCatalog HiveMetastoreCatalog中会通过hive client来访问metastore中的元数据,使用了大量的Hive Api。其中包括了广为人知的deSer library。