我正在尝试部署新的数据发布者汽车。我查看了APIM_LAST_ACCESS_TIME_SCRIPT.xml spark脚本(由api manager使用)并且不理解创建的两个临时表之间的区别: API_LAST_ACCESS_TIME_SUMMARY_FINAL 和 APILastAccessSummaryData
答案 0 :(得分:2)
两个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
的临时表,它表示API_LAST_ACCESS_TIME_SUMMARY
数据源中名为WSO2AM_STATS_DB
的实际关系数据库表。请注意using CarbonJDBC
关键字,该关键字可用于直接映射Spark中的JDBC表。这些表(及其行)未编码,可由用户读取。
其次,我们正在创建另一个名为API_LAST_ACCESS_TIME_SUMMARY_FINAL
的Spark临时表。但是,我们正在使用CarbonAnalytics
分析提供程序,这意味着此表不是一个vanilla JDBC表,而是一个类似于previous question中的编码表。
现在,从第三个语句中,您可以看到我们正在读取(SELECT)第二个表API_LAST_ACCESS_TIME_SUMMARY_FINAL
中的多个字段并将它们(INSERT INTO)插入到第一个表中,{{1 }}。这代表Spark总结过程。
有关APILastAccessSummaryData
和CarbonAnalytics
分析提供程序之间差异的详细信息,或者Spark一般处理此类表的方式,请查看Spark Query Language的文档页面。