12

テーブルをクエリするとき、SerDeはファイル内のバイトからデータの行を操作するためにHiveによって内部的に使用されるオブジェクトにデータの行を逆シリアル化します。INSERTまたはCTAS(441ページの「データのインポート」を参照)を実行すると、テーブルのSerDeは、データ行のHiveの内部表現を出力ファイルに書き込まれるバイトにシリアル化します

  1. serDeライブラリですか?
  2. ハイブはどのようにデータを保存しますか?つまり、ファイルまたはテーブルに保存しますか?
  3. 大胆な文章を明確に説明できる人はいますか?ハイブは初めてです!!
4

4 に答える 4

13

回答

  1. はい、SerDeはHadoopAPIに組み込まれているライブラリです
  2. Hiveは、HDFSやその他のストレージ(FTP)などのファイルシステムを使用してデータを保存します。ここでのデータは、テーブル(行と列)の形式です。
  3. SerDe-シリアライザー、デシリアライザーは、レコード(行)を処理する方法をハイブに指示します。Hiveを使用すると、半構造化(XML、電子メールなど)または非構造化レコード(オーディオ、ビデオなど)も処理できます。たとえば、1000 GB相当のRSSフィード(RSS XML)がある場合。それらをHDFS内の場所に取り込むことができます。HiveがXMLファイルをHiveテーブルにロードする方法などを認識できるように、XML構造に基づいてカスタムSerDeを作成する必要があります。

SerDeの書き方の詳細については、この投稿をお読みください

于 2013-01-30T15:08:18.847 に答える
9

この側面では、Hiveをある種のデータベースエンジンと見なすことができます。このエンジンは、レコードから作成されたテーブルで動作しています。
Hive(およびその他のデータベース)を独自の内部形式で動作させる場合、問題はありません。
Hiveに独自のファイルをテーブル(外部テーブル)として処理させたい場合は、ファイル内のデータをレコードに変換する方法をHiveに通知する必要があります。これはまさにSerDeの役割です。これは、Hiveがデータの読み取り/書き込みを可能にするプラグインとして見ることができます。
たとえば、CSVで作業したいとします。これはCSV_Serdeの例です https://github.com/ogrodnek/csv-serde/blob/master/src/main/java/com/bizo/hive/serde/csv/CSVSerde.java メソッドserializeはデータを読み取り、 CSVであると仮定してフィールドに切り刻む
メソッドdeserializeはレコードを取得し、CSVとしてフォーマットします。

于 2013-01-30T15:31:24.987 に答える
1

Hiveは、(1)複素数データ型(struct、array、unions)(2)SerDeを使用して、半構造化データと非構造化データも分析できます。

SerDeインターフェースを使用すると、レコードの処理方法をハイブに指示できます。Serializerは、ハイブが処理しているJavaオブジェクトを取得し、それをハイブが格納できるものに変換し、Deserializerは、レコードのバイナリ表現を取得して、ハイブが操作できるJavaオブジェクトに変換します。

于 2017-12-11T18:11:01.520 に答える
0

上記には、シリアル化と逆シリアル化の概念があります。シリアル化は書き込み時に行われ、構造化データはストレージ用にビット/バイトストリームにシリアル化されます。読み取り時に、データはビット/バイトストレージ形式からリーダーに必要な構造に逆シリアル化されます。たとえば、Hiveには行と列のような構造が必要ですが、hdfsはデータをビット/バイトブロックで格納するため、書き込み時にシリアル化、読み取り時に逆シリアル化します。

于 2016-10-31T19:12:56.393 に答える