【发布时间】:2016-10-11 18:13:15
【问题描述】:
我正在尝试部署新的数据发布者汽车。我查看了 APIM_LAST_ACCESS_TIME_SCRIPT.xml 火花脚本(由 api 管理器使用)并且不明白创建的两个临时表之间的区别:API_LAST_ACCESS_TIME_SUMMARY_FINAL 和 APILastAccessSummaryData
【问题讨论】:
我正在尝试部署新的数据发布者汽车。我查看了 APIM_LAST_ACCESS_TIME_SCRIPT.xml 火花脚本(由 api 管理器使用)并且不明白创建的两个临时表之间的区别:API_LAST_ACCESS_TIME_SUMMARY_FINAL 和 APILastAccessSummaryData
【问题讨论】:
这两个 Spark 临时表代表不同的 JDBC 表(可能在不同的数据源中),其中一个充当 Spark 的源,另一个充当目标。
为了更好地说明这一点,请查看相关的简化脚本:
create temporary table APILastAccessSummaryData using CarbonJDBC options (dataSource "WSO2AM_STATS_DB", tableName "API_LAST_ACCESS_TIME_SUMMARY", ... );
CREATE TEMPORARY TABLE API_LAST_ACCESS_TIME_SUMMARY_FINAL USING CarbonAnalytics OPTIONS (tableName "API_LAST_ACCESS_TIME_SUMMARY", ... );
INSERT INTO TABLE APILastAccessSummaryData select ... from API_LAST_ACCESS_TIME_SUMMARY_FINAL;
如您所见,我们首先在 Spark 中创建一个名为 APILastAccessSummaryData 的临时表,它表示 WSO2AM_STATS_DB 数据源中名为 API_LAST_ACCESS_TIME_SUMMARY 的实际关系数据库表。注意using CarbonJDBC 关键字,它可用于直接映射 Spark 中的 JDBC 表。此类表(及其行)未编码,用户可以读取。
其次,我们正在创建另一个名为 API_LAST_ACCESS_TIME_SUMMARY_FINAL 的 Spark 临时表。然而,在这里,我们使用的是 CarbonAnalytics 分析提供程序,这意味着该表将不是一个普通的 JDBC 表,而是一个类似于您的 previous question 的编码表。
现在,从第三条语句中,您可以看到我们正在从第二个表 API_LAST_ACCESS_TIME_SUMMARY_FINAL 中读取 (SELECT) 多个字段,并将它们 (INSERT INTO) 插入到第一个表中,即 APILastAccessSummaryData。这代表 Spark 汇总过程。
要详细了解 CarbonAnalytics 和 CarbonJDBC 分析提供程序之间的区别或 Spark 如何处理此类表,请查看 Spark Query Language 的文档页面。
【讨论】: