Đếm hàng trong tập tin sàn gỗ python

Nhận Kích thước và Hình dạng của khung dữ liệu. Để có được số hàng và số cột trong pyspark, chúng ta sẽ sử dụng các hàm như hàm count[] và hàm length[]. Kích thước của khung dữ liệu trong pyspark được tính bằng cách trích xuất số hàng và số cột của khung dữ liệu. Chúng tôi cũng sẽ nhận được số lượng hàng riêng biệt trong pyspark. Hãy xem làm thế nào để

  • Nhận kích thước và hình dạng của khung dữ liệu không gì khác ngoài số hàng và số cột của khung dữ liệu trong pyspark

    Dự án Apache Parquet cung cấp định dạng lưu trữ dạng cột mã nguồn mở được tiêu chuẩn hóa để sử dụng trong các hệ thống phân tích dữ liệu. Ban đầu, nó được tạo để sử dụng trong Apache Hadoop với các hệ thống như Apache Drill, Apache Hive, Apache Impala và Apache Spark sử dụng nó làm tiêu chuẩn dùng chung cho IO dữ liệu hiệu suất cao

    Mũi tên Apache là lớp vận chuyển trong bộ nhớ lý tưởng cho dữ liệu đang được đọc hoặc ghi bằng tệp Parquet. Chúng tôi đã đồng thời phát triển triển khai C++ của Apache Parquet, bao gồm bộ điều hợp C++ gốc, đa luồng đến và từ dữ liệu Mũi tên trong bộ nhớ. PyArrow bao gồm các liên kết Python với mã này, do đó cũng cho phép đọc và ghi các tệp Parquet bằng gấu trúc

    Lấy pyarrow với Hỗ trợ sàn gỗ

    Nếu bạn đã cài đặt

    In [9]: table2 = pq.read_table['example.parquet']
    
    In [10]: table2.to_pandas[]
    Out[10]: 
       one  two  three
    a -1.0  foo   True
    b  NaN  bar  False
    c  2.5  baz   True
    
    5 với pip hoặc conda, thì nó phải được xây dựng với gói hỗ trợ Sàn gỗ

    In [1]: import pyarrow.parquet as pq
    

    Nếu bạn đang xây dựng

    In [9]: table2 = pq.read_table['example.parquet']
    
    In [10]: table2.to_pandas[]
    Out[10]: 
       one  two  three
    a -1.0  foo   True
    b  NaN  bar  False
    c  2.5  baz   True
    
    5 từ nguồn, bạn phải sử dụng
    In [9]: table2 = pq.read_table['example.parquet']
    
    In [10]: table2.to_pandas[]
    Out[10]: 
       one  two  three
    a -1.0  foo   True
    b  NaN  bar  False
    c  2.5  baz   True
    
    7 khi biên dịch thư viện C++ và bật tiện ích mở rộng Parquet khi xây dựng
    In [9]: table2 = pq.read_table['example.parquet']
    
    In [10]: table2.to_pandas[]
    Out[10]: 
       one  two  three
    a -1.0  foo   True
    b  NaN  bar  False
    c  2.5  baz   True
    
    5. Nếu bạn muốn sử dụng Parquet Encryption, thì bạn cũng phải sử dụng
    In [9]: table2 = pq.read_table['example.parquet']
    
    In [10]: table2.to_pandas[]
    Out[10]: 
       one  two  three
    a -1.0  foo   True
    b  NaN  bar  False
    c  2.5  baz   True
    
    9 khi biên dịch các thư viện C++. Xem trang Phát triển Python để biết thêm chi tiết

    Đọc và ghi các tệp đơn lẻ

    Hàm

    In [11]: pq.read_table['example.parquet', columns=['one', 'three']]
    Out[11]: 
    pyarrow.Table
    one: double
    three: bool
    ----
    one: [[-1,null,2.5]]
    three: [[true,false,true]]
    
    0 và
    In [11]: pq.read_table['example.parquet', columns=['one', 'three']]
    Out[11]: 
    pyarrow.Table
    one: double
    three: bool
    ----
    one: [[-1,null,2.5]]
    three: [[true,false,true]]
    
    1 đọc và viết pyarrow. Đối tượng bảng, tương ứng

    Hãy nhìn vào một bảng đơn giản

    ________số 8

    Chúng tôi viết điều này sang định dạng Parquet với

    In [11]: pq.read_table['example.parquet', columns=['one', 'three']]
    Out[11]: 
    pyarrow.Table
    one: double
    three: bool
    ----
    one: [[-1,null,2.5]]
    three: [[true,false,true]]
    
    2

    In [1]: import pyarrow.parquet as pq
    
    0

    Điều này tạo ra một tập tin Parquet duy nhất. Trong thực tế, tập dữ liệu Parquet có thể bao gồm nhiều tệp trong nhiều thư mục. Chúng tôi có thể đọc lại một tệp với

    In [11]: pq.read_table['example.parquet', columns=['one', 'three']]
    Out[11]: 
    pyarrow.Table
    one: double
    three: bool
    ----
    one: [[-1,null,2.5]]
    three: [[true,false,true]]
    
    3

    In [9]: table2 = pq.read_table['example.parquet']
    
    In [10]: table2.to_pandas[]
    Out[10]: 
       one  two  three
    a -1.0  foo   True
    b  NaN  bar  False
    c  2.5  baz   True
    

    Bạn có thể chuyển một tập hợp con các cột để đọc, có thể nhanh hơn nhiều so với đọc toàn bộ tệp [do bố cục cột]

    In [11]: pq.read_table['example.parquet', columns=['one', 'three']]
    Out[11]: 
    pyarrow.Table
    one: double
    three: bool
    ----
    one: [[-1,null,2.5]]
    three: [[true,false,true]]
    

    Khi đọc một tập hợp con các cột từ một tệp sử dụng khung dữ liệu Pandas làm nguồn, chúng tôi sử dụng

    In [11]: pq.read_table['example.parquet', columns=['one', 'three']]
    Out[11]: 
    pyarrow.Table
    one: double
    three: bool
    ----
    one: [[-1,null,2.5]]
    three: [[true,false,true]]
    
    4 để duy trì mọi dữ liệu cột chỉ mục bổ sung

    In [1]: import pyarrow.parquet as pq
    
    5

    Chúng tôi không cần sử dụng một chuỗi để chỉ định nguồn gốc của tệp. Nó có thể là bất kỳ của

    • Đường dẫn tệp dưới dạng chuỗi

    • Tệp gốc từ PyArrow

    • Một đối tượng tệp Python

    Nói chung, một đối tượng tệp Python sẽ có hiệu suất đọc kém nhất, trong khi đường dẫn tệp chuỗi hoặc một thể hiện của

    In [11]: pq.read_table['example.parquet', columns=['one', 'three']]
    Out[11]: 
    pyarrow.Table
    one: double
    three: bool
    ----
    one: [[-1,null,2.5]]
    three: [[true,false,true]]
    
    5 [đặc biệt là bản đồ bộ nhớ] sẽ hoạt động tốt nhất

    Đọc sàn gỗ và ánh xạ bộ nhớ

    Vì dữ liệu Parquet cần được giải mã từ định dạng và nén Parquet nên không thể ánh xạ trực tiếp từ đĩa. Do đó, tùy chọn

    In [11]: pq.read_table['example.parquet', columns=['one', 'three']]
    Out[11]: 
    pyarrow.Table
    one: double
    three: bool
    ----
    one: [[-1,null,2.5]]
    three: [[true,false,true]]
    
    6 có thể hoạt động tốt hơn trên một số hệ thống nhưng sẽ không giúp ích nhiều cho việc tiêu thụ bộ nhớ thường trú

    In [1]: import pyarrow.parquet as pq
    
    8

    Nếu bạn cần xử lý dữ liệu Parquet lớn hơn bộ nhớ, Bộ dữ liệu dạng bảng và phân vùng có lẽ là thứ bạn đang tìm kiếm

    Tùy chọn ghi tập tin sàn gỗ

    In [11]: pq.read_table['example.parquet', columns=['one', 'three']]
    Out[11]: 
    pyarrow.Table
    one: double
    three: bool
    ----
    one: [[-1,null,2.5]]
    three: [[true,false,true]]
    
    1 có một số tùy chọn để kiểm soát các cài đặt khác nhau khi ghi tệp Parquet

    • In [11]: pq.read_table['example.parquet', columns=['one', 'three']]
      Out[11]: 
      pyarrow.Table
      one: double
      three: bool
      ----
      one: [[-1,null,2.5]]
      three: [[true,false,true]]
      
      8, phiên bản định dạng Sàn gỗ để sử dụng.
      In [11]: pq.read_table['example.parquet', columns=['one', 'three']]
      Out[11]: 
      pyarrow.Table
      one: double
      three: bool
      ----
      one: [[-1,null,2.5]]
      three: [[true,false,true]]
      
      9 đảm bảo khả năng tương thích với các đầu đọc cũ hơn, trong khi
      In [1]: import pyarrow.parquet as pq
      
      50 và các giá trị lớn hơn cho phép nhiều loại Sàn gỗ và mã hóa hơn

    • In [1]: import pyarrow.parquet as pq
      
      51, để kiểm soát kích thước gần đúng của các trang dữ liệu được mã hóa trong một đoạn cột. Điều này hiện mặc định là 1MB

    • In [1]: import pyarrow.parquet as pq
      
      52, để đặt các tùy chọn tương thích dành riêng cho người tiêu dùng Parquet như
      In [1]: import pyarrow.parquet as pq
      
      53 cho Apache Spark

    Xem chuỗi tài liệu

    In [11]: pq.read_table['example.parquet', columns=['one', 'three']]
    Out[11]: 
    pyarrow.Table
    one: double
    three: bool
    ----
    one: [[-1,null,2.5]]
    three: [[true,false,true]]
    
    1 để biết thêm chi tiết

    Có một số tùy chọn bổ sung dành riêng cho việc xử lý loại dữ liệu được mô tả bên dưới

    Bỏ qua chỉ mục DataFrame

    Khi sử dụng

    In [1]: import pyarrow.parquet as pq
    
    55 để chuyển đổi sang bảng Mũi tên, theo mặc định, một hoặc nhiều cột đặc biệt được thêm vào để theo dõi chỉ mục [nhãn hàng]. Việc lưu trữ chỉ mục sẽ tốn thêm dung lượng, vì vậy nếu chỉ mục của bạn không có giá trị, bạn có thể chọn bỏ qua nó bằng cách chuyển
    In [1]: import pyarrow.parquet as pq
    
    56

    In [9]: table2 = pq.read_table['example.parquet']
    
    In [10]: table2.to_pandas[]
    Out[10]: 
       one  two  three
    a -1.0  foo   True
    b  NaN  bar  False
    c  2.5  baz   True
    
    9

    Sau đó chúng tôi có

    In [9]: table2 = pq.read_table['example.parquet']
    
    In [10]: table2.to_pandas[]
    Out[10]: 
       one  two  three
    a -1.0  foo   True
    b  NaN  bar  False
    c  2.5  baz   True
    
    0

    Ở đây bạn thấy chỉ số không tồn tại trong chuyến đi khứ hồi

    Đọc và Viết chi tiết hơn

    In [11]: pq.read_table['example.parquet', columns=['one', 'three']]
    Out[11]: 
    pyarrow.Table
    one: double
    three: bool
    ----
    one: [[-1,null,2.5]]
    three: [[true,false,true]]
    
    3 sử dụng lớp
    In [1]: import pyarrow.parquet as pq
    
    58, lớp này có các tính năng khác

    In [9]: table2 = pq.read_table['example.parquet']
    
    In [10]: table2.to_pandas[]
    Out[10]: 
       one  two  three
    a -1.0  foo   True
    b  NaN  bar  False
    c  2.5  baz   True
    
    3

    Như bạn có thể tìm hiểu thêm ở định dạng Parquet của Apache, một tệp Parquet bao gồm nhiều nhóm hàng.

    In [11]: pq.read_table['example.parquet', columns=['one', 'three']]
    Out[11]: 
    pyarrow.Table
    one: double
    three: bool
    ----
    one: [[-1,null,2.5]]
    three: [[true,false,true]]
    
    3 sẽ đọc tất cả các nhóm hàng và nối chúng vào một bảng duy nhất. Bạn có thể đọc các nhóm hàng riêng lẻ với
    In [1]: import pyarrow.parquet as pq
    
    80

    In [2]: import numpy as np
    
    In [3]: import pandas as pd
    
    In [4]: import pyarrow as pa
    
    In [5]: df = pd.DataFrame[{'one': [-1, np.nan, 2.5],
       ...:                    'two': ['foo', 'bar', 'baz'],
       ...:                    'three': [True, False, True]},
       ...:                    index=list['abc']]
       ...: 
    
    In [6]: table = pa.Table.from_pandas[df]
    
    0

    Tương tự, chúng ta có thể viết một tệp Parquet có nhiều nhóm hàng bằng cách sử dụng

    In [1]: import pyarrow.parquet as pq
    
    81

    In [2]: import numpy as np
    
    In [3]: import pandas as pd
    
    In [4]: import pyarrow as pa
    
    In [5]: df = pd.DataFrame[{'one': [-1, np.nan, 2.5],
       ...:                    'two': ['foo', 'bar', 'baz'],
       ...:                    'three': [True, False, True]},
       ...:                    index=list['abc']]
       ...: 
    
    In [6]: table = pa.Table.from_pandas[df]
    
    1

    Kiểm tra siêu dữ liệu tệp sàn gỗ

    Có thể truy cập

    In [1]: import pyarrow.parquet as pq
    
    82 của tệp Sàn gỗ thông qua
    In [1]: import pyarrow.parquet as pq
    
    58 như được hiển thị ở trên

    In [2]: import numpy as np
    
    In [3]: import pandas as pd
    
    In [4]: import pyarrow as pa
    
    In [5]: df = pd.DataFrame[{'one': [-1, np.nan, 2.5],
       ...:                    'two': ['foo', 'bar', 'baz'],
       ...:                    'three': [True, False, True]},
       ...:                    index=list['abc']]
       ...: 
    
    In [6]: table = pa.Table.from_pandas[df]
    
    2

    hoặc cũng có thể được đọc trực tiếp bằng cách sử dụng

    In [1]: import pyarrow.parquet as pq
    
    84

    In [2]: import numpy as np
    
    In [3]: import pandas as pd
    
    In [4]: import pyarrow as pa
    
    In [5]: df = pd.DataFrame[{'one': [-1, np.nan, 2.5],
       ...:                    'two': ['foo', 'bar', 'baz'],
       ...:                    'three': [True, False, True]},
       ...:                    index=list['abc']]
       ...: 
    
    In [6]: table = pa.Table.from_pandas[df]
    
    3

    Đối tượng

    In [1]: import pyarrow.parquet as pq
    
    82 được trả về cho phép kiểm tra siêu dữ liệu của tệp Parquet, chẳng hạn như các nhóm hàng và siêu dữ liệu khối cột và số liệu thống kê

    In [2]: import numpy as np
    
    In [3]: import pandas as pd
    
    In [4]: import pyarrow as pa
    
    In [5]: df = pd.DataFrame[{'one': [-1, np.nan, 2.5],
       ...:                    'two': ['foo', 'bar', 'baz'],
       ...:                    'three': [True, False, True]},
       ...:                    index=list['abc']]
       ...: 
    
    In [6]: table = pa.Table.from_pandas[df]
    
    4

    Xử lý kiểu dữ liệu

    Đọc các loại như DictionaryArray

    Tùy chọn

    In [1]: import pyarrow.parquet as pq
    
    86 trong
    In [11]: pq.read_table['example.parquet', columns=['one', 'three']]
    Out[11]: 
    pyarrow.Table
    one: double
    three: bool
    ----
    one: [[-1,null,2.5]]
    three: [[true,false,true]]
    
    3 và
    In [1]: import pyarrow.parquet as pq
    
    88 sẽ khiến các cột được đọc là
    In [1]: import pyarrow.parquet as pq
    
    89, cột này sẽ trở thành
    In [9]: table2 = pq.read_table['example.parquet']
    
    In [10]: table2.to_pandas[]
    Out[10]: 
       one  two  three
    a -1.0  foo   True
    b  NaN  bar  False
    c  2.5  baz   True
    
    90 khi được chuyển đổi thành pandas. Tùy chọn này chỉ hợp lệ đối với các loại cột chuỗi và nhị phân, đồng thời, tùy chọn này có thể mang lại mức sử dụng bộ nhớ thấp hơn đáng kể và cải thiện hiệu suất cho các cột có nhiều giá trị chuỗi lặp lại

    In [2]: import numpy as np
    
    In [3]: import pandas as pd
    
    In [4]: import pyarrow as pa
    
    In [5]: df = pd.DataFrame[{'one': [-1, np.nan, 2.5],
       ...:                    'two': ['foo', 'bar', 'baz'],
       ...:                    'three': [True, False, True]},
       ...:                    index=list['abc']]
       ...: 
    
    In [6]: table = pa.Table.from_pandas[df]
    
    5

    Khả năng tương thích nén, mã hóa và tệp

    Việc triển khai Parquet được sử dụng phổ biến nhất sử dụng mã hóa từ điển khi ghi tệp; . Việc mã hóa từ điển có được sử dụng hay không có thể được chuyển đổi bằng cách sử dụng tùy chọn

    In [9]: table2 = pq.read_table['example.parquet']
    
    In [10]: table2.to_pandas[]
    Out[10]: 
       one  two  three
    a -1.0  foo   True
    b  NaN  bar  False
    c  2.5  baz   True
    
    91

    In [2]: import numpy as np
    
    In [3]: import pandas as pd
    
    In [4]: import pyarrow as pa
    
    In [5]: df = pd.DataFrame[{'one': [-1, np.nan, 2.5],
       ...:                    'two': ['foo', 'bar', 'baz'],
       ...:                    'three': [True, False, True]},
       ...:                    index=list['abc']]
       ...: 
    
    In [6]: table = pa.Table.from_pandas[df]
    
    6

    Các trang dữ liệu trong một cột trong một nhóm hàng có thể được nén sau khi mã hóa đi qua [từ điển, mã hóa RLE]. Trong PyArrow, chúng tôi sử dụng tính năng nén Snappy theo mặc định, nhưng Brotli, Gzip, ZSTD, LZ4 và không nén cũng được hỗ trợ

    In [2]: import numpy as np
    
    In [3]: import pandas as pd
    
    In [4]: import pyarrow as pa
    
    In [5]: df = pd.DataFrame[{'one': [-1, np.nan, 2.5],
       ...:                    'two': ['foo', 'bar', 'baz'],
       ...:                    'three': [True, False, True]},
       ...:                    index=list['abc']]
       ...: 
    
    In [6]: table = pa.Table.from_pandas[df]
    
    7

    Snappy thường mang lại hiệu suất tốt hơn, trong khi Gzip có thể mang lại các tệp nhỏ hơn

    Các cài đặt này cũng có thể được đặt trên cơ sở mỗi cột

    In [2]: import numpy as np
    
    In [3]: import pandas as pd
    
    In [4]: import pyarrow as pa
    
    In [5]: df = pd.DataFrame[{'one': [-1, np.nan, 2.5],
       ...:                    'two': ['foo', 'bar', 'baz'],
       ...:                    'three': [True, False, True]},
       ...:                    index=list['abc']]
       ...: 
    
    In [6]: table = pa.Table.from_pandas[df]
    
    8

    Bộ dữ liệu được phân vùng [Nhiều tệp]

    Nhiều tệp Parquet tạo thành bộ dữ liệu Parquet. Đây có thể trình bày trong một số cách

    • Danh sách các đường dẫn tệp tuyệt đối của Parquet

    • Tên thư mục chứa các thư mục lồng nhau xác định tập dữ liệu được phân vùng

    Tập dữ liệu được phân vùng theo năm và tháng có thể giống như trên đĩa

    In [2]: import numpy as np
    
    In [3]: import pandas as pd
    
    In [4]: import pyarrow as pa
    
    In [5]: df = pd.DataFrame[{'one': [-1, np.nan, 2.5],
       ...:                    'two': ['foo', 'bar', 'baz'],
       ...:                    'three': [True, False, True]},
       ...:                    index=list['abc']]
       ...: 
    
    In [6]: table = pa.Table.from_pandas[df]
    
    9

    Ghi vào bộ dữ liệu được phân vùng

    Bạn có thể viết tập dữ liệu được phân vùng cho bất kỳ hệ thống tệp

    In [9]: table2 = pq.read_table['example.parquet']
    
    In [10]: table2.to_pandas[]
    Out[10]: 
       one  two  three
    a -1.0  foo   True
    b  NaN  bar  False
    c  2.5  baz   True
    
    5 nào là kho lưu trữ tệp [e. g. cục bộ, HDFS, S3]. Hành vi mặc định khi không có hệ thống tệp nào được thêm vào là sử dụng hệ thống tệp cục bộ

    In [1]: import pyarrow.parquet as pq
    
    00

    Đường dẫn gốc trong trường hợp này chỉ định thư mục mẹ mà dữ liệu sẽ được lưu vào. Các cột phân vùng là tên cột để phân vùng tập dữ liệu. Các cột được phân vùng theo thứ tự chúng được cung cấp. Sự phân chia phân vùng được xác định bởi các giá trị duy nhất trong các cột phân vùng

    Để sử dụng một hệ thống tệp khác, bạn chỉ cần thêm tham số hệ thống tệp, việc ghi bảng riêng lẻ được bao bọc bằng cách sử dụng các câu lệnh

    In [9]: table2 = pq.read_table['example.parquet']
    
    In [10]: table2.to_pandas[]
    Out[10]: 
       one  two  three
    a -1.0  foo   True
    b  NaN  bar  False
    c  2.5  baz   True
    
    93 để không cần phải sử dụng hàm
    In [9]: table2 = pq.read_table['example.parquet']
    
    In [10]: table2.to_pandas[]
    Out[10]: 
       one  two  three
    a -1.0  foo   True
    b  NaN  bar  False
    c  2.5  baz   True
    
    94

    In [1]: import pyarrow.parquet as pq
    
    01

    Lưu ý tương thích. nếu sử dụng

    In [9]: table2 = pq.read_table['example.parquet']
    
    In [10]: table2.to_pandas[]
    Out[10]: 
       one  two  three
    a -1.0  foo   True
    b  NaN  bar  False
    c  2.5  baz   True
    
    94 để tạo một bảng mà HIVE sau đó sẽ sử dụng thì các giá trị cột phân vùng phải tương thích với bộ ký tự được phép của phiên bản HIVE mà bạn đang chạy

    Viết các tệp
    In [9]: table2 = pq.read_table['example.parquet']
    
    In [10]: table2.to_pandas[]
    Out[10]: 
       one  two  three
    a -1.0  foo   True
    b  NaN  bar  False
    c  2.5  baz   True
    
    96 và
    In [9]: table2 = pq.read_table['example.parquet']
    
    In [10]: table2.to_pandas[]
    Out[10]: 
       one  two  three
    a -1.0  foo   True
    b  NaN  bar  False
    c  2.5  baz   True
    
    97

    Một số khung xử lý như Spark hoặc Dask [tùy chọn] sử dụng tệp

    In [9]: table2 = pq.read_table['example.parquet']
    
    In [10]: table2.to_pandas[]
    Out[10]: 
       one  two  three
    a -1.0  foo   True
    b  NaN  bar  False
    c  2.5  baz   True
    
    96 và
    In [9]: table2 = pq.read_table['example.parquet']
    
    In [10]: table2.to_pandas[]
    Out[10]: 
       one  two  three
    a -1.0  foo   True
    b  NaN  bar  False
    c  2.5  baz   True
    
    97 với bộ dữ liệu được phân vùng

    Các tệp đó bao gồm thông tin về lược đồ của tập dữ liệu đầy đủ [đối với

    In [9]: table2 = pq.read_table['example.parquet']
    
    In [10]: table2.to_pandas[]
    Out[10]: 
       one  two  three
    a -1.0  foo   True
    b  NaN  bar  False
    c  2.5  baz   True
    
    97] và có khả năng là tất cả siêu dữ liệu nhóm hàng của tất cả các tệp trong tập dữ liệu được phân vùng [đối với
    In [9]: table2 = pq.read_table['example.parquet']
    
    In [10]: table2.to_pandas[]
    Out[10]: 
       one  two  three
    a -1.0  foo   True
    b  NaN  bar  False
    c  2.5  baz   True
    
    96]. Các tệp thực tế là các tệp Parquet chỉ siêu dữ liệu. Lưu ý rằng đây không phải là tiêu chuẩn Sàn gỗ, mà là một quy ước được đặt ra trong thực tế bởi các khuôn khổ đó

    Việc sử dụng các tệp đó có thể giúp tạo Tập dữ liệu sàn gỗ hiệu quả hơn, vì nó có thể sử dụng lược đồ được lưu trữ và đường dẫn tệp của tất cả các nhóm hàng, thay vì suy luận lược đồ và thu thập thông tin thư mục cho tất cả các tệp Sàn gỗ [trường hợp này đặc biệt dành cho

    Hàm

    In [9]: table2 = pq.read_table['example.parquet']
    
    In [10]: table2.to_pandas[]
    Out[10]: 
       one  two  three
    a -1.0  foo   True
    b  NaN  bar  False
    c  2.5  baz   True
    
    02 không tự động ghi các tệp siêu dữ liệu như vậy, nhưng bạn có thể sử dụng hàm này để thu thập siêu dữ liệu, kết hợp và ghi chúng theo cách thủ công

    In [1]: import pyarrow.parquet as pq
    
    02

    Khi không sử dụng hàm

    In [9]: table2 = pq.read_table['example.parquet']
    
    In [10]: table2.to_pandas[]
    Out[10]: 
       one  two  three
    a -1.0  foo   True
    b  NaN  bar  False
    c  2.5  baz   True
    
    02, nhưng ghi các tệp riêng lẻ của tập dữ liệu được phân vùng bằng cách sử dụng
    In [11]: pq.read_table['example.parquet', columns=['one', 'three']]
    Out[11]: 
    pyarrow.Table
    one: double
    three: bool
    ----
    one: [[-1,null,2.5]]
    three: [[true,false,true]]
    
    1 hoặc
    In [1]: import pyarrow.parquet as pq
    
    81, từ khóa
    In [9]: table2 = pq.read_table['example.parquet']
    
    In [10]: table2.to_pandas[]
    Out[10]: 
       one  two  three
    a -1.0  foo   True
    b  NaN  bar  False
    c  2.5  baz   True
    
    06 cũng có thể được sử dụng để thu thập FileMetaData của các tệp đã ghi. Trong trường hợp này, bạn cần đảm bảo tự đặt đường dẫn tệp có trong siêu dữ liệu của nhóm hàng trước khi kết hợp siêu dữ liệu và lược đồ của tất cả các tệp khác nhau cũng như các đối tượng FileMetaData đã thu thập phải giống nhau

    In [1]: import pyarrow.parquet as pq
    
    03

    Đọc từ bộ dữ liệu được phân vùng

    Lớp

    In [1]: import pyarrow.parquet as pq
    
    88 chấp nhận tên thư mục hoặc danh sách đường dẫn tệp và có thể khám phá và suy ra một số cấu trúc phân vùng phổ biến, chẳng hạn như cấu trúc do Hive tạo ra

    In [1]: import pyarrow.parquet as pq
    
    04

    Bạn cũng có thể sử dụng hàm tiện ích

    In [11]: pq.read_table['example.parquet', columns=['one', 'three']]
    Out[11]: 
    pyarrow.Table
    one: double
    three: bool
    ----
    one: [[-1,null,2.5]]
    three: [[true,false,true]]
    
    3 được cung cấp bởi
    In [9]: table2 = pq.read_table['example.parquet']
    
    In [10]: table2.to_pandas[]
    Out[10]: 
       one  two  three
    a -1.0  foo   True
    b  NaN  bar  False
    c  2.5  baz   True
    
    09 để tránh phải thực hiện bước tạo đối tượng Bộ dữ liệu bổ sung

    In [1]: import pyarrow.parquet as pq
    
    05

    Ghi chú. các cột phân vùng trong bảng gốc sẽ có các loại được chuyển đổi thành các loại từ điển Mũi tên [pandas categorical] khi tải. Thứ tự của các cột phân vùng không được giữ nguyên trong quá trình lưu/tải. Nếu đọc từ hệ thống tệp từ xa vào khung dữ liệu gấu trúc, bạn có thể cần chạy

    In [9]: table2 = pq.read_table['example.parquet']
    
    In [10]: table2.to_pandas[]
    Out[10]: 
       one  two  three
    a -1.0  foo   True
    b  NaN  bar  False
    c  2.5  baz   True
    
    30 để duy trì thứ tự hàng [miễn là tùy chọn
    In [9]: table2 = pq.read_table['example.parquet']
    
    In [10]: table2.to_pandas[]
    Out[10]: 
       one  two  three
    a -1.0  foo   True
    b  NaN  bar  False
    c  2.5  baz   True
    
    31 được bật khi ghi]

    Ghi chú

    ParquetDataset đang được triển khai lại dựa trên API Bộ dữ liệu chung mới [xem tài liệu Bộ dữ liệu dạng bảng để biết tổng quan]. Đây chưa phải là mặc định, nhưng đã có thể được bật bằng cách chuyển từ khóa

    In [9]: table2 = pq.read_table['example.parquet']
    
    In [10]: table2.to_pandas[]
    Out[10]: 
       one  two  three
    a -1.0  foo   True
    b  NaN  bar  False
    c  2.5  baz   True
    
    32 đến
    In [1]: import pyarrow.parquet as pq
    
    88 hoặc
    In [11]: pq.read_table['example.parquet', columns=['one', 'three']]
    Out[11]: 
    pyarrow.Table
    one: double
    three: bool
    ----
    one: [[-1,null,2.5]]
    three: [[true,false,true]]
    
    0

    In [1]: import pyarrow.parquet as pq
    
    06

    Kích hoạt tính năng này mang lại các tính năng mới sau đây

    • Lọc trên tất cả các cột [sử dụng thống kê nhóm hàng] thay vì chỉ lọc trên các khóa phân vùng

    • Phân vùng chi tiết hơn. hỗ trợ sơ đồ phân vùng thư mục ngoài phân vùng giống như Hive [e. g. “/2019/11/15/” thay vì “/year=2019/month=11/day=15/”] và khả năng chỉ định lược đồ cho các khóa phân vùng

    • Cải thiện hiệu suất chung và sửa lỗi

    Nó cũng có những thay đổi sau đây trong hành vi

    • Các khóa phân vùng cần được đưa vào từ khóa

      In [9]: table2 = pq.read_table['example.parquet']
      
      In [10]: table2.to_pandas[]
      Out[10]: 
         one  two  three
      a -1.0  foo   True
      b  NaN  bar  False
      c  2.5  baz   True
      
      35 một cách rõ ràng khi bạn muốn đưa chúng vào kết quả trong khi đọc một tập hợp con của các cột

    Triển khai mới này đã được bật trong

    In [11]: pq.read_table['example.parquet', columns=['one', 'three']]
    Out[11]: 
    pyarrow.Table
    one: double
    three: bool
    ----
    one: [[-1,null,2.5]]
    three: [[true,false,true]]
    
    3 và trong tương lai, điều này sẽ được bật theo mặc định cho
    In [1]: import pyarrow.parquet as pq
    
    88. Việc triển khai mới chưa bao gồm tất cả các tính năng ParquetDataset hiện có [e. g. chỉ định
    In [9]: table2 = pq.read_table['example.parquet']
    
    In [10]: table2.to_pandas[]
    Out[10]: 
       one  two  three
    a -1.0  foo   True
    b  NaN  bar  False
    c  2.5  baz   True
    
    38 hoặc API thuộc tính
    In [9]: table2 = pq.read_table['example.parquet']
    
    In [10]: table2.to_pandas[]
    Out[10]: 
       one  two  three
    a -1.0  foo   True
    b  NaN  bar  False
    c  2.5  baz   True
    
    39]. Phản hồi rất được hoan nghênh

    Sử dụng với Spark

    Spark đặt một số ràng buộc đối với các loại tệp Parquet mà nó sẽ đọc. Tùy chọn

    In [2]: import numpy as np
    
    In [3]: import pandas as pd
    
    In [4]: import pyarrow as pa
    
    In [5]: df = pd.DataFrame[{'one': [-1, np.nan, 2.5],
       ...:                    'two': ['foo', 'bar', 'baz'],
       ...:                    'three': [True, False, True]},
       ...:                    index=list['abc']]
       ...: 
    
    In [6]: table = pa.Table.from_pandas[df]
    
    00 sẽ tự động đặt các tùy chọn này và cũng khử trùng các ký tự trường không được Spark SQL hỗ trợ

    Đọc đa luồng

    Mỗi chức năng đọc theo mặc định sử dụng đa luồng để đọc các cột song song. Tùy thuộc vào tốc độ của IO và mức độ tốn kém để giải mã các cột trong một tệp cụ thể [đặc biệt là với nén GZIP], điều này có thể mang lại thông lượng dữ liệu cao hơn đáng kể

    Điều này có thể bị vô hiệu hóa bằng cách chỉ định

    In [2]: import numpy as np
    
    In [3]: import pandas as pd
    
    In [4]: import pyarrow as pa
    
    In [5]: df = pd.DataFrame[{'one': [-1, np.nan, 2.5],
       ...:                    'two': ['foo', 'bar', 'baz'],
       ...:                    'three': [True, False, True]},
       ...:                    index=list['abc']]
       ...: 
    
    In [6]: table = pa.Table.from_pandas[df]
    
    01

    Ghi chú

    Số lượng luồng sử dụng đồng thời được Arrow tự động suy ra và có thể được kiểm tra bằng hàm

    In [2]: import numpy as np
    
    In [3]: import pandas as pd
    
    In [4]: import pyarrow as pa
    
    In [5]: df = pd.DataFrame[{'one': [-1, np.nan, 2.5],
       ...:                    'two': ['foo', 'bar', 'baz'],
       ...:                    'three': [True, False, True]},
       ...:                    index=list['abc']]
       ...: 
    
    In [6]: table = pa.Table.from_pandas[df]
    
    02

    Đọc từ lưu trữ đám mây

    Ngoài các tệp cục bộ, pyarrow hỗ trợ các hệ thống tệp khác, chẳng hạn như hệ thống tệp trên đám mây, thông qua từ khóa

    In [2]: import numpy as np
    
    In [3]: import pandas as pd
    
    In [4]: import pyarrow as pa
    
    In [5]: df = pd.DataFrame[{'one': [-1, np.nan, 2.5],
       ...:                    'two': ['foo', 'bar', 'baz'],
       ...:                    'three': [True, False, True]},
       ...:                    index=list['abc']]
       ...: 
    
    In [6]: table = pa.Table.from_pandas[df]
    
    03

    In [1]: import pyarrow.parquet as pq
    
    07

    Hiện tại,

    In [2]: import numpy as np
    
    In [3]: import pandas as pd
    
    In [4]: import pyarrow as pa
    
    In [5]: df = pd.DataFrame[{'one': [-1, np.nan, 2.5],
       ...:                    'two': ['foo', 'bar', 'baz'],
       ...:                    'three': [True, False, True]},
       ...:                    index=list['abc']]
       ...: 
    
    In [6]: table = pa.Table.from_pandas[df]
    
    04 và
    In [2]: import numpy as np
    
    In [3]: import pandas as pd
    
    In [4]: import pyarrow as pa
    
    In [5]: df = pd.DataFrame[{'one': [-1, np.nan, 2.5],
       ...:                    'two': ['foo', 'bar', 'baz'],
       ...:                    'three': [True, False, True]},
       ...:                    index=list['abc']]
       ...: 
    
    In [6]: table = pa.Table.from_pandas[df]
    
    05 được hỗ trợ. Xem tài liệu Giao diện hệ thống tập tin để biết thêm chi tiết. Đối với các hệ thống tệp tích hợp đó, hệ thống tệp cũng có thể được suy ra từ đường dẫn tệp, nếu được chỉ định dưới dạng URI

    In [1]: import pyarrow.parquet as pq
    
    08

    Các hệ thống tệp khác vẫn có thể được hỗ trợ nếu có sẵn triển khai tương thích với fsspec. Xem Sử dụng hệ thống tệp tương thích fsspec với Mũi tên để biết thêm chi tiết. Một ví dụ là bộ lưu trữ Azure Blob, có thể được giao tiếp thông qua gói adlfs

    In [1]: import pyarrow.parquet as pq
    
    09

    Mã hóa mô-đun sàn gỗ [Mã hóa cột]

    Mã hóa cột được hỗ trợ cho các tệp Parquet trong C++ bắt đầu từ Apache Arrow 4. 0. 0 và trong PyArrow bắt đầu từ Apache Arrow 6. 0. 0

    Sàn gỗ sử dụng thực hành mã hóa phong bì, trong đó các phần của tệp được mã hóa bằng “khóa mã hóa dữ liệu” [DEK] và DEK được mã hóa bằng “khóa mã hóa chính” [MEK]. DEK được Parquet tạo ngẫu nhiên cho mỗi tệp/cột được mã hóa. MEK được tạo, lưu trữ và quản lý trong Dịch vụ quản lý khóa [KMS] do người dùng lựa chọn

    Đọc và ghi các tệp Parquet được mã hóa liên quan đến việc chuyển các thuộc tính mã hóa và giải mã tệp lần lượt tới

    In [1]: import pyarrow.parquet as pq
    
    81 và tới
    In [1]: import pyarrow.parquet as pq
    
    58

    Viết một tệp Parquet được mã hóa

    In [9]: table2 = pq.read_table['example.parquet']
    
    In [10]: table2.to_pandas[]
    Out[10]: 
       one  two  three
    a -1.0  foo   True
    b  NaN  bar  False
    c  2.5  baz   True
    
    0

    Đọc tệp Parquet được mã hóa

    In [9]: table2 = pq.read_table['example.parquet']
    
    In [10]: table2.to_pandas[]
    Out[10]: 
       one  two  three
    a -1.0  foo   True
    b  NaN  bar  False
    c  2.5  baz   True
    
    1

    Để tạo các thuộc tính mã hóa và giải mã, phải tạo và khởi tạo một

    In [2]: import numpy as np
    
    In [3]: import pandas as pd
    
    In [4]: import pyarrow as pa
    
    In [5]: df = pd.DataFrame[{'one': [-1, np.nan, 2.5],
       ...:                    'two': ['foo', 'bar', 'baz'],
       ...:                    'three': [True, False, True]},
       ...:                    index=list['abc']]
       ...: 
    
    In [6]: table = pa.Table.from_pandas[df]
    
    08 với thông tin chi tiết về Máy khách KMS, như được mô tả bên dưới

    Khách hàng KMS

    Các khóa mã hóa chính phải được lưu giữ và quản lý trong Hệ thống quản lý khóa cấp sản xuất [KMS], được triển khai trong tổ chức của người dùng. Sử dụng mã hóa Parquet yêu cầu triển khai lớp máy khách cho máy chủ KMS. Bất kỳ triển khai KmsClient nào cũng phải triển khai giao diện không chính thức được xác định bởi

    In [2]: import numpy as np
    
    In [3]: import pandas as pd
    
    In [4]: import pyarrow as pa
    
    In [5]: df = pd.DataFrame[{'one': [-1, np.nan, 2.5],
       ...:                    'two': ['foo', 'bar', 'baz'],
       ...:                    'three': [True, False, True]},
       ...:                    index=list['abc']]
       ...: 
    
    In [6]: table = pa.Table.from_pandas[df]
    
    09 như sau

    In [9]: table2 = pq.read_table['example.parquet']
    
    In [10]: table2.to_pandas[]
    Out[10]: 
       one  two  three
    a -1.0  foo   True
    b  NaN  bar  False
    c  2.5  baz   True
    
    2

    Việc triển khai cụ thể sẽ được tải trong thời gian chạy bởi một chức năng xuất xưởng do người dùng cung cấp. Chức năng xuất xưởng này sẽ được sử dụng để khởi tạo

    In [2]: import numpy as np
    
    In [3]: import pandas as pd
    
    In [4]: import pyarrow as pa
    
    In [5]: df = pd.DataFrame[{'one': [-1, np.nan, 2.5],
       ...:                    'two': ['foo', 'bar', 'baz'],
       ...:                    'three': [True, False, True]},
       ...:                    index=list['abc']]
       ...: 
    
    In [6]: table = pa.Table.from_pandas[df]
    
    08 để tạo các thuộc tính mã hóa và giải mã tệp

    Ví dụ: để sử dụng

    In [2]: import numpy as np
    
    In [3]: import pandas as pd
    
    In [4]: import pyarrow as pa
    
    In [5]: df = pd.DataFrame[{'one': [-1, np.nan, 2.5],
       ...:                    'two': ['foo', 'bar', 'baz'],
       ...:                    'three': [True, False, True]},
       ...:                    index=list['abc']]
       ...: 
    
    In [6]: table = pa.Table.from_pandas[df]
    
    11 được xác định ở trên

    In [9]: table2 = pq.read_table['example.parquet']
    
    In [10]: table2.to_pandas[]
    Out[10]: 
       one  two  three
    a -1.0  foo   True
    b  NaN  bar  False
    c  2.5  baz   True
    
    3

    Có thể tìm thấy một

    In [2]: import numpy as np
    
    In [3]: import pandas as pd
    
    In [4]: import pyarrow as pa
    
    In [5]: df = pd.DataFrame[{'one': [-1, np.nan, 2.5],
       ...:                    'two': ['foo', 'bar', 'baz'],
       ...:                    'three': [True, False, True]},
       ...:                    index=list['abc']]
       ...: 
    
    In [6]: table = pa.Table.from_pandas[df]
    
    12 của lớp như vậy cho KMS nguồn mở trong kho lưu trữ Apache Arrow GitHub. Ứng dụng khách KMS sản xuất phải được thiết kế với sự hợp tác của các quản trị viên bảo mật của tổ chức và được xây dựng bởi các nhà phát triển có kinh nghiệm trong quản lý kiểm soát truy cập. Khi một lớp như vậy được tạo, nó có thể được chuyển đến các ứng dụng thông qua một phương thức xuất xưởng và được người dùng PyArrow nói chung tận dụng như được hiển thị trong mẫu ghi/đọc sàn gỗ được mã hóa ở trên

    Cấu hình kết nối KMS

    Cấu hình kết nối với KMS [

    In [2]: import numpy as np
    
    In [3]: import pandas as pd
    
    In [4]: import pyarrow as pa
    
    In [5]: df = pd.DataFrame[{'one': [-1, np.nan, 2.5],
       ...:                    'two': ['foo', 'bar', 'baz'],
       ...:                    'three': [True, False, True]},
       ...:                    index=list['abc']]
       ...: 
    
    In [6]: table = pa.Table.from_pandas[df]
    
    13 được sử dụng khi tạo thuộc tính mã hóa và giải mã tệp] bao gồm các tùy chọn sau

    • In [2]: import numpy as np
      
      In [3]: import pandas as pd
      
      In [4]: import pyarrow as pa
      
      In [5]: df = pd.DataFrame[{'one': [-1, np.nan, 2.5],
         ...:                    'two': ['foo', 'bar', 'baz'],
         ...:                    'three': [True, False, True]},
         ...:                    index=list['abc']]
         ...: 
      
      In [6]: table = pa.Table.from_pandas[df]
      
      14, URL của phiên bản KMS

    • In [2]: import numpy as np
      
      In [3]: import pandas as pd
      
      In [4]: import pyarrow as pa
      
      In [5]: df = pd.DataFrame[{'one': [-1, np.nan, 2.5],
         ...:                    'two': ['foo', 'bar', 'baz'],
         ...:                    'three': [True, False, True]},
         ...:                    index=list['abc']]
         ...: 
      
      In [6]: table = pa.Table.from_pandas[df]
      
      15, ID của phiên bản KMS sẽ được sử dụng để mã hóa [nếu có nhiều phiên bản KMS]

    • In [2]: import numpy as np
      
      In [3]: import pandas as pd
      
      In [4]: import pyarrow as pa
      
      In [5]: df = pd.DataFrame[{'one': [-1, np.nan, 2.5],
         ...:                    'two': ['foo', 'bar', 'baz'],
         ...:                    'three': [True, False, True]},
         ...:                    index=list['abc']]
         ...: 
      
      In [6]: table = pa.Table.from_pandas[df]
      
      16, mã thông báo ủy quyền sẽ được chuyển cho KMS

    • In [2]: import numpy as np
      
      In [3]: import pandas as pd
      
      In [4]: import pyarrow as pa
      
      In [5]: df = pd.DataFrame[{'one': [-1, np.nan, 2.5],
         ...:                    'two': ['foo', 'bar', 'baz'],
         ...:                    'three': [True, False, True]},
         ...:                    index=list['abc']]
         ...: 
      
      In [6]: table = pa.Table.from_pandas[df]
      
      17, một từ điển chuỗi có cấu hình dành riêng cho loại KMS

    cấu hình mã hóa

    In [2]: import numpy as np
    
    In [3]: import pandas as pd
    
    In [4]: import pyarrow as pa
    
    In [5]: df = pd.DataFrame[{'one': [-1, np.nan, 2.5],
       ...:                    'two': ['foo', 'bar', 'baz'],
       ...:                    'three': [True, False, True]},
       ...:                    index=list['abc']]
       ...: 
    
    In [6]: table = pa.Table.from_pandas[df]
    
    18 [được sử dụng khi tạo thuộc tính mã hóa tệp] bao gồm các tùy chọn sau

    • In [2]: import numpy as np
      
      In [3]: import pandas as pd
      
      In [4]: import pyarrow as pa
      
      In [5]: df = pd.DataFrame[{'one': [-1, np.nan, 2.5],
         ...:                    'two': ['foo', 'bar', 'baz'],
         ...:                    'three': [True, False, True]},
         ...:                    index=list['abc']]
         ...: 
      
      In [6]: table = pa.Table.from_pandas[df]
      
      19, ID của khóa chính để mã hóa/ký chân trang

    • In [2]: import numpy as np
      
      In [3]: import pandas as pd
      
      In [4]: import pyarrow as pa
      
      In [5]: df = pd.DataFrame[{'one': [-1, np.nan, 2.5],
         ...:                    'two': ['foo', 'bar', 'baz'],
         ...:                    'three': [True, False, True]},
         ...:                    index=list['abc']]
         ...: 
      
      In [6]: table = pa.Table.from_pandas[df]
      
      20, mã hóa cột nào bằng khóa nào. Từ điển có ID khóa chính làm khóa và danh sách tên cột làm giá trị, e. g.
      In [2]: import numpy as np
      
      In [3]: import pandas as pd
      
      In [4]: import pyarrow as pa
      
      In [5]: df = pd.DataFrame[{'one': [-1, np.nan, 2.5],
         ...:                    'two': ['foo', 'bar', 'baz'],
         ...:                    'three': [True, False, True]},
         ...:                    index=list['abc']]
         ...: 
      
      In [6]: table = pa.Table.from_pandas[df]
      
      21

    • In [2]: import numpy as np
      
      In [3]: import pandas as pd
      
      In [4]: import pyarrow as pa
      
      In [5]: df = pd.DataFrame[{'one': [-1, np.nan, 2.5],
         ...:                    'two': ['foo', 'bar', 'baz'],
         ...:                    'three': [True, False, True]},
         ...:                    index=list['abc']]
         ...: 
      
      In [6]: table = pa.Table.from_pandas[df]
      
      22, thuật toán mã hóa Parquet. Có thể là
      In [2]: import numpy as np
      
      In [3]: import pandas as pd
      
      In [4]: import pyarrow as pa
      
      In [5]: df = pd.DataFrame[{'one': [-1, np.nan, 2.5],
         ...:                    'two': ['foo', 'bar', 'baz'],
         ...:                    'three': [True, False, True]},
         ...:                    index=list['abc']]
         ...: 
      
      In [6]: table = pa.Table.from_pandas[df]
      
      23 [mặc định] hoặc
      In [2]: import numpy as np
      
      In [3]: import pandas as pd
      
      In [4]: import pyarrow as pa
      
      In [5]: df = pd.DataFrame[{'one': [-1, np.nan, 2.5],
         ...:                    'two': ['foo', 'bar', 'baz'],
         ...:                    'three': [True, False, True]},
         ...:                    index=list['abc']]
         ...: 
      
      In [6]: table = pa.Table.from_pandas[df]
      
      24

    • In [2]: import numpy as np
      
      In [3]: import pandas as pd
      
      In [4]: import pyarrow as pa
      
      In [5]: df = pd.DataFrame[{'one': [-1, np.nan, 2.5],
         ...:                    'two': ['foo', 'bar', 'baz'],
         ...:                    'three': [True, False, True]},
         ...:                    index=list['abc']]
         ...: 
      
      In [6]: table = pa.Table.from_pandas[df]
      
      25, có nên viết chân trang tệp ở dạng văn bản thuần túy hay không [nếu không thì nó được mã hóa]

    • In [2]: import numpy as np
      
      In [3]: import pandas as pd
      
      In [4]: import pyarrow as pa
      
      In [5]: df = pd.DataFrame[{'one': [-1, np.nan, 2.5],
         ...:                    'two': ['foo', 'bar', 'baz'],
         ...:                    'three': [True, False, True]},
         ...:                    index=list['abc']]
         ...: 
      
      In [6]: table = pa.Table.from_pandas[df]
      
      26, có nên sử dụng gói kép hay không - trong đó các khóa mã hóa dữ liệu [DEK] được mã hóa bằng các khóa mã hóa chính [KEK], sau đó các khóa này được mã hóa bằng các khóa mã hóa chính [MEK]. Nếu được đặt thành
      In [2]: import numpy as np
      
      In [3]: import pandas as pd
      
      In [4]: import pyarrow as pa
      
      In [5]: df = pd.DataFrame[{'one': [-1, np.nan, 2.5],
         ...:                    'two': ['foo', 'bar', 'baz'],
         ...:                    'three': [True, False, True]},
         ...:                    index=list['abc']]
         ...: 
      
      In [6]: table = pa.Table.from_pandas[df]
      
      27, gói đơn sẽ được sử dụng - trong đó DEK được mã hóa trực tiếp bằng MEK

    • In [2]: import numpy as np
      
      In [3]: import pandas as pd
      
      In [4]: import pyarrow as pa
      
      In [5]: df = pd.DataFrame[{'one': [-1, np.nan, 2.5],
         ...:                    'two': ['foo', 'bar', 'baz'],
         ...:                    'three': [True, False, True]},
         ...:                    index=list['abc']]
         ...: 
      
      In [6]: table = pa.Table.from_pandas[df]
      
      28, thời gian tồn tại của các thực thể được lưu trong bộ nhớ cache [khóa mã hóa khóa, khóa gói cục bộ, đối tượng máy khách KMS] được biểu thị dưới dạng
      In [2]: import numpy as np
      
      In [3]: import pandas as pd
      
      In [4]: import pyarrow as pa
      
      In [5]: df = pd.DataFrame[{'one': [-1, np.nan, 2.5],
         ...:                    'two': ['foo', 'bar', 'baz'],
         ...:                    'three': [True, False, True]},
         ...:                    index=list['abc']]
         ...: 
      
      In [6]: table = pa.Table.from_pandas[df]
      
      29

      Có bao nhiêu hàng trong một tập tin sàn gỗ?

      Kích thước tệp trung bình của mỗi tệp Parquet gần như không thay đổi ở mức ~210MB trong khoảng từ 50 triệu đến 251 triệu hàng trước khi tăng lên theo số lượng .

      Python có thể đọc các tệp sàn gỗ không?

      PyArrow bao gồm các liên kết Python với mã này, do đó cũng cho phép đọc và ghi các tệp Parquet bằng gấu trúc .

      Sàn gỗ siêu dữ liệu là gì?

      Sàn gỗ là định dạng tệp mạnh mẽ, một phần vì định dạng này hỗ trợ siêu dữ liệu cho tệp và cột . Lưu trữ lược đồ dữ liệu trong một tệp chính xác hơn so với suy luận lược đồ và ít tẻ nhạt hơn so với chỉ định lược đồ khi đọc tệp.

      Làm thế nào để Python lưu trữ dữ liệu ở định dạng sàn gỗ?

      Giải thích .
      Dòng 1–2. Chúng tôi nhập các gói pandas và os
      Dòng 4. Chúng tôi xác định dữ liệu để xây dựng khung dữ liệu gấu trúc
      Dòng 6. Chúng tôi chuyển đổi dữ liệu thành DataFrame của gấu trúc có tên là df
      dòng 8. Chúng tôi ghi df vào tệp Parquet bằng hàm to_parquet[]

Chủ Đề