すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:Parquet形式

最終更新日:Aug 30, 2024

ログがSimple Log ServiceからObject Storage Service (OSS) に送信された後、ログはさまざまな形式で保存できます。 このトピックでは、Parquet形式について説明します。

パラメーター

次の図は、出荷ジョブでストレージフォーマットparquetを指定する場合に設定する必要があるパラメーターを示しています。 詳細については、「OSSデータ配布ジョブの作成 (新バージョン) 」をご参照ください。Parquet字段配置

下表に、各パラメーターを説明します。

パラメーター

説明

キー名

OSSに送信するログフィールドの名前。 ログストアの [生ログ] タブでログフィールドを表示できます。 ログフィールドを1つずつ追加することを推奨します。 ログフィールドがOSSに送信されると、ログフィールドは追加順序に基づいてParquetファイルに保存されます。 ログフィールドの名前は、Parquetファイルの列の名前として使用されます。

OSSに送信できるログフィールドには、__time____topic____source__ などの予約済みフィールドが含まれます。 詳細については、「予約済みフィールド」をご参照ください。

Parquetファイルの列の値は、次のシナリオではnullです。

  • ログフィールドはLogstoreのログに存在しません。

  • STRING型のログフィールドのデータ型は、DOUBLEやINT64などの別のデータ型に変更されます。 その結果、ログフィールドは出荷中にデータ型の変換に失敗します。

説明
  • ログフィールドは、Parquetフィールドに1回だけ追加できます。

  • ログにrequest_timeなどの同じ名前の2つのフィールドが含まれている場合、log Serviceはいずれかのフィールドをrequest_time_0として表示します。 2つのフィールドは引き続きrequest_timeとしてLog Serviceに保存されます。 配送ルールを設定する場合、元のフィールド名request_timeのみを使用できます。

    ログに同じ名前のフィールドが含まれている場合、log Serviceはいずれかのフィールドの値をランダムに送信します。 同じ名前のフィールドをログに含めないことをお勧めします。

データ型

指定されたログフィールドのデータ型。 次のデータ型がサポートされています: STRING、BOOLEAN、INT32、INT64、FLOAT、およびDOUBLE。

STRINGタイプのログフィールドがSimple log ServiceからOSSに送信されると、ログフィールドはbyte_arrayタイプに変換されます。これはParquetファイルでサポートされています。 さらに、Parquetファイルのlogical_type列は空のままです。

OSSオブジェクトのサンプルURL

ログがOSSに送信されると、ログはOSSバケットに保存されます。 次の表に、ログを格納するOSSオブジェクトのサンプルURLを示します。

説明
  • データシッピングジョブの作成時にオブジェクトサフィックスを指定した場合、OSSオブジェクトはサフィックスを使用します。

  • データシッピングジョブの作成時にオブジェクトサフィックスを指定しない場合、OSSオブジェクトは圧縮タイプに基づいて生成されたサフィックスを使用します。

圧縮タイプ

オブジェクト接尾辞

サンプルURL

説明

圧縮されていない

オブジェクトのサフィックスを指定すると、指定されたサフィックスが有効になります。 例: .suffix.

oss:// oss-shipper-chengdu/ecs_test/2022/01/26/20/54_1453812893059571256_937.suffix

OSSオブジェクトをコンピューターにダウンロードして、オブジェクト内のデータを使用できます。 詳細については、「データ消費」をご参照ください。

オブジェクトのサフィックスを指定しない場合は、サフィックス。寄木細工が使用されます。

oss:// oss-shipper-chengdu/ecs_test/2022/01/26/20/54_1453812893059571256_937.parquet

スナッピー

オブジェクトのサフィックスを指定すると、指定されたサフィックスが有効になります。 例: .suffix.

oss:// oss-shipper-chengdu/ecs_test/2022/01/26/20/54_1453812893059571256_937.suffix

オブジェクトのサフィックスを指定しない場合は、サフィックス。snappy.parquetが使用されます。

oss:// oss-shipper-chengdu/ecs_test/2022/01/26/20/54_1453812893059571256_937.snappy.parquet

Gzip

オブジェクトのサフィックスを指定すると、指定されたサフィックスが有効になります。 例: .suffix.

oss:// oss-shipper-chengdu/ecs_test/2022/01/26/20/54_1453812893059571256_937.suffix

オブジェクトのサフィックスを指定しない場合は、サフィックス。gz.parquetが使用されます。

oss:// oss-shipper-chengdu/ecs_test/2022/01/26/20/54_1453812893059571256_937.gz.parquet

Zstandard

オブジェクトのサフィックスを指定すると、指定されたサフィックスが有効になります。 例: .suffix.

oss:// oss-shipper-chengdu/ecs_test/2022/01/26/20/54_1453812893059571256_937.suffix

オブジェクトのサフィックスを指定しない場合は、サフィックス。zst.parquetが使用されます。

oss:// oss-shipper-chengdu/ecs_test/2022/01/26/20/54_1453812893059571256_937.zst.parquet

データ消費

  • E-MapReduce、Spark、またはHiveを使用して、OSSに送信されたデータを消費できます。 詳細については、「LanguageManual DDL」をご参照ください。

  • 検査ツールを使用してデータを消費することもできます。

    Pythonが提供するparquet-toolsユーティリティを使用して、Parquetファイルの検査、ファイルの詳細の表示、およびデータの読み取りを行うことができます。 次のコマンドを実行するか、別の方法を使用してユーティリティをインストールできます。

    pip3 install parquet-tools
    • Parquetファイル内の列のデータを表示する

      • コマンド

        remote_addr列とbody_bytes_sent列のデータを表示します。

        parquet-tools show -n 2 -c remote_addr,body_bytes_sent 44_1693464263000000000_2288ff590970d092.parquet
      • レスポンス

        +----------------+-------------------+
        | remote_addr    |   body_bytes_sent |
        |----------------+-------------------|
        | 61.243.1.63    |           b'1904' |
        | 112.235.74.182 |           b'4996' |
        +----------------+-------------------+
    • コンテンツをParquetファイルで表示します (ファイルをCSV形式に変換します) 。

      • コマンド

        parquet-tools csv -n 2 44_1693464263000000000_2288ff590970d092.parquet
      • レスポンス

        remote_addr,body_bytes_sent,time_local,request_method,request_uri,http_user_agent,remote_user,request_time,request_length,http_referer,host,http_x_forwarded_for,upstream_response_time,status
        b'61.**.**.63',b'1904',b'31/Aug/2023:06:44:01',b'GET',b'/request/path-0/file-7',"b'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_5_8) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.801.0 Safari/535.1'",b'uh2z',b'49',b'4082',b'www.kwm.mock.com',b'www.ap.mock.com',b'222.**.**.161',b'2.63',b'200'
        b'112.**.**.182',b'4996',b'31/Aug/2023:06:44:01',b'GET',b'/request/path-1/file-5',b'Mozilla/5.0 (Windows NT 6.1; de;rv:12.0) Gecko/20120403211507 Firefox/12.0',b'tix',b'71',b'1862',b'www.gx.mock.com',b'www.da.mock.com',b'36.**.**.237',b'2.43',b'200'
    • Parquetファイルの詳細を表示する

      • コマンド

        parquet-tools inspect 44_1693464263000000000_2288ff590970d092.parquet
      • レスポンス

        ############ file meta data ############
        created_by: SLS version 1
        num_columns: 14
        num_rows: 4661
        num_row_groups: 1
        format_version: 1.0
        serialized_size: 2345
        
        
        ############ Columns ############
        remote_addr
        body_bytes_sent
        time_local
        request_method
        request_uri
        http_user_agent
        remote_user
        request_time
        request_length
        http_referer
        host
        http_x_forwarded_for
        upstream_response_time
        status
        
        ############ Column(remote_addr) ############
        name: remote_addr
        path: remote_addr
        max_definition_level: 1
        max_repetition_level: 0
        physical_type: BYTE_ARRAY
        logical_type: None
        converted_type (legacy): NONE
        compression: UNCOMPRESSED (space_saved: 0%)
        ......