全部產品
Search
文件中心

Simple Log Service:Parquet格式

更新時間:Jun 30, 2024

Log Service將日誌投遞到OSS後,支援儲存為不同的檔案格式,本文介紹Parquet格式。

參數配置

配置投遞規則時,如果選擇儲存格式Parquet,對應的參數配置如下所示。Parquet欄位配置

相關參數說明如下表所示。

參數

說明

Key名稱

您可以在Log Service的原始日誌頁簽中查看日誌欄位的Key,將您需要投遞到OSS的欄位名(Key)有序填入,在投遞時將按照此順序組織Parquet資料,並使用該key作為Parquet資料列名。除了日誌內容的Key外,Log Service還提供保留欄位__time____topic____source__,保留欄位詳情請參見保留欄位。如果遇到如下兩種情況時,Parquet資料列的值為null。

  • 此處配置的key在Log Service的日誌中不存在。

  • 將string類型欄位設定為非string類型(如double、int64等),導致投遞時,轉換資料類型失敗。

說明
  • 同一個Key在Parquet欄位中只能配置一次,不支援多次使用。

  • 如果您的日誌中存在同名欄位(例如都為request_time),則Log Service會將其中一個欄位名顯示為request_time_0,底層儲存的欄位名仍為request_time。因此您在投遞時,只能使用原始欄位名request_time

    存在同名欄位時,系統只隨機投遞其中一個欄位的值。請盡量避免日誌中使用同名欄位。

類型

Parquet格式支援儲存string、boolean、int32、int64、float、double這6種類型的資料。其中, 日誌投遞後,string類型會以Parquet中的byte_array類型進行儲存,且系統不會設定Parquet資料中logical_type欄位的值。

OSS檔案地址

投遞到OSS後,OSS檔案地址樣本如下表所示。

壓縮類型

檔案尾碼

OSS檔案地址樣本

說明

不壓縮

.parquet

oss://oss-shipper-shenzhen/ecs_test/2016/01/26/20/54_1453812893059571256_937.parquet

下載到本地,使用資料消費方式開啟 。具體操作,請參見資料消費

壓縮(snappy)

.snappy.parquet

oss://oss-shipper-shenzhen/ecs_test/2016/01/26/20/54_1453812893059571256_937.snappy.parquet

資料消費

  • 通過E-MapReduce、Spark 、Hive消費資料。更多資訊,請參見社區文檔

  • 通過單機校正工具消費資料。

    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%)
        ......