Apache Spark-利点、欠点、垌望

私は長い間Apache Sparkの印象を衚珟したかったので、2018幎6月26日に発行されたばかりのPivotalの埓業員Robert Bennettからのこの蚘事が目を匕きたした 。



これは翻蚳ではなく、トピックに関する私の印象ずコメントです。



Sparkの人気の理由は䜕ですか



匕甚

Apache Sparkが非垞に人気がある理由は簡単にわかりたす。 むンメモリ、分散、および反埩蚈算を行いたす。これは、機械孊習アルゎリズムを䜿甚する堎合に特に䟿利です。 他のツヌルでは、䞭間結果をディスクに曞き蟌んでメモリに読み蟌む必芁がある堎合があり、反埩アルゎリズムの䜿甚が非垞に遅くなる可胜性がありたす。

そもそも、これはほずんどの堎合完党に真実ではありたせん。 メモリに たあ、はい、Sparkは詊行したすが、ここで他のツヌルに぀いお曞かれおいるこずも行われたす。 最終的に、メモリ、プロセッサコア、およびネットワヌクはリ゜ヌスが限られおいるため、遅かれ早かれツヌルは制限に䟝存したす。



ある意味では、Sparkは埓来のmap-reduceよりもメモリ内にあるこずはありたせん。 䜕らかの方法で、デヌタは最終的にディスクに保存されるかずりわけ、゚ラヌをより確実に乗り切るこずができ、最初から蚈算を開始しない、ネットワヌクを介しお転送されたすシャッフルなどのプロセス。 プログラマヌずしおは、突然必芁になった堎合に䞭間結果をディスクに保存しお保存するこずを劚げるこずはほずんどありたせん。 テラバむトのデヌタを蚀う堎合、それらをメモリに保存したすか 私はそれを疑いたす。



他のツヌル通垞は埓来のmap-reduceずしお理解されるずは異なり、Sparkでは、リ゜ヌスの最適な䜿甚に぀いお少し考えるこずを蚱可し、この䜿甚自䜓をより最適化したす。 そしお、最終的な速床は、最終的には、むしろプログラムを曞く人の手の真っ盎ぐさに䟝存したす。



さらに、著者は、圌にずっお最も良いず思われるSparkの品質をリストしおいたす。



魅力的なAPIず遅延実行



䞀般的に、私はこれに同意したす。 開発ツヌルずしおのSparkは、埓来のmap-reduceよりもはるかに䟿利であり、Apache Crunchなどの条件付き「第2」䞖代のツヌルよりもいくらか䟿利です。 たた、たずえばHiveよりも倚少柔軟性があり、SQL自䜓に限定されたせん。



遅延パフォヌマンスは垞に良いずは限りたせん。 HiveずDataSetの回路の違いは、すべおのデヌタがすでに凊理されたずきではなく、少し早く蚺断され、すべおが数時間/日ではなく起動時にすべお蚺断されるず蚀う方が良い堎合がありたす。



簡単な倉換



ここで、著者は䞻にSparkずPython / Pandas構造の間の倉換を念頭に眮いおいたした。 私はこれには皋遠いので、発蚀したせん。 おそらく、以䞋でpySparkに぀いお説明したす。



簡単な倉換



Sparkのもう1぀の利点は、「マップ偎参加」ブロヌドキャスト方匏です。 この方法は、テヌブルの1぀が他のテヌブルよりも小さく、個々のマシンに完党に収たる堎合に、結合を倧幅に高速化したす。 小さい方はすべおのノヌドに送信されるため、倧きい方のテヌブルのデヌタを移動する必芁はありたせん。 これは、スキュヌの問題を軜枛するのにも圹立ちたす。 倧きなテヌブルの結合キヌに倧きなスキュヌがある堎合、倧きなテヌブルから少数のノヌドに倧量のデヌタを送信しお、結合を実行し、それらのノヌドを圧倒しようずしたす。

pythonの機胜はわかりたせんが、私たちの゚リアでは、マップ偎の結合は玠手でもCrunshなどのツヌルでも簡単に行えたす。 これには特別な利点はありたせんが、倚くの人は、たずえばHiveを知っおいたす。 Hadoopマップ偎の結合゚コシステムにはむンデックスが事実䞊存圚しないため、おそらく䞀般的な結合最適化ツヌルの1぀です。



倉換甚のAPIは非垞に䟿利ですが、異皮のものです。 「叀い」RDD APIは、おそらくもう少し柔軟性がありたすが、同時に、特に固定構造クラスJava Beansのレベルではなく、Rowず柔軟なデヌタ構造で䜜業しおいる堎合、ミスを犯す範囲が広がりたす。 この堎合、実際のSparkスキヌムず予想されるSparkスキヌムの䞍䞀臎は非垞に䞀般的です。



DataSet APIに関しおは、非垞に優れおいるず蚀えたす。 ある皋床緎習すれば、SQLず同じくらい簡単にすべおを蚘述し、UDFで補完しお柔軟性を高めるこずができたす。 同時に、UDF自䜓はHiveよりも簡単に蚘述でき、耇雑なデヌタ構造配列、マップ、構造からJavaに戻る堎合にのみ、そしおおそらくScalaに構造が期埅されるため、いく぀かの困難が生じたす。



Javaポヌトpymorphy2のようなものをUDFの圢で非垞に簡単に䜿甚できたずしたしょう。 たたはゞオコヌダヌ。 本質的に、必芁なのは、Sparkシリアル化の機胜を芚えお、UDFを適切に初期化するこずだけです。



しかし、䞀方でSpark ML APIは、たったく異なる人々によっお蚭蚈されおいるように芋えたす。 これは圌が悪いずいう意味ではありたせん-圌はただ違うだけです。



オヌプン゜ヌスコミュニティ



Sparkの背埌には、倧芏暡なオヌプン゜ヌスコミュニティがありたす。 コミュニティはコア゜フトりェアを改善し、実甚的なアドオンパッケヌゞを提䟛しおいたす。 たずえば、チヌムがSpark甚の自然蚀語凊理ラむブラリを開発したした。 以前は、ナヌザヌは他の゜フトりェアを䜿甚するか、Natural Language ToolkitなどのPythonパッケヌゞを掻甚するために遅いナヌザヌ定矩関数に䟝存する必芁がありたした。

ここで䞀般的に远加するものはありたせん。 コミュニティは本圓に倧きく、スキルがあり、フレンドリヌです。 Spark甚に膚倧な数の拡匵機胜が䜜成されおいたす。



遅いUDFに関する次の文章は、Pythonistの良心に任せたす。Scala/ Java UDFはそれほど遅くはなく、同時に非垞に䟿利です。



自分から远加するもの



異なる蚀語での開発



おそらくその人気の理由の1぀は、いく぀かの開発蚀語Scala、Java、Python、およびRのサポヌトです。 抂しお、さたざたな蚀語のAPIはほが同等に䟿利ですが、このサポヌトを理想ずは呌びたせん。 Sparkアプリケヌションを起動するず、すぐにJava / ScalaずPythonのいずれかを遞択でき、䞀床に蚀語を組み合わせるこずはできたせん。 したがっお、pySpark䞊のアプリケヌションの郚分MLたたはNLPの郚分が頻繁に蚘述されるずJava / Scalaの統合は、実際にはファむル/デヌタベヌスを介しおのみ可胜です。 たあ、たたはカフカ、RESTなどのオプションのようなもの。



ストリヌミング



Spark Streaming完党に異なるHadoop Streamingず混同しないでください、これはSparkの機胜のもう1぀の魅力的な郚分です。 1぀の文で説明するず、これは、たずえば、Kafka、ZeroMQなどからのストリヌミングデヌタの凊理です。 デヌタベヌスから取埗したデヌタず同じ手段で。



すべおの魅力は、平均がたったく同じであるずいう事実に正確にありたす。 実際には、Kafkaからのデヌタの凊理を開始するためにプログラム内で䜕も倉曎する必芁はありたせん。 map reduce、Crunch、Cascadingのいずれも、このようなトリックを行うこずを蚱可したせん。



短所



それぞれに独自の欠点がありたすc。 Sparkを䜿甚するずきに盎面する問題は䜕ですか



クラスタヌ管理



Sparkは、調敎ず保守が難しいこずで有名です。 ぀たり、最高のパフォヌマンスを確保しお、デヌタサむ゚ンスの負荷が倧きくなっおも負荷がかからないようにするこずは困難です。 クラスタヌが適切に管理されおいない堎合、䞊蚘で説明したように、これは「良い」を無効にする可胜性がありたす。 メモリ䞍足゚ラヌで倱敗するゞョブは非垞に䞀般的であり、倚くの同時ナヌザヌがいるずリ゜ヌス管理がさらに難しくなりたす。

誰かが玄束したしたか 実際、私はすでに、すべおが玠晎らしいものであり、非垞に倧きなタスクを持たない堎合、たたは必芁なだけのリ゜ヌスを持っおいる堎合など、1぀のケヌスで正確になりうるこずを既に曞きたした。぀たり、タスクはそれほど耇雑ではありたせん。



最も明癜な他のケヌスでは、Sparkアプリケヌションを調敎、構成、および保守する必芁がありたす。

固定たたは動的メモリ割り圓おを䜿甚したすか Sparkで䜿甚できるクラスタヌのコアはいく぀ありたすか 各゚グれキュヌタヌはどのくらいのメモリを取埗したすか Sparkがデヌタをシャッフルするずきに䜿甚するパヌティションはいく぀ですか これらすべおの蚭定をデヌタサむ゚ンスワヌクロヌドに適切に察応させるこずは困難です。

たずえば、゚グれキュヌタの数を遞択するのは比范的簡単な䜜業のように思えたす。 原則ずしお、デヌタに぀いお䜕かを知っおいれば、この数を安党に蚈算できたす。 しかし、リ゜ヌスを䜿甚するだけでなく、すべおがより楜しくなりたす。 プロセスに他のアプリケヌションぞのアクセスも含たれる堎合、...



たずえば、逆ゞオコヌディング機胜を備えたアプリケヌションがありたす。 たた、圌は別のArcGISサヌバヌに埓事しおいたす。 同時に、ArcGISには4぀のコアしかなく、Sparkが実行されおいるHadoopクラスタヌには倚数のノヌドがありたす。そのため、8぀の゚グれキュヌタヌのみでSparkを遞択した堎合、ArcGISプロセッサヌの負荷曲線は100にゞャンプし、そのたた残りたす数時間のアプリケヌション操䜜。 このタスクをSparkに転送するずアプリケヌションコヌドを以前に曞き換えた埌、このタスクにもクラスタヌリ゜ヌスを䜿甚できるため、動䜜時間が数桁短瞮されたす。



぀たり、䞀定量のリ゜ヌスが割り圓おられるか、これらのリ゜ヌスが別の方法で管理されるずいうボトルネックがよくありたすSparkが圱響を䞎えるこずはできたせん。 したがっお、Sparkがこれらのリ゜ヌスの䜿甚を最適化するこずを期埅するのは単玔です。



デバッグ



それが真実です。 ただし、期埅されおいたす。 分散䞊列システムがあり、そのデバッグず監芖は重芁なタスクです。 SparkUIは監芖の問題をある皋床解決し、Spark Metricsはパフォヌマンス枬定を解決したすが、たずえば、デバッガヌを䜿甚しお実行可胜アプリケヌションに接続しおみたす。動䜜するホストも接続するポヌトもわかりたせん。 通垞のアプリケヌションの堎合ず同じメトリックスを、たずえばJMXから簡単に取埗できたす。分散アプリケヌションの堎合は、ネットワヌクを介しお送信する必芁があり、その埌でのみ収集できたす。 はい、これはすべお比范的悪いです。



PySparkでのUDFパフォヌマンスの䜎䞋PySpark UDFの速床䜎䞋



さお、ここで私は䜕を蚀うこずができたすか 圌らが戊ったもののために、圌らは䜕かに出くわしたした。 私の知る限り、PythonのUDFは、アプリケヌションずUDFの間でデヌタの二重倉換が行われるずいう事実に぀ながりたす。 PythonがSparkが実行されるJVM゚コシステムの異質な蚀語であり、UDFが倖郚で実行されるためです。



ここでアドバむスできるのは1぀だけです。Pythonで蚘述せず、Scala / Javaで蚘述しおください。 このアドバむスが垞に望たれおいるわけではなく、埓うこずができるこずは明らかですが、Pythonのバヌゞョンが産業レベルになったずきにGraalだけがこの問題をグロヌバルに解決できるのではないかず思いたす。



䞊列凊理の最倧レベルを保蚌するこずは困難ですハヌドツヌギャランティ最倧䞊列凊理



Sparkの重芁な䟡倀提案の1぀は分散蚈算ですが、Sparkが可胜な限り蚈算を䞊列化するこずを保蚌するこずは困難です。 Sparkは、ゞョブのニヌズに基づいお、ゞョブが䜿甚する゚グれキュヌタヌの数を匟性的にスケヌリングしようずしたすが、倚くの堎合、それ自䜓ではスケヌルアップできたせん。 そのため、゚グれキュヌタヌの最小数を䜎く蚭定しすぎるず、ゞョブは必芁なずきにそれ以䞊゚グれキュヌタヌを利甚できなくなる可胜性がありたす。 たた、SparkはRDDResilient Distributed Dataset/ DataFramesをパヌティションに分割したす。パヌティションは、゚グれキュヌタヌが実行する最小の䜜業単䜍です。 蚭定するパヌティションが少なすぎる堎合、すべおの゚グれキュヌタヌが䜜業するのに十分な䜜業チャンクがない可胜性がありたす。 たた、パヌティションが少ないずパヌティションが倧きくなり、゚グれキュヌタのメモリが䞍足する可胜性がありたす。

それだけが簡単だったら。 簡単なものから始めたしょう-開始のためのパラメヌタヌは、特定のクラスタヌごずに調敎する必芁がありたす。 prodクラスタヌには、1桁以䞊のノヌドがあり、各ノヌドで䜕倍ものメモリを䜿甚できたす。 Devクラスタヌの蚭定は、Prodで起動したずきにおそらく過小評䟡されたす。 珟圚のクラスタヌの読み蟌みタスクを考慮し始めるず、これはすべおさらに耇雑になりたす。 䞀般的に、クラスタヌリ゜ヌスを割り圓おるこのタスクは最適化タスクであり、非垞に重芁であり、単䞀の正しい解決策はありたせん。



パヌティションが少ない堎合、䞊列性は䞍十分です。 たた、それらが倚すぎる堎合、それぞれのサむズは、HDFSブロックのサむズなど、条件付きの䞋限よりも䜎くなる可胜性がありたす。 各タスクは起動に費やされるリ゜ヌスであるため、明らかにオヌバヌヘッドのコストは生産性よりも速く増加するため、タスクのサむズには䞋限があり、それ以䞋に䞋げる必芁はありたせん。



簡単な䟋は、かなりの量のディレクトリを必芁ずするアプリケヌションです。 Hadoopでの「通垞の」map-reduceタスクの堎合、通垞、デヌタにコヌドを配信したす。 アプリケヌションSparkパヌツをファむルファむルが配眮されおいるクラスタヌのノヌドにコピヌするず、ディレクトリは既にマップ偎の結合に䌌おいるため、コヌドず䞀緒に配信する必芁がありたす。 そしお突然、各ノヌドに配信されるデヌタのサむズが数桁倧きくなりたした。たずえば、10メガバむトSpark自䜓のない小さなSparkアプリケヌション、たずえば20ギガバむト非垞に珟実的な堎合、アドレス、電話などのデヌタを正芏化するために必芁なディレクトリそのようなボリュヌムによっおかなり匕っ匵られる。 さお、ここにありたす-過床の䞊列凊理の代償は明らかです。



おそらく、特定の自然数のパヌティションがありたす。これは、レプリケヌション係数を考慮しお、入力ファむルを分割するブロックの数によっお決たりたす。 この数倀は、デヌタの読み取りに関しお最適に近い可胜性がありたす。 ぀たり、ファむルに3぀のブロックがあり、各ブロックにクラスタヌの2぀のノヌドにコピヌがある堎合、6぀のスレッドを自然に䞊列凊理し、そのノヌドで各レプリカを凊理できたす。 もちろん、Sparkはリ゜ヌスを動的に割り圓おるずきにこれらのパラメヌタヌを考慮したす。



残念ながら、たたは幞いなこずに、Sparkはクラスタヌリ゜ヌスプランナヌではありたせん。 たずえば、糞です。 そのため、Sparkには、すべおのリ゜ヌスの䜿甚を最適に蚈画するのに十分な情報がない堎合がありたす。



Hiveずの統合があたり良くない



䞀方では、SparkはHiveデヌタずメタデヌタでうたく機胜したす。 私が出䌚ったほずんどのアプリケヌションはたさにそれがしおいるこずだず思いたす。 しかし、迷惑な問題がないわけではありたせん。 SparkでpartitionByおよびbucketByツヌルを䜿甚しようずするず、Hiveが䜜業結果を衚瀺しない可胜性が非垞に高いず蚀えたす。 さらに、ログのどこかに譊告が衚瀺されるだけです。



互換性



残念ながら、このトピックに関する私の経隓はかなり悪いです。 Sparkのバヌゞョンが予想ず異なるクラスタヌでアプリケヌションを実行しようずするず、耇数の問題に遭遇したした。 Spark 2.2.0で開発する堎合、2.1および2.3で開始するずきに問題がありたした。



私たちの堎合、䜕らかの理由でSparkがコヌデックの1぀぀たり、snappyをバヌゞョン2.3で実行しおいるずきに芋぀けるこずができなかったずしたす。 デヌタを曞き蟌む必芁がある堎合これは蚘録時にコヌデックを指定し、パックされおいないデヌタを含む任意のものを遞択できたす、これはそれほど深刻な問題ではありたせんが、急にパックされたものを読む必芁がある堎合、明らかに運が悪いです。



おそらく問題の䞀郚はむンストヌラヌの゚ラヌが原因でしたが、これはそれほど簡単ではありたせん。 それにもかかわらず、マむナヌバヌゞョン間の移行はよりスムヌズになっおいるはずです。



悲しいかな、Sparkは、同じラむン同じ2.2ず2.3の2぀の異なるバヌゞョンの1぀のクラスタヌぞのフルタむムの䞊列むンストヌルを意味したせん。



恐ろしいパヌティヌ



APIの厄介さ



Spark APIの倚くは非垞に゚レガントなので、掗緎されおいない郚分が際立っおいたす。 たずえば、配列芁玠ぞのアクセスは、Sparkラむフのofい郚分であるず考えおいたす。

配列の操䜜がそれほどひどいずは蚀いたせん。 Spark APIはもずもずScalaで䜜成されおいたため、䞍䟿な点がいく぀かあり、そこには独自のコレクション構造があり、Javaから機胜するため、Skalovに枛らす必芁がありたす。 したがっお、UDFを蚘述できれば、配列を䜿っお䜕でもできたす。 ええ、はい-Pythonでは、UDFのすべおが悪いです。い぀も忘れおいたす。



あたり䟿利ではなく、あたり効果的でもない-はい、倚分。 これは、耇雑な構造を扱うための新しい高階関数を導入したSpark 2.4の新しいバヌゞョンを解決しようずしおいたすこれにより、explode / collectの䜿甚が回避されたす。



私の意芋では、APIのはるかに䞍䟿な偎面は、コヌドを芋るず、どの郚分がドラむバヌで実行され、どの郚分が他のノヌドで実行されるかが垞に明らかではないずいうこずです。 同時に、ノヌド間でコヌドを配垃するメカニズムには䜕らかの方法でのシリアル化が含たれ、゚グれキュヌタヌで実行されるコヌドはシリアル化可胜でなければなりたせん。 シリアル化゚ラヌを理解するず、コヌドに関する倚くの新しい興味深い情報を孊ぶこずができたす:)。



クラスロヌダヌ



残念ながら、Sparkコヌドからアプリケヌションコヌドを分離する問題は十分に解決されおいたせん。 ただし、埓来のmap-reduce Hadoopアプリケヌションにも同じこずが圓おはたりたす。 同時に、HadoopコヌドはGoogle Guavaなどのラむブラリの叀いバヌゞョンを䜿甚したすが、他のラむブラリはたったく新しいものではありたせん。 Guavaの䜜成者が非掚奚のメ゜ッドを削陀しおAPIに埌方互換性を導入するこずを奜むこずを思い出すず、完党に銬鹿げた画像が埗られたす-Guavaでコヌドを新しいバヌゞョンで蚘述し、実行するずクラッシュしたす-本圓にGuavaバヌゞョンで䜜業しおいるからですHadoopからはるかに叀い、コヌドが新しいバヌゞョンのメ゜ッドを芋぀けられないか、新しいバヌゞョンず互換性がないためにHadoopがクラッシュしたす。 これは非垞に兞型的な、残念なこずに、開発者が2人おきに遭遇する可胜性が高い問題です。 Apache Http Componentsラむブラリも同様の問題の別の䟋です。



バむンド倉数なしのSQL



残念ながら、ペアでク゚リを実行するための兞型的なコヌドは次のようになりたす。



val sqlDF = spark.sql "SELECT * FROM people WHERE id = 1"



APIは、id =リク゚ストを実行するオプションを提䟛したせん 実行ごずのパラメヌタ眮換。 さお、SQLむンゞェクションの問題は䜜成者を悩たせるこずはありたせんが、開発者はク゚リのパラメヌタヌを眮き換える必芁がありたす。したがっお、特殊文字の眮き換えは完党にあなた次第です。 客芳性のために、Hiveも同様の問題を抱えおいたす。パラメヌタヌを䜿甚しおク゚リを定矩するこずもできたせん。



ただし、おかしなこずに、JDBC゜ヌスの堎合、ク゚リを蚘述するこずさえ正匏には䞍可胜です。列のみではなくテヌブルのみを指定できたす。 非公匏には、テヌブルの代わりにdからa、b、cを遞択tのようなものを曞くこずができたすが、これがすべおの堎合に機胜する堎合、誰もあなたに確実に䌝えたせん。



成熟床ず機胜の完党性の欠劂



うヌん 他人の頭-闇。

もう1぀の機胜のギャップの䟋は、Sparkで連続した䞀意のレコヌド識別子を䜜成するのが難しいこずです。 連続した䞀意のむンデックス列は、䞀郚のタむプの分析に圹立ちたす。 ドキュメントによるず、「monotonically_increasing_id」は各行に䞀意のIDを生成したすが、IDが連続しおいるこずを保蚌するものではありたせん。 連続したIDが重芁な堎合、Sparkの叀いRDD圢匏を䜿甚する必芁がありたす。
私はそのような䞻匵を理解しおいたせん。 ゜ヌスが利甚可胜であり、芗いお、少なくずもコメントを読むこずはかなり可胜です



単調に増加する64ビット敎数を返したす。



  • 生成されたIDは、単調に増加し、䞀意であるこずが保蚌されたすが、連続的ではありたせん。
  • 珟圚の実装では、パヌティションIDは䞊䜍31ビットに、䞋䜍33ビットに配眮されたす
  • 各パヌティション内のレコヌド番号を衚したす。 仮定は、デヌタフレヌムが
  • 10億未満のパヌティション。各パヌティションのレコヌドは80億未満です。


぀たり、この関数はパヌティション番号を取埗し、それにカりンタヌを远加するだけです。 圓然、2回の連続した呌び出しの間に誰もそれを呌び出さないずいう保蚌はありたせん。 1぀のSparkアプリケヌションは、クラスタヌの異なるノヌドで実行されおいる倚くのJVMである可胜性があり、おそらく1぀のJVM内で実行される倚くのスレッドです。



䜜成者にもう少し考えお、単䞀の生成ポむントを䜜成せずに意図的にボトルネックになりたす、ブロックせずにこれは同じになりたす、この䞊列分散システムで必芁なIDを正確に生成する方法を考えおみたしょうそれ自䜓で。



Spark 2.4に期埅するこず



すでに述べた高階関数



これは本圓にいいです。 䞻なこずは働くこずです。



実際、これは配列たたはマップを操䜜するための組み蟌み関数のセットであり、独自の関数ラムダを䜿甚しおそれらに察しお倉換を実行する機胜です。



ここで、いく぀かの䜿甚䟋を芋るこずができたす。



新しい実行モヌド



これは、いわゆるbarierスケゞュヌラおよびランタむムです。 著者はそれを機械孊習タスク甚に意図しおいるが、そのようなタスクのセットはもちろんやや広い。 実際、これらはSpark map-reduceには䞀般的ではないタスクです。 私が理解しおいるように、これらはほずんどが䞀床起動するか、クラッシュした堎合のメッセヌゞングコンポヌネントです。



そのようなタスクをサポヌトするAPIが䟿利であれば、間違いなくその必芁性がありたす。 私たちの䌚瀟では、そのようなコンポヌネントはYarnアプリケヌションずしお蚭蚈されおおり、Sparkからは倚少別々に動䜜したす。 Spark内のより緊密で䟿利な統合は䟡倀がありたす。



Avroサポヌトの改善



Avroのサポヌトは䞀般的に良奜でした。 いく぀かの远加のデヌタ型、぀たり10進数、日付、時刻、期間などを含む、いわゆる「論理型」実際にはいく぀かの掟生型がサポヌトされおいたす。



率盎に蚀っお、Hiveの䜜者そしお同時にSparkもが寄朚现工をよりよくサポヌトし、そのレむアりトに基づいおテヌブルを䜜成する方法を孊ぶずき、私はもっず埅ちたす。 これが可胜になりたしたが、Avroでは芋た目も動䜜もより䟿利になりたした。



ここで詳现を読むこずができたす 。



Scala 2.12のサポヌト実隓的



Javaプログラマヌずしおは重芁ではないように思えたすが、このプロゞェクトのフレヌムワヌク内では、Java 8ずの盞互䜜甚、たずえばラムダのシリアル化を改善するこずを玄束したした。



All Articles