Apache Hudiの事前検討(7)(sparkとの組み合わせ)

背景

現在、hudi と Spark のコレクションは依然として Spark データソース V1 に基づいています。hudi のソース実装をチェックして次のことを確認できます

class DefaultSource extends RelationProvider
  with SchemaRelationProvider
  with CreatableRelationProvider
  with DataSourceRegister
  with StreamSinkProvider
  with StreamSourceProvider
  with SparkAdapterSupport
  with Serializable {

ゴシップ

次に、Apache Hudi の予備調査 (2) (spark との組み合わせ)の残りを行います。

    val syncHiveSuccess = metaSync(sqlContext.sparkSession, writeConfig, basePath, df.schema)

これは主にデータをハイブ メタデータに同期するためです。hoodie.datasource.hive_sync.enableが有効な場合 (デフォルトは false、有効ではありません)、hoodie.datasource.meta.sync.enableはtrue に
設定されます(デフォルトは false、有効ではありません) ) Open)、同時に、HiveSyncToolクラスがsyncClientToolClassSetコレクションに追加されます。これは後続の呼び出しに便利です。もちろん、パーカー.meta.sync.client.tool.class が設定されている場合は、それも追加されますコレクションに。パーカー.datasource.meta.sync.enableが trueの場合、パーカー.データソース.hive_sync.schema_string_length_thresh は、 spark.sql.sources.schemaStringLengthThresholdがデフォルトで 4000設定されます。パーカー.meta_sync.spark.versioを現在の Spark バージョン設定します。セットパーカー.メタ .sync.metadata_file_listing



パーカー.metadata.enable (デフォルトは true) を指定し、 HiveSyncToolsyncHoodieTable
メソッドを呼び出してメタデータを同期します。MORテーブルには2 つのテーブルがあり、1 つはrtテーブル、もう 1 つはroテーブルで、それぞれスナップショットに対応します。リアルタイム テーブル) と読み取り最適化テーブルただし、hoodie.datasource.hive_sync.skip_ro_suffixtrue (デフォルトはfalse ) の場合、読み取り最適化テーブルはroサフィックスを追加せず、最終的に Spark で作成されたばかりのテーブルを更新します。したがって、挿入されたhudiテーブルはsparkクエリでクエリできます。


おすすめ

転載: blog.csdn.net/monkeyboy_tech/article/details/130798742