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:
Um projeto do MaxCompute está conectado. Para mais informações, consulte Gerenciar conexões de projeto.
Um módulo Java do MaxCompute foi criado. Para mais detalhes, veja Criar um módulo Java do MaxCompute.
Escrever um programa StorageHandler, Extractor ou Outputer
No painel Project, clique com o botão direito no diretório de source code do módulo (ou seja, ) e selecione .
-
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.
NotaA 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.
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
Na janela de ferramentas Project, clique com o botão direito em scripts e selecione .
No campo Script Name, insira o nome do script. Na lista suspensa MaxCompute Project, selecione o projeto desejado e clique em OK.
-
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'; -
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