Todos os produtos
Search
Central de documentação

MaxCompute:Content Processing (Python)

Última atualização: Sep 02, 2026

Este tópico apresenta exemplos de uso da Object Table para consultar, filtrar e processar dados não estruturados armazenados no Object Storage Service (OSS).

Faturamento

O modelo de faturamento varia conforme a operação:

Operação

Modelo de faturamento

Cálculo do volume de dados de entrada

Atualizar metadados em cache

Pagamento conforme o uso, modelo de tabela externa

Quantidade de arquivos no OSS (não considera o tamanho dos arquivos)

Visualizar, filtrar ou ordenar objetos

Pagamento conforme o uso, modelo de tabela interna

Metadados armazenados na Delta Table dentro do MaxCompute

Chamar uma UDF para processar o conteúdo do arquivo

Pagamento conforme o uso, modelo de tabela externa

Tamanho real dos arquivos no OSS

Use a filtragem por metadados para evitar a leitura desnecessária de arquivos em pastas do OSS durante as tarefas de processamento.

Para mais informações, consulte Object Table billing.

Pré-requisitos

Antes de começar, verifique se você tem:

  • Um bucket do OSS chamado object-table-bucket com uma pasta chamada ot_openlake

  • Os dados não estruturados do arquivo unstructured_data.zip carregados na pasta ot_openlake

  • Um MaxCompute project com o schema feature enabled. Os exemplos usam o UID da conta 111740****241234, a região cn-shenzhen e o nome do projeto lakehouse_yunqi_demo_sz

Colunas de metadados disponíveis

Cada linha em uma Object Table representa um objeto do OSS. As colunas a seguir estão disponíveis para consultas, filtros e ordenação:

Coluna

Tipo

Descrição

key

STRING

Caminho relativo do objeto no local do OSS

size

BIGINT

Tamanho do objeto em bytes

Criar uma Object Table

SET odps.namespace.schema=true;
DROP TABLE IF EXISTS lakehouse_yunqi_demo_sz.default.ot_openlake_demo;

CREATE OBJECT TABLE lakehouse_yunqi_demo_sz.default.ot_openlake_demo
WITH SERDEPROPERTIES (
  'odps.properties.rolearn'='acs:ram::111740****241234:role/aliyunodpsdefaultrole')
LOCATION 'oss://oss-cn-shenzhen-internal.aliyuncs.com/object-table-bucket/ot_openlake/';

Visualizar a Object Table

SET odps.namespace.schema=true;
SHOW TABLES;

O resultado retornado é o seguinte.

111740****241234:ot_openlake_demo

Visualizar a instrução CREATE TABLE

SET odps.namespace.schema=true;
SHOW CREATE TABLE ot_openlake_demo;

O resultado retornado é o seguinte.

CREATE OBJECT TABLE IF NOT EXISTS lakehouse_yunqi_demo_sz.`default`.ot_openlake_demo
WITH SERDEPROPERTIES (
  'serialization.format'='1',
  'odps.properties.rolearn'='acs:ram::111740****241234:role/aliyunodpsdefaultrole')
LOCATION 'oss://oss-cn-shenzhen-internal.aliyuncs.com/object-table-bucket/ot_openlake/'
TBLPROPERTIES (
  'last_modified_time'='1726564699',
  'transient_lastDdlTime'='1726564699',
  'metadata.cache.mode'='manual',
  'metadata.staleness.seconds'='3600');

Atualizar metadados em cache

SET odps.namespace.schema=true;
ALTER TABLE ot_openlake_demo REFRESH METADATA;

Contar objetos na Object Table

SET odps.namespace.schema=true;
SELECT COUNT(*) AS ROW_COUNT FROM ot_openlake_demo;

O resultado retornado é o seguinte.

+---------+
|row_count|
+---------+
|4        |
+---------+

Consultar, filtrar e ordenar objetos

Cada exemplo a seguir aborda um cenário diferente de filtragem. Combine as condições conforme necessário.

Filtrar por extensão de arquivo:

SET odps.namespace.schema=true;
SELECT key, size FROM ot_openlake_demo
WHERE key LIKE '%.json';

Filtrar por tamanho:

SET odps.namespace.schema=true;
SELECT key, size FROM ot_openlake_demo
WHERE size > 100;

Filtrar por extensão e tamanho, com ordenação decrescente por tamanho:

SET odps.namespace.schema=true;
SELECT key, size FROM ot_openlake_demo
WHERE key LIKE '%.json'
  AND size > 100
ORDER BY size DESC
LIMIT 10;

O resultado retornado é o seguinte.

+-----------------+-------+
|key              | size  |
+-----------------+-------+
|hex-char.json    | 122   |
+-----------------+-------+

Chamar uma UDF para extrair texto de PDF

O fluxo de trabalho para extrair texto de um arquivo PDF no OSS consiste nas etapas a seguir:

  1. Carregue o script da função definida pelo usuário (UDF) e seu pacote de dependências no projeto MaxCompute.

  2. Registre a UDF.

  3. Consulte a Object Table, passando a chave do objeto e o conteúdo binário para a UDF.

Etapa 1: Carregar e registrar a UDF

Baixe os arquivos binary_pdf2text.py e pdf_tools_cp37.tar.gz e execute o SQL a seguir para carregar os arquivos e registrar a UDF no seu projeto MaxCompute:

-- Upload files to the MaxCompute project.
ADD py binary_pdf2text.py -f;
ADD archive pdf_tools_cp37.tar.gz -f;

-- Register the UDF.
CREATE FUNCTION pdf2text AS binary_pdf2text.ExtractPDFText
  USING 'binary_pdf2text.py, pdf_tools_cp37.tar.gz' -f;

Etapa 2: Extrair texto de um PDF

A consulta passa dois argumentos para pdf2text: a chave do objeto (seu caminho na Object Table) e o conteúdo binário obtido por GET_DATA_FROM_OSS. Para mais informações sobre GET_DATA_FROM_OSS, consulte Query object content for business computing.

Baixe o arquivo demoday.pdf e carregue-o na pasta ot_openlake. Em seguida, execute:

SET odps.namespace.schema=true;
SET odps.sql.python.version=cp37;
SELECT key, size, get_json_object(
  pdf2text(
    key,
    GET_DATA_FROM_OSS("lakehouse_yunqi_demo_sz.default.ot_openlake_demo", key)
  ),'$.text.0'
) AS text
FROM ot_openlake_demo
WHERE ends_with(cast(key as string), 'demoday.pdf') = true;

O resultado retornado é o seguinte.

+------------+------------+------------+
| key        | size       | text       |
+------------+------------+------------+
| demoday.pdf | 261567    | Simple Home Styling Simple Home Styling Easy Decorating To get started, just tap or click this placeholder text and begin typing. You can view and edit this document on your Mac, iPad, iPhone, or on...

Próximos passos

No console do DataWorks, use o exemplo Process unstructured data based on OpenLake and Object Table disponível na DataWorks Gallery para explorar todos os recursos da Object Table.