0

現在のアーキテクチャ:

現在のアーキテクチャでは、Hadoop ファイル システムを使用してレポート データを Parquet ファイル形式で保存し、Spark Thrift Server を使用して SQL インターフェイス (JDBC/ODBC) を介してこれらのデータを公開しています。このインターフェイスを使用して、レポートのデータをプルするように SAP BO を構成します。

BO バージョン: SAP BO 4.2 SP07

スパークバージョン: 2.1.0

現在の動作:

28 個の結合 (クエリ パネルに表示) を含むレポートの 1 つによって中級クエリが生成されています。

しかし、レポートが Webi で実行されると、Spark で別のクエリがトリガーされていることがわかります (コア ロジックは同じです)。複雑で長い文字列のエイリアスが各フィールド、テーブル、および結合に追加されています (2 つの列のスニペットは以下にあります)。

`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_`

質問:

  1. クエリに長いエイリアスが追加されている理由を理解していただけますか?
  2. Spark 2.1.0 はクエリ ( https://issues.apache.org/jira/browse/SPARK-19796 ) に対して 64k バイトの値のみをサポートするため、このクエリに基づいて生成されたクエリはこの 64k の値を超えます。そのため、スパークジョブは失敗しています。この 64K バリアを回避するために、これらのエイリアスを減らしてシンプルかつ鮮明に保ちたいと考えています。SAP BO に欠けている構成を提案してください。
  3. また、SAP BO が単純な結合クエリではなく、長いサブクエリを生成していることに気付きました。SAP BO には、クエリを展開するのではなく、クエリ パネルに表示されているクエリをデータベースに送信するための構成がありますか?
4

1 に答える 1

0

解決できましたので、質問にお答えしたいと思います。

  1. クエリに長いエイリアスが追加されている理由を理解していただけますか?

これは、SAP BO が提供する Spark Simba Driver の動作が原因でした。SAP BO は、追加のエイリアスなしですべてのクエリが正常であった修正されたドライバーを提供しました。

  1. Spark 2.1.0 はクエリ ( https://issues.apache.org/jira/browse/SPARK-19796 ) に対して 64k バイトの値のみをサポートするため、このクエリに基づいて生成されたクエリはこの 64k の値を超えます。そのため、スパークジョブは失敗しています。この 64K バリアを回避するために、これらのエイリアスを減らしてシンプルかつ鮮明に保ちたいと考えています。SAP BO に欠けている構成を提案してください。

また、64K バイトを超えるクエリをサポートするように、Apache Spark 2.2 から修正を取得しました。

  1. また、SAP BO が単純な結合クエリではなく、長いサブクエリを生成していることに気付きました。SAP BO には、クエリを展開するのではなく、クエリ パネルに表示されているクエリをデータベースに送信するための構成がありますか?

SAP からの修正 (修正されたドライバー jar) がなくても、spark simba SBO ファイルを更新して、{BO インストール パス}/sap_bobj/enterprise_xi40/dataAccess/connectionServer/ で利用可能な汎用 JDBC ドライバーの prm ファイルを選択することで、これを修正できました。 jdbc/extensions/qt/jdbc.prm. しかし、SAP はこの回避策をサポートしないと言ったので、上記のように SAP 自体から修正を入手しました。

于 2020-01-04T12:24:06.373 に答える