MaxCompute V2.0 permite usar tablas externas para acceder a servicios de almacenamiento como Object Storage Service (OSS) y Tablestore. MaxCompute Studio proporciona plantillas de código que facilitan la consulta de datos no estructurados. Este tema describe cómo usar MaxCompute Studio para consultar datos no estructurados.
Requisitos previos
Debe cumplir los siguientes requisitos previos:
Tener un proyecto de MaxCompute conectado. Para obtener más información, consulte Manage project connections.
Tener un módulo Java de MaxCompute creado. Para obtener más información, consulte Create a MaxCompute Java module.
Escritura de un programa StorageHandler, Extractor u Outputer
En el panel Project, haga clic derecho en el directorio de código fuente del módulo (es decir, ) y seleccione .
-
Introduzca un Name, seleccione Extractor, StorageHandler u Outputer como tipo y presione Enter.
Name: Nombre de la clase Java de MaxCompute. Si no ha creado un paquete, introduzca packagename.classname para crearlo automáticamente.
-
Seleccione Extractor, StorageHandler u Outputer como tipo.
NotaSeleccione Extractor, StorageHandler u Outputer según sus necesidades empresariales.
Extractor: Clase que permite configurar la lógica personalizada para leer datos no estructurados.
StorageHandler: Clase que implementa la lógica definida en el programa Extractor u Outputer.
Outputer: Clase que permite configurar la lógica personalizada para escribir datos no estructurados.
Una vez creada la clase, desarrolle un programa Java en el editor de código. La plantilla Java se rellena automáticamente con el código del framework. Solo escriba el código lógico según sus requerimientos.
Depuración del programa Extractor u Outputer
Consulte las pruebas unitarias de ejemplo en el directorio examples para redactar sus casos de prueba.
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);
}
}
Empaquetado y carga del programa
Después de depurar el programa, comprímalo en un paquete JAR y cárguelo al servidor de MaxCompute como recurso. Para obtener más información, consulte Package a Java program, upload the package, and create a MaxCompute UDF.
Consulta de datos no estructurados
En la ventana de herramientas Project, haga clic derecho en scripts y seleccione .
En el campo Script Name, introduzca un nombre para el script. En la lista desplegable MaxCompute Project, seleccione el proyecto destino y haga clic en OK.
-
En el editor de código, introduzca la sentencia SQL para crear una tabla externa y haga clic en el icono
.--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'; -
Cree un script SQL de MaxCompute, introduzca la siguiente sentencia de consulta y haga clic en el icono
para consultar los datos.set odps.task.major.version=unstructured_data; select * from myun_src_external where patientId > 25;
Referencias
Example: Create an OSS external table by using a custom extractor