<commit_before>====================
Direct I/OのHive連携
====================

..  attention::
    Asakusa Framework バージョン |version| では、Direct I/O のHive連携機能は試験的機能として提供しています。

この文書では、Direct I/Oを使って `Apache Hive <https://hive.apache.org/>`_ （以下「Hive」）が対応するカラムナフォーマットのファイルを読み書きする方法について説明します。

Hiveの操作も含めたアプリケーション開発の全体の流れについては、 :doc:`../sandbox/asakusa-with-hive` も参照にしてください。

Hive連携モジュールの利用方法
============================

Direct I/OのHive連携モジュールを利用するには、利用するアプリケーションプロジェクトに対して以下のSDKアーティファクト（以下「Hive連携モジュールSDK」）を追加します。

..  list-table:: Direct I/OのHive連携で使用するアーティファクト
    :widths: 226 226
    :header-rows: 1

    * - グループID
      - アーティファクトID
    * - ``com.asakusafw.sdk``
      - ``asakusa-sdk-hive``

また、Hive連携モジュールの実行環境用のライブラリをAsakusa Frameworkのインストールディレクトリに追加します。

Gradleプロジェクトの設定
------------------------

GradleプロジェクトでHive 連携モジュール を使用する場合は ``build.gradleに対して`` 以下の定義を追加します。

* Framework Organizerに対してHiveの構成を有効化する
   * ``asakusafwOrganizer`` ブロックに ``hive.enabled true`` を追加
* Hive連携モジュールSDKを依存関係に追加する
   * ``dependencies`` ブロックの ``compile`` に対して ``asakusa-sdk-hive`` を 追加

以下、 ``build.gradleの`` 設定例です。

..  code-block:: groovy
    :emphasize-lines: 2,10
    
    asakusafwOrganizer {
        hive.enabled true
        profiles.prod {
            asakusafwVersion asakusafw.asakusafwVersion
        }
    }
    
    dependencies {
        ...
        compile group: 'com.asakusafw.sdk', name: 'asakusa-sdk-hive', version: asakusafw.asakusafwVersion
    }

上記の設定後、 ``installAsakusafw`` タスクを実行して開発環境のAsakusa Frameworkを再インストールします。

Eclipseを利用している場合は、 ``eclipse`` タスクを実行してEclipseのプロジェクト情報を再構成します。

..  attention::
    Hiveとの連携機能はMavenプロジェクトをサポートしていません。Hiveとの連携機能を利用する場合はGradleプロジェクトを利用してください。

カラムナフォーマットファイルの入出力
====================================

Direct I/OのHive連携モジュールを利用することで、Direct I/OからHiveが対応するカラムナフォーマットファイルの入出力を行うことができます。

Asakusa Frameworkのバージョン |version| では、Hiveが対応するカラムナフォーマットのうち、以下のフォーマットに対するファイルの入出力に対応しています。

* `ORC File <https://cwiki.apache.org/confluence/display/Hive/LanguageManual+ORC>`_
* `Parquet <https://cwiki.apache.org/confluence/display/Hive/Parquet>`_

モデルクラスの生成
==================

:doc:`csv-format` と同様に、データモデルクラス、及びファイル形式をマッピングする ``DataFormat`` の実装クラスは、DMDLコンパイラの拡張を利用して自動的に生成できます。<commit_msg>Revised directio/using-hive document (#420).<commit_after>====================
Direct I/OのHive連携
====================

..  attention::
    Asakusa Framework バージョン |version| では、Direct I/O のHive連携機能は試験的機能として提供しています。

この文書では、Direct I/Oを使って `Apache Hive <https://hive.apache.org/>`_ （以下「Hive」）が対応するカラムナフォーマットのファイルを読み書きする方法について説明します。

Hiveの操作も含めたアプリケーション開発の全体の流れについては、 :doc:`../sandbox/asakusa-with-hive` も参照にしてください。

Hive連携モジュールの利用方法
============================

Direct I/OのHive連携モジュールを利用するには、利用するアプリケーションプロジェクトに対して以下のSDKアーティファクト（以下「Hive連携モジュールSDK」）を追加します。

..  list-table:: Direct I/OのHive連携で使用するアーティファクト
    :widths: 226 226
    :header-rows: 1

    * - グループID
      - アーティファクトID
    * - ``com.asakusafw.sdk``
      - ``asakusa-sdk-hive``

また、Hive連携モジュールの実行環境用のライブラリをAsakusa Frameworkのインストールディレクトリに追加します。

Gradleプロジェクトの設定
------------------------

GradleプロジェクトでHive 連携モジュールを使用する場合は ``build.gradle`` に対して以下の定義を追加します。

* Framework Organizerに対してHiveの構成を有効化する
   * ``asakusafwOrganizer`` ブロックに ``hive.enabled true`` を追加
* Hive連携モジュールSDKを依存関係に追加する
   * ``dependencies`` ブロックの ``compile`` に対して ``asakusa-sdk-hive`` を 追加

以下、 ``build.gradle`` の設定例です。

..  code-block:: groovy
    :emphasize-lines: 2,10
    
    asakusafwOrganizer {
        hive.enabled true
        profiles.prod {
            asakusafwVersion asakusafw.asakusafwVersion
        }
    }
    
    dependencies {
        ...
        compile group: 'com.asakusafw.sdk', name: 'asakusa-sdk-hive', version: asakusafw.asakusafwVersion
    }

上記の設定後、 ``installAsakusafw`` タスクを実行して開発環境のAsakusa Frameworkを再インストールします。

Eclipseを利用している場合は、 ``eclipse`` タスクを実行してEclipseのプロジェクト情報を再構成します。

..  attention::
    MavenプロジェクトはHiveとの連携機能をサポートしていません。Hiveとの連携機能を利用する場合はGradleプロジェクトを利用してください。

カラムナフォーマットファイルの入出力
====================================

Direct I/OのHive連携モジュールを利用することで、Direct I/OからHiveが対応するカラムナフォーマットファイルの入出力を行うことができます。

Asakusa Frameworkのバージョン |version| では、Hiveが対応するカラムナフォーマットのうち、以下のフォーマットに対するファイルの入出力に対応しています。

* `ORC File <https://cwiki.apache.org/confluence/display/Hive/LanguageManual+ORC>`_
* `Parquet <https://cwiki.apache.org/confluence/display/Hive/Parquet>`_

モデルクラスの生成
==================

:doc:`csv-format` と同様に、データモデルクラス、及びファイル形式をマッピングする ``DataFormat`` の実装クラスは、DMDLコンパイラの拡張を利用して自動的に生成できます。
{'fraction_non_alphanumeric': 0.1668903803131991, 'fraction_numerical': 0.005145413870246085, 'mean_word_length': 4.86745406824147, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 9, 'https://': 6, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4923735', 'n_tokens_mistral': 2675, 'n_tokens_neox': 2509, 'n_words': 213}