当前架构:
在我们当前的架构中,我们使用 Hadoop 文件系统以 Parquet 文件格式存储我们的报告数据,我们是 Spark Thrift 服务器,通过 SQL 接口 (JDBC/ODBC) 公开这些数据。使用此界面,SAP BO 被配置为为报告提取数据。
BO 版本:SAP BO 4.2 SP07
火花版本:2.1.0
当前行为:
我们的一份报告生成了一个中等级别的查询,其中包含 28 个连接(显示在查询面板中)。
但是当报表在 Webi 中运行时,我们看到在 Spark 中触发了一个不同的查询(核心逻辑相同),每个字段、表和连接都添加了复杂而长的字符串别名(下面是两列的片段)。
`SYNTHJOIN_9445517e`.`SYNTHJOIN_e7712c1dSYNTHJOIN_ae302cd9bi_financial_timeFINANCIAL_DATE` `_SYNTHJOIN_9445517e___SYNTHJOIN_e7712c1dSYNTHJOIN_ae302cd9bi_financial_timeFINANCIAL_DATE_`,
`SYNTHJOIN_9445517e`.`SYNTHJOIN_e7712c1dSYNTHJOIN_ae302cd9SYNTHJOIN_f7386c62SYNTHJOIN_12a564e7SYNTHJOIN_e7907874SYNTHJOIN_151b5d6fSYNTHJOIN_cc7708b9SYNTHJOIN_9a61ffc9SYNTHJOIN_425d41fbbi_marketMARKET_LEVEL_1` `_SYNTHJOIN_9445517e___SYNTHJOIN_e7712c1dSYNTHJOIN_ae302cd9SYNTHJOIN_f7386c62SYNTHJOIN_12a564e7SYNTHJOIN_e7907874SYNTHJOIN_151b5d6fSYNTHJOIN_cc7708b9SYNTHJOIN_9a61ffc9SYNTHJOIN_425d41fbbi_marketMARKET_LEVEL_1_`
问题:
- 我可以理解为什么在查询中添加长别名的原因吗?
- 由于 Spark 2.1.0 仅支持 64k 字节的查询值 ( https://issues.apache.org/jira/browse/SPARK-19796 ),因此基于此查询生成的查询跨越了 64K 值。所以火花工作越来越失败。我们希望减少并保持这些别名简单明了,以避免这个 64K 障碍。请建议我们在 SAP BO 中缺少的任何配置?
- 我们还注意到 SAP BO 正在生成一个冗长的子查询而不是简单的连接查询,SAP BO 中是否有任何配置可以将查询面板中显示的查询触发到数据库而不是爆炸查询?