Todos os produtos
Search
Central de documentação

MaxCompute:Consultar dados não estruturados

Última atualização: Jun 26, 2026

O MaxCompute V2.0 permite o uso de tabelas externas para acessar serviços de armazenamento, como Object Storage Service (OSS) e Tablestore. O MaxCompute Studio oferece modelos de código que facilitam a consulta de dados não estruturados. Este tópico descreve como utilizar o MaxCompute Studio para consultar dados não estruturados.

Pré-requisitos

Certifique-se de atender aos seguintes pré-requisitos:

Escrever um programa StorageHandler, Extractor ou Outputer

  1. No painel Project, clique com o botão direito no diretório de source code do módulo (ou seja, src > main > java) e selecione New > MaxCompute Java.

  2. Insira um Name, selecione Extractor, StorageHandler ou Outputer como tipo e pressione Enter.

    • Name: Nome da classe Java do MaxCompute. Caso ainda não exista um Package, insira packagename.classname para criar um Package automaticamente.

    • Escolha Extractor, StorageHandler ou Outputer como tipo.

      Nota

      A seleção entre Extractor, StorageHandler ou Outputer depende das necessidades do seu negócio.

      • Extractor: classe que possibilita configurar logicamente a leitura de dados não estruturados de forma personalizada.

      • StorageHandler: classe responsável por implementar a lógica definida no programa Extractor ou Outputer.

      • Outputer: classe que viabiliza a configuração personalizada da lógica de escrita de dados não estruturados.

  3. Após criar a classe, desenvolva o programa Java no editor de código. O modelo Java já vem preenchido automaticamente com o código do framework, exigindo apenas que você escreva a lógica conforme seus requisitos.

Depurar o programa Extractor ou Outputer

Utilize os testes unitários de exemplo disponíveis no diretório examples como base para escrever seus casos de teste.

import ...
public class ExtractorTest {
    private String ambulanceFullSchema =
            "vehicle:bigint;id:bigint;patient:bigint;calls:bigint;latitude:d...";
    private String speechDataFullSchema = "sentence_snr:double;id:string";
    @Test
    public void testTextExtractor() throws Exception {
        /**
         * Equivalent to the following SQL:
         *    CREATE EXTERNAL TABLE  ambulance_data_external
         *    ( vehicle bigint, id bigint, patient bigint, calls bigint,
         *      Latitude double, Longitude double, time string, direction string)
         *    STORED BY 'com.aliyun.odps.udf.example.text.TextStorageHandler'
         *    LOCATION 'oss://.../data/ambulance_csv/'
         *    USING 'jar_file_name.jar';
         *
         *    SELECT * FROM ambulance_data_external;
         */
        Column[] externalTableSchema = UnstructuredUtils.parseSchemaString(
                ambulanceFullSchema);
    }
}

Empacotar e enviar o programa

Após depurar o programa, compacte-o em um pacote JAR e envie-o ao servidor MaxCompute como recurso. Para mais informações, consulte Empacotar um programa Java, enviar o pacote e criar uma UDF do MaxCompute.

Consultar dados não estruturados

  1. Na janela de ferramentas Project, clique com o botão direito em scripts e selecione New > MaxCompute SQL Script.

  2. No campo Script Name, insira o nome do script. Na lista suspensa MaxCompute Project, selecione o projeto desejado e clique em OK.

  3. No editor de código, insira a instrução SQL para criar a tabela externa e clique no ícone 运行.

    --name:osd
    --author:liuyi
    --create time:2017-03-07 17:06
    set odps.service.mode=off;
    CREATE EXTERNAL TABLE IF NOT EXISTS myun_src_external
    (
    vehicleId bigint,
    recordId bigint,
    patientId bigint,
    calls bigint,
    locationLatitute double,
    locationLongtitue double,
    recordTime string,
    direction string
    )
    STORED BY 'myun.MyStorageHandler'
    WITH SERDEPROPERTIES('delimiter'='|')
    LOCATION 'oss://oss-cn-hangzhou-zmf.aliyuncs.com/074799/demo/SampleData/CSV/src/'
    USING 'myun.jar';
  4. Crie um script SQL do MaxCompute, insira a instrução de consulta abaixo e clique no ícone 运行 para consultar os dados.

    set odps.task.major.version=unstructured_data;
    select * from myun_src_external where patientId > 25;

Referências

Exemplo: Criar uma tabela externa do OSS usando um extractor personalizado