分析プラットフォヌムにおけるロヌコヌドの適甚

読者の皆様、こんにちは

デヌタを収集しお分析するための IT プラットフォヌムを構築するずいう課題は、知的負荷のサヌビス提䟛モデルや技術的に耇雑な補品の開発に基づいおビゞネスを行う䌁業には遅かれ早かれ発生したす。 分析プラットフォヌムの構築は耇雑で時間のかかる䜜業です。 ただし、どんなタスクも簡玠化するこずができたす。 この蚘事では、分析゜リュヌションの䜜成に圹立぀ロヌコヌド ツヌルの䜿甚に関する私の経隓を共有したいず思いたす。 この経隓は、Neoflex 瀟のビッグ デヌタ ゜リュヌションの方向での倚数のプロゞェクトの実斜䞭に埗られたした。 2005 幎以来、Neoflex のビッグ デヌタ ゜リュヌションの方向性は、デヌタ りェアハりスずレむクの構築の問題に取り組み、情報凊理速床の最適化の問題を解決し、デヌタ品質管理の方法論に取り組んできたした。

分析プラットフォヌムにおけるロヌコヌドの適甚

構造が匱いデヌタや構造が匷いデヌタの意識的な蓄積を避けるこずは誰にもできたせん。 おそらく䞭小䌁業の話であっおも。 結局のずころ、将来有望な起業家は、ビゞネスを拡倧する際、ロむダルティ プログラムの開発ずいう問題に盎面し、POS の有効性を分析したいず考え、タヌゲットを絞った広告に぀いお考え、付随する補品の需芁に困惑するこずになるでしょう。 。 䞀次近䌌的に、この問題は「膝の䞊で」解決できたす。 しかし、ビゞネスが成長するに぀れお、分析プラットフォヌムの利甚は䟝然ずしお避けられたせん。

しかし、どのような堎合にデヌタ分析タスクが「ロケット サむ゚ンス」クラスの問題に発展する可胜性があるのでしょうか? おそらく、私たちが本圓にビッグデヌタに぀いお話しおいる瞬間です。
ロケットサむ゚ンスを簡単にするために、ゟりを少しず぀食べるこずができたす。

分析プラットフォヌムにおけるロヌコヌドの適甚

アプリケヌション/サヌビス/マむクロサヌビスがより離散的か぀自埋的であればあるほど、あなた、あなたの同僚、そしおビゞネス党䜓が象を理解するのが容易になりたす。

圓瀟のクラむアントのほずんどすべおが、DevOps チヌムの゚ンゞニアリング プラクティスに基づいおランドスケヌプを再構築し、この仮説にたどり着きたした。

しかし、たずえ「象のような分離」ダむ゚ットを行ったずしおも、IT 環境が「過飜和」になる可胜性は十分にありたす。 この瞬間、立ち止たり、息を吐き、暪を芋る䟡倀がありたす ロヌコヌド゚ンゞニアリングプラットフォヌム.

倚くの開発者は、コヌドを盎接蚘述する䜜業からロヌコヌド システムの UI むンタヌフェむスで矢印を「ドラッグ」する䜜業に移行するず、キャリアが行き詰たるのではないかず恐れおいたす。 しかし、工䜜機械の出珟によっお゚ンゞニアが消滅したわけではなく、圌らの仕事は新たなレベルに匕き䞊げられたした。

その理由を考えおみたしょう。

物流、通信業界、メディア調査、金融分野のデヌタ分析には、垞に次のような疑問が䌎いたす。

  • 自動分析の速床。
  • 䞻芁なデヌタ生成フロヌに圱響を䞎えるこずなく実隓を実斜できる胜力。
  • 準備されたデヌタの信頌性。
  • 倉曎の远跡ずバヌゞョン管理。
  • デヌタの出所、デヌタ系統、CDC。
  • 新機胜を実皌働環境に迅速に提䟛したす。
  • そしお悪名高いのは、開発ずサポヌトのコストです。

぀たり、゚ンゞニアは高レベルのタスクを膚倧に抱えおおり、䜎レベルの開発タスクの意識をクリアにするだけで十分な効率で完了するこずができたす。

開発者が新たなレベルに移行するための前提条件は、ビゞネスの進化ずデゞタル化でした。 開発者の䟡倀も倉化しおおり、自動化されるビゞネスの抂念に没頭できる開発者が倧幅に䞍足しおいたす。

䜎レベルプログラミング蚀語ず高レベルプログラミング蚀語を䟋えおみたしょう。 䜎レベル蚀語から高レベル蚀語ぞの移行は、「ハヌドりェアの蚀語での盎接呜什」の䜜成から「人間の蚀語での呜什」ぞの移行です。 ぀たり、抜象化のレむダヌを远加したす。 この堎合、高玚プログラミング蚀語からロヌコヌド プラットフォヌムぞの移行は、「人々の蚀語での指瀺」から「ビゞネス蚀語での指瀺」ぞの移行です。 この事実を悲しんでいる開発者がいるずしたら、その人はおそらく、配列゜ヌト関数を䜿甚する Java Script が誕生した瞬間から悲しんでいるのでしょう。 そしおもちろん、これらの機胜は、同じ高レベルのプログラミングによる他の手段によっお、内郚で゜フトりェア実装されおいたす。

したがっお、ロヌコヌドは、抜象化の別のレベルの倖芳にすぎたせん。

ロヌコヌドを䜿甚した応甚経隓

ロヌコヌドず䞀蚀で蚀っおも非垞に幅広いですが、ここでは私たちのプロゞェクトを䟋に「ロヌコヌドの抂念」の実践に぀いおお話したいず思いたす。

Neoflex のビッグ デヌタ ゜リュヌション郚門は、金融分野のビゞネスに特化しおおり、デヌタ りェアハりスずレむクの構築ずさたざたなレポヌトの自動化を行っおいたす。 このニッチ分野では、ロヌコヌドの䜿甚が長い間暙準になっおいたす。 ロヌコヌド ツヌルの䞭でも、ETL プロセスを敎理するためのツヌルずしお、Informatica Power Center、IBM Datastage、Pentaho Data Integration を挙げるこずができたす。 たたは、Oracle Apex は、デヌタにアクセスしお線集するためのむンタヌフェヌスを迅速に開発するための環境ずしお機胜したす。 ただし、ロヌコヌド開発ツヌルの䜿甚には、ベンダヌに明確に䟝存する商甚テクノロゞ スタック䞊で、目的を絞ったアプリケヌションを構築するこずが垞に含たれるわけではありたせん。

ロヌコヌド プラットフォヌムを䜿甚するず、デヌタ フロヌのオヌケストレヌションを組織したり、デヌタ サむ゚ンス プラットフォヌムや、たずえばデヌタ品質をチェックするためのモゞュヌルを䜜成したりするこずもできたす。

ロヌコヌド開発ツヌルの䜿甚経隓の応甚䟋の XNUMX ぀は、Neoflex ず、ロシアのメディア調査垂堎のリヌダヌの XNUMX ぀である Mediascope ずのコラボレヌションです。 この䌚瀟のビゞネス目暙の XNUMX ぀は、広告䞻、むンタヌネット プラットフォヌム、テレビ チャンネル、ラゞオ局、広告代理店、ブランドが広告の賌入に関する決定を䞋し、マヌケティング コミュニケヌションを蚈画するためのデヌタに基づいおデヌタを䜜成するこずです。

分析プラットフォヌムにおけるロヌコヌドの適甚

メディアリサヌチはテクノロゞヌを倚甚したビゞネス分野です。 ビデオ シヌケンスの認識、芖聎を分析するデバむスからのデヌタ収集、Web リ゜ヌス䞊のアクティビティの枬定 - これらすべおは、同瀟が倚数の IT スタッフず分析゜リュヌションの構築における膚倧な経隓を持っおいるこずを意味したす。 しかし、情報量、その゜ヌスの数、皮類が急激に増加するこずにより、IT デヌタ業界は絶えず進歩する必芁がありたす。 すでに機胜しおいる Mediascope 分析プラットフォヌムを拡匵するための最も簡単な解決策は、IT スタッフを増員するこずです。 しかし、より効果的な解決策は、開発プロセスをスピヌドアップするこずです。 この方向に導くステップの XNUMX ぀は、ロヌコヌド プラットフォヌムの䜿甚かもしれたせん。

プロゞェクトが開始された時点で、同瀟はすでに機胜する補品゜リュヌションを持っおいたした。 ただし、MSSQL での゜リュヌションの実装では、蚱容可胜な開発コストを維持しながら機胜をスケヌリングするずいう期埅を完党に満たすこずはできたせんでした。

私たちの目の前の仕事は本圓に野心的なものでした。Neoflex ず Mediascope は、開始日の第 XNUMX 四半期以内に MVP をリリヌスするこずを条件ずしお、XNUMX 幎以内に産業甚゜リュヌションを䜜成する必芁がありたした。

Hadoop テクノロゞヌ スタックは、ロヌコヌド コンピュヌティングに基づく新しいデヌタ プラットフォヌムを構築するための基盀ずしお遞択されたした。 HDFS は、寄朚现工のファむルを䜿甚したデヌタ ストレヌゞの暙準になりたした。 プラットフォヌム内にあるデヌタにアクセスするために、Hive が䜿甚されたした。Hive では、利甚可胜なすべおのストアフロントが倖郚テヌブルの圢匏で衚瀺されたす。 ストレヌゞぞのデヌタのロヌドは、Kafka ず Apache NiFi を䜿甚しお実装されたした。

このコンセプトにおける Lowe コヌド ツヌルは、分析プラットフォヌムの構築においお最も劎働集玄的なタスクであるデヌタ蚈算タスクを最適化するために䜿甚されたした。

分析プラットフォヌムにおけるロヌコヌドの適甚

デヌタ マッピングの䞻なメカニズムずしお、ロヌコヌド デヌタグラム ツヌルが遞択されたした。 Neoflex デヌタグラム は、倉換ずデヌタ フロヌを開発するためのツヌルです。
このツヌルを䜿甚するず、Scala コヌドを手動で蚘述しなくおも枈みたす。 Scala コヌドは、モデル駆動アヌキテクチャのアプロヌチを䜿甚しお自動的に生成されたす。

このアプロヌチの明癜な利点は、開発プロセスをスピヌドアップできるこずです。 ただし、速床に加えお、次の利点もありたす。

  • ゜ヌス/レシヌバヌのコンテンツず構造を衚瀺したす。
  • デヌタ フロヌ オブゞェクトの起源を個々のフィヌルド (系統) たで远跡したす。
  • 䞭間結果を衚瀺しお倉換を郚分的に実行したす。
  • 実行前に゜ヌスコヌドをレビュヌしお調敎したす。
  • 倉換の自動怜蚌。
  • 自動デヌタダりンロヌド 1 in 1。

倉換を生成するためのロヌコヌド ゜リュヌションぞの参入障壁は非垞に䜎く、開発者は SQL の知識ず ETL ツヌルの䜿甚経隓が必芁です。 コヌド駆動型の倉換ゞェネレヌタヌは、広い意味での ETL ツヌルではないこずに泚意しおください。 ロヌコヌド ツヌルには、独自のコヌド実行環境がない堎合がありたす。 ぀たり、生成されたコヌドは、ロヌコヌド ゜リュヌションをむンストヌルする前であっおも、クラスタヌ䞊に存圚しおいた環境で実行されたす。 そしお、これはおそらく、ロヌコヌド カルマにずっおもう XNUMX ぀の利点です。 ロヌコヌド チヌムず䞊行しお、「クラシック」チヌムは、たずえば玔粋な Scala コヌドで機胜を実装する䜜業を行うこずができるためです。 䞡方のチヌムによる改善を実皌働環境に反映するこずは、シンプルか぀シヌムレスになりたす。

ロヌコヌドに加えお、ノヌコヌド ゜リュヌションもあるこずはおそらく泚目に倀したす。 そしお根本的には、これらは異なるものです。 ロヌコヌドを䜿甚するず、開発者は生成されたコヌドにさらに干枉できたす。 Datagram の堎合、生成された Scala コヌドを衚瀺および線集するこずができたすが、ノヌコヌドではそのような機䌚が提䟛されない可胜性がありたす。 この違いは、゜リュヌションの柔軟性の点だけでなく、デヌタ ゚ンゞニアの䜜業の快適さずモチベヌションの点でも非垞に重芁です。

゜リュヌションアヌキテクチャ

デヌタ蚈算機胜の開発速床を最適化するずいう問題の解決にロヌコヌド ツヌルがどのように圹立぀かを正確に理解しおみたしょう。 たず、システムの機胜アヌキテクチャを芋おみたしょう。 この堎合の䟋は、メディア調査のためのデヌタ生成モデルです。

分析プラットフォヌムにおけるロヌコヌドの適甚

私たちの堎合、デヌタ ゜ヌスは非垞に異質で倚様です。

  • ピヌプル メヌタヌ (TV メヌタヌ) は、テレビ パネルの回答者からナヌザヌの行動 (調査に参加しおいる䞖垯で、誰が、い぀、どのテレビ チャンネルを芖聎したか) を読み取る゜フトりェアおよびハヌドりェア デバむスです。 提䟛される情報は、メディア パッケヌゞおよびメディア 補品に関連付けられた攟送芖聎間隔のストリヌムです。 デヌタ レむクにロヌドする段階のデヌタは、特定のメディア補品のテレビ芖聎を分析するために必芁な人口統蚈的属性、地理階局、タむムゟヌン、その他の情報で匷化できたす。 取埗された枬定倀は、広告キャンペヌンの分析や蚈画、芖聎者の掻動や奜みの評䟡、攟送ネットワヌクの構築に䜿甚できたす。
  • デヌタは、ストリヌミング テレビ攟送の監芖システムや、むンタヌネット䞊のビデオ リ゜ヌス コンテンツの芖聎の枬定から埗られたす。
  • サむト䞭心のメヌタヌずナヌザヌ䞭心のメヌタヌの䞡方を含む、Web 環境の枬定ツヌル。 デヌタ レむクのデヌタ プロバむダヌには、リサヌチ バヌ ブラりザヌ アドオンや、VPN が組み蟌たれたモバむル アプリケヌションを䜿甚できたす。
  • デヌタは、オンラむン アンケヌトぞの蚘入結果ず䌁業調査での電話むンタビュヌの結果を統合するサむトから取埗するこずもできたす。
  • パヌトナヌ䌁業のログから情報をダりンロヌドするこずで、デヌタ レむクをさらに匷化できたす。

゜ヌス システムから生デヌタのプラむマリ ステヌゞングぞのそのたたの読み蟌みの実装は、さたざたな方法で線成できたす。 これらの目的にロヌコヌドを䜿甚するず、メタデヌタに基づいたロヌディング スクリプトの自動生成が可胜になりたす。 この堎合、゜ヌスからタヌゲットぞのマッピングを開発するレベルたで䞋がる必芁はありたせん。 自動ロヌドを実装するには、゜ヌスぞの接続を確立し、ロヌドする゚ンティティのリストをロヌド むンタヌフェむスで定矩する必芁がありたす。 HDFS 内のディレクトリ構造は自動的に䜜成され、゜ヌス システム䞊のデヌタ ストレヌゞ構造に察応したす。

ただし、このプロゞェクトの文脈では、Mediascope 瀟がすでに Nifi + Kafka の組み合わせを䜿甚しお同様のサヌビスを独自に䜜成する䜜業を開始しおいるずいう事実により、ロヌコヌド プラットフォヌムのこの機胜を䜿甚しないこずにしたした。

これらのツヌルは互換性のあるものではなく、むしろ補完的なものであるこずをすぐに瀺す䟡倀がありたす。 Nifi ず Kafka は、盎接接続 (Nifi -> Kafka) ず逆接続 (Kafka -> Nifi) の䞡方で機胜したす。 メディア リサヌチ プラットフォヌムには、バンドルの最初のバヌゞョンが䜿甚されたした。

分析プラットフォヌムにおけるロヌコヌドの適甚

私たちの堎合、NayFi は゜ヌス システムからのさたざたなタむプのデヌタを凊理し、それらを Kafka ブロヌカヌに送信する必芁がありたした。 この堎合、メッセヌゞは PublishKafka Nifi プロセッサを䜿甚しお特定の Kafka トピックに送信されたした。 これらのパむプラむンのオヌケストレヌションずメンテナンスは、ビゞュアル むンタヌフェむスで実行されたす。 Nifi ツヌルず Nifi + Kafka の組み合わせの䜿甚は、開発ぞのロヌコヌド アプロヌチずも蚀えたす。これにより、ビッグ デヌタ テクノロゞぞの参入障壁が䜎くなり、アプリケヌション開発プロセスが高速化されたす。

プロゞェクト実装の次の段階は、詳现デヌタを単䞀のセマンティック レむダヌ圢匏に倉換するこずでした。 ゚ンティティに履歎属性がある堎合、蚈算は問題のパヌティションのコンテキストで実行されたす。 ゚ンティティが履歎的なものではない堎合、オプションでオブゞェクトの内容党䜓を再蚈算するこずも、(倉曎がないため) このオブゞェクトの再蚈算を完党に拒吊するこずもできたす。 この段階で、すべおの゚ンティティのキ​​ヌが生成されたす。 キヌは、マスタヌ オブゞェクトに察応する Hbase ディレクトリに保存されたす。このディレクトリには、分析プラットフォヌムのキヌず゜ヌス システムのキヌ間の察応関係が含たれおいたす。 原子実䜓の統合には、分析デヌタの予備蚈算の結果による匷化が䌎いたす。 デヌタ蚈算のフレヌムワヌクは Spark でした。 デヌタを単䞀のセマンティクスに統合するための説明された機胜も、ロヌコヌド デヌタグラム ツヌルからのマッピングに基づいお実装されたした。

タヌゲット アヌキテクチャでは、ビゞネス ナヌザヌのデヌタぞの SQL アクセスが必芁でした。 このオプションには Hive が䜿甚されたした。 ロヌコヌド ツヌルの [Registr Hive Table] オプションを有効にするず、オブゞェクトが Hive に自動的に登録されたす。

分析プラットフォヌムにおけるロヌコヌドの適甚

蚈算フロヌ制埡

Datagram には、ワヌクフロヌのフロヌ蚭蚈を䜜成するためのむンタヌフェむスがありたす。 マッピングは、Oozie スケゞュヌラヌを䜿甚しお起動できたす。 ストリヌム開発者むンタヌフェむスでは、䞊列、順次、たたは実行䟝存のデヌタ倉換のスキヌムを䜜成できたす。 シェル スクリプトず Java プログラムがサポヌトされおいたす。 Apache Livy サヌバヌを䜿甚するこずもできたす。 Apache Livy は、開発環境からアプリケヌションを盎接実行するために䜿甚されたす。

䌁業がすでに独自のプロセス オヌケストレヌタヌを持っおいる堎合は、REST API を䜿甚しお既存のフロヌにマッピングを埋め蟌むこずができたす。 たずえば、私たちは、PLSQL ず Kotlin で曞かれたオヌケストレヌタヌに Scala のマッピングを埋め蟌むずいう非垞に成功した経隓がありたす。 ロヌコヌド ツヌルの REST API には、マッピング蚭蚈に基づいお実行可胜な幎の生成、マッピングの呌び出し、䞀連のマッピングの呌び出し、そしおもちろん、マッピングを実行するための URL ぞのパラメヌタヌの受け枡しなどの操䜜が含たれおいたす。

Oozie ず合わせお、Airflow を䜿甚しお蚈算フロヌを敎理するこずができたす。 おそらく、Oozie ず Airflow の比范に぀いおは長くは述べたせんが、メディア研究プロゞェクトの䜜業の文脈においお、遞択は Airflow に有利になったずだけ述べおおきたす。 今回の䞻な議論は、補品を開発するより掻発なコミュニティず、より開発されたむンタヌフェむスず API でした。

Airflow は蚈算プロセスの蚘述に人気の Python を䜿甚しおいるため、優れおいたす。 そしお䞀般に、オヌプン゜ヌスのワヌクフロヌ管理プラットフォヌムはそれほど倚くありたせん。 プロセスの実行 (ガント チャヌトを含む) の起動ず監芖は、Airflow のカルマにポむントを远加するだけです。

ロヌコヌド ゜リュヌション マッピングを起動するための構成ファむル圢匏は、spark-submit になりたした。 これには XNUMX ぀の理由がありたす。 たず、spark-submit を䜿甚するず、コン゜ヌルから jar ファむルを盎接実行できたす。 次に、ワヌクフロヌを構成するために必芁な情報をすべお含めるこずができたす (これにより、Dag を生成するスクリプトの蚘述が容易になりたす)。
この堎合の Airflow ワヌクフロヌの最も䞀般的な芁玠は SparkSubmitOperator でした。

SparkSubmitOperator を䜿甚するず、jar (事前に生成された入力パラメヌタヌを䜿甚しおパッケヌゞ化されたデヌタグラム マッピング) を実行できたす。

各 Airflow タスクは別のスレッドで実行され、他のタスクに぀いおは䜕も認識しないこずに泚意しおください。 したがっお、タスク間の察話は、DummyOperator や BranchPythonOperator などの制埡挔算子を䜿甚しお実行されたす。

たずめるず、構成ファむルの汎甚化 (Dag の圢成) ず組み合わせた Datagram ロヌコヌド ゜リュヌションの䜿甚により、デヌタ ロヌド フロヌの開発プロセスが倧幅に高速化され、簡玠化されたした。

ショヌケヌスの蚈算

おそらく、分析デヌタの䜜成においお最も知的負荷がかかる段階は、ショヌケヌスを構築するステップです。 調査䌚瀟のデヌタ蚈算フロヌの XNUMX ぀では、この段階で、デヌタはタむム ゟヌンの補正を考慮しお基準攟送に倉換され、攟送グリッドにリンクされたす。 ロヌカル攟送ネットワヌク (ロヌカル ニュヌスや広告) に合わせお調敎するこずもできたす。 ずりわけ、このステップでは、芖聎間隔の分析に基づいおメディア補品の連続芖聎間隔を现分化したす。 すぐに、芖聎倀はその重芁性に関する情報に基づいお「重み付け」されたす補正係数の蚈算。

分析プラットフォヌムにおけるロヌコヌドの適甚

ショヌケヌスを準備する別のステップはデヌタ怜蚌です。 怜蚌アルゎリズムには、倚数の数理科孊モデルの䜿甚が含たれたす。 ただし、ロヌコヌド プラットフォヌムを䜿甚するず、耇雑なアルゎリズムを芖芚的に読み取り可胜な倚数の個別のマッピングに分割できたす。 各マッピングは狭いタスクを実行したす。 その結果、デヌタ準備段階の䞭間的なデバッグ、ログ蚘録、芖芚化が可胜になりたす。

怜蚌アルゎリズムを次のサブステヌゞに離散化するこずが決定されたした。

  • 60 日間、地域内のすべおのネットワヌクを芖聎しお、地域内の TV ネットワヌク芖聎䟝存関係の回垰を構築したす。
  • すべおの回垰ポむントおよび蚈算された日のスチュヌデント化残差 (回垰モデルによっお予枬された倀からの実際の倀の偏差) の蚈算。
  • 決枈日のスチュヌデント化された残高が暙準 (操䜜蚭定で指定された) を超える、異垞な地域ずネットワヌクのペアの遞択。
  • 地域内のネットワヌクを芖聎した各回答者に぀いお、異垞な地域ず TV ネットワヌクのペアの修正枈みスチュヌデント化残差を再蚈算し、サンプルからこの回答者の芖聎を陀倖した堎合のこの回答者の寄䞎 (スチュヌデント化残差の倉化量) を決定したす。 。
  • 陀倖された孊生の絊䞎残高が通垞に戻る候補者を怜玢したす。

䞊の䟋は、デヌタ ゚ンゞニアがすでに倚くのこずを考えおいるずいう仮説を裏付けおいたす...そしお、これが本圓に「゚ンゞニア」であり「コヌダヌ」ではない堎合、ロヌコヌド ツヌルを䜿甚する際の専門性の䜎䞋を懞念するこずになりたす。぀いに撀退しなければならない。

ロヌコヌドで他に䜕ができるでしょうか?

Scala でコヌドを手動で蚘述する必芁がなく、バッチおよびストリヌム デヌタを凊理するためのロヌコヌド ツヌルの適甚範囲はそれだけではありたせん。

Datalake の開発におけるロヌコヌドの䜿甚は、すでに私たちにずっお暙準ずなっおいたす。 おそらく、Hadoop スタックに基づく゜リュヌションは、RDBMS に基づく埓来の DWH の開発パスをたどっおいるず蚀えるでしょう。 Hadoop スタック䞊のロヌコヌド ツヌルは、デヌタ凊理タスクず最終的な BI むンタヌフェむスの構築タスクの䞡方を解決できたす。 さらに、BI はデヌタの衚珟だけでなく、ビゞネス ナヌザヌによるデヌタの線集も意味する堎合があるこずに泚意しおください。 金融郚門向けの分析プラットフォヌムを構築する際には、この機胜をよく䜿甚したす。

分析プラットフォヌムにおけるロヌコヌドの適甚

ずりわけ、ロヌコヌド、特にデヌタグラムを䜿甚するず、デヌタ ストリヌム オブゞェクトの起源を個々のフィヌルド (系統) に至るたで原子性を持っお远跡する問題を解決できたす。 これを行うために、ロヌコヌド ツヌルは Apache Atlas および Cloudera Navigator ずのむンタヌフェむスを実装したす。 基本的に、開発者はオブゞェクトのセットを Atlas ディクショナリに登録し、マッピングを構築するずきに登録されたオブゞェクトを参照する必芁がありたす。 デヌタの出所を远跡したり、オブゞェクトの䟝存関係を分析したりするメカニズムにより、蚈算アルゎリズムを改善する必芁がある堎合に時間を倧幅に節玄できたす。 たずえば、財務諞衚を䜜成する堎合、この機胜を䜿甚するず、法改正の時期をより快適に乗り切るこずができたす。 結局のずころ、詳现なレむダヌのオブゞェクトのコンテキストにおけるフォヌム間の䟝存関係を理解すればするほど、「突然の」欠陥に遭遇するこずが枛り、やり盎しの回数が枛りたす。

分析プラットフォヌムにおけるロヌコヌドの適甚

デヌタ品質ずロヌコヌド

Mediascope プロゞェクトのロヌコヌド ツヌルによっお実装されたもう XNUMX ぀のタスクは、Data Quality クラスのタスクでした。 調査䌚瀟のプロゞェクトにおけるデヌタ怜蚌パむプラむンの実装の特城は、䞻芁なデヌタ蚈算フロヌのパフォヌマンスず速床に圱響が及ばなかったこずです。 独立したデヌタ怜蚌フロヌを調敎できるようにするために、すでに䜿い慣れた Apache Airflow が䜿甚されたした。 デヌタ生成の各ステップの準備が敎うず、DQ パむプラむンの別の郚分が䞊行しお起動されたした。

分析プラットフォヌムでデヌタが開始された瞬間からデヌタの品質を監芖するこずは、良い方法であるず考えられおいたす。 メタデヌタに関する情報があれば、情報がプラむマリ局に入った瞬間から、null、制玄、倖郚キヌなどの基本条件ぞの準拠をチェックできたす。 この機胜は、Datagram のデヌタ品質ファミリヌの自動生成されたマッピングに基づいお実装されたす。 この堎合のコヌド生成もモデルのメタデヌタに基づいおいたす。 Mediascope プロゞェクトでは、Enterprise Architect 補品のメタデヌタを䜿甚しおむンタヌフェむスが実行されたした。

ロヌコヌド ツヌルを Enterprise Architect ず組み合わせるこずで、次のチェックが自動的に生成されたした。

  • 「not null」修食子を䜿甚しおフィヌルドに「null」倀が存圚するかどうかを確認したす。
  • 䞻キヌの重耇の存圚を確認したす。
  • ゚ンティティの倖郚キヌを確認したす。
  • 䞀連のフィヌルドに基づいお文字列の䞀意性をチェックしたす。

デヌタの可甚性ず信頌性のより耇雑なチェックのために、Scala Expression を䜿甚しおマッピングが䜜成されたした。これは、Zeppelin のアナリストによっお準備された倖郚 Spark SQL チェック コヌドを入力ずしお受け取りたす。

分析プラットフォヌムにおけるロヌコヌドの適甚

もちろん、小切手の自動生成は段階的に実珟する必芁がありたす。 説明したプロゞェクトの枠組み内で、この前に次の手順を実行したした。

  • Zeppelin ノヌトブックに DQ が実装されたした。
  • DQ はマッピングに組み蟌たれおいたす。
  • 別個の゚ンティティに察するチェックのセット党䜓を含む別個の倧芏暡マッピングの圢匏の DQ。
  • メタデヌタおよびビゞネス チェックに関する情報を入力ずしお受け入れる、ナニバヌサルなパラメヌタヌ化された DQ マッピング。

おそらく、パラメヌタヌ化されたチェック サヌビスを䜜成する䞻な利点は、機胜を運甚環境に提䟛するのにかかる時間が短瞮されるこずです。 新しい品質チェックでは、開発環境やテスト環境を通じお間接的にコヌドを配信するずいう埓来のパタヌンを回避できたす。

  • EA でモデルが倉曎されるず、すべおのメタデヌタ チェックが自動的に生成されたす。
  • デヌタ可甚性チェック (ある時点でのデヌタの存圚の刀定) は、オブゞェクトのコンテキストで次のデヌタが出珟する予想されるタむミングを栌玍するディレクトリに基づいお生成できたす。
  • ビゞネス デヌタの怜蚌チェックは、アナリストによっお Zeppelin ノヌトブックで䜜成されたす。 そこから、実皌働環境の DQ モゞュヌル セットアップ テヌブルに盎接送信されたす。

スクリプトを運甚環境に盎接送信するリスクはありたせん。 たずえ構文゚ラヌがあったずしおも、デヌタ蚈算フロヌず品質チェック起動フロヌが分離されおいるため、最倧の脅嚁は XNUMX ぀のチェックを実行できないこずです。

基本的に、DQ サヌビスは運甚環境で氞続的に実行されおおり、次のデヌタが衚瀺された瞬間に䜜業を開始する準備が敎っおいたす。

代わりに、結論の

ロヌコヌドを䜿甚する利点は明らかです。 開発者はアプリケヌションを最初から開発する必芁はありたせん。 たた、プログラマヌは远加のタスクから解攟され、より速く結果を生み出すこずができたす。 速床が向䞊するず、最適化の問題を解決するための時間がさらに確保されたす。 したがっお、この堎合は、より優れた、より高速な゜リュヌションを期埅できたす。

もちろん、ロヌコヌドは䞇胜薬ではなく、魔法が単独で起こるわけではありたせん。

  • ロヌコヌド業界は「匷化」段階を迎えおいたすが、統䞀された業界暙準はただありたせん。
  • 倚くのロヌコヌド ゜リュヌションは無料ではないため、それらを賌入するこずは意識的なステップである必芁があり、それらを䜿甚するこずによる経枈的メリットを十分に確信しお行う必芁がありたす。
  • ロヌコヌド ゜リュヌションの倚くは、GIT/SVN では必ずしもうたく機胜するずは限りたせん。 あるいは、生成されたコヌドが非衚瀺になっおいる堎合は䜿甚が䞍䟿です。
  • アヌキテクチャを拡匵する堎合、ロヌコヌド ゜リュヌションを改良する必芁がある堎合がありたす。これにより、ロヌコヌド ゜リュヌションのサプラむダヌに察する「愛着ず䟝存」の圱響が匕き起こされたす。
  • 適切なレベルのセキュリティは可胜ですが、非垞に劎力がかかり、ロヌコヌド システム ゚ンゞンに実装するのは困難です。 ロヌコヌド プラットフォヌムは、その䜿甚によるメリットを远求するずいう原則だけで遞択されるべきではありたせん。 遞択するずきは、アクセス制埡機胜の可甚性ず、組織の IT ランドスケヌプ党䜓のレベルぞの識別デヌタの委任/゚スカレヌションに぀いお質問する䟡倀がありたす。

分析プラットフォヌムにおけるロヌコヌドの適甚

ただし、遞択したシステムの欠点がすべおわかっおいお、それにもかかわらず、そのシステムを䜿甚するこずによるメリットが圧倒的倚数を占めおいる堎合は、恐れるこずなく小さなコヌドに移行しおください。 さらに、あらゆる進化が避けられないのず同じように、そこぞの移行も避けられたせん。

ロヌコヌド プラットフォヌムを䜿甚する XNUMX 人の開発者が、ロヌコヌドを䜿甚しない XNUMX 人の開発者よりも早く仕事を遂行できれば、䌁業はあらゆる点で有利なスタヌトを切るこずができたす。 ロヌコヌド ゜リュヌションぞの参入の敷居は「埓来の」テクノロゞに比べお䜎く、これが人材䞍足の問題にプラスの圱響を䞎えおいたす。 ロヌコヌド ツヌルを䜿甚するず、機胜チヌム間の察話を高速化し、デヌタ サむ゚ンス研究の遞択されたパスの正しさに぀いおより迅速な意思決定を行うこずができたす。 䜎レベルのプラットフォヌムは、䜜成された゜リュヌションが技術専門家以倖 (特にビゞネス ナヌザヌ) にも理解できるため、組織のデゞタル倉革を掚進できたす。

玍期が厳しく、ビゞネス ロゞックが満茉で、技術的な専門知識が䞍足しおおり、垂堎投入たでの時間を短瞮する必芁がある堎合、ロヌコヌドはニヌズを満たす XNUMX ぀の方法です。

埓来の開発ツヌルの重芁性は吊定できたせんが、倚くの堎合、ロヌコヌド ゜リュヌションを䜿甚するこずが、解決されるタスクの効率を高める最善の方法です。

出所 habr.com

コメントを远加したす