Este tópico descreve como referenciar um recurso de arquivo usando funções definidas pelo usuário (UDFs) em Python no client do MaxCompute.
Pré-requisitos
Certifique-se de que os seguintes requisitos foram atendidos:
-
O client do MaxCompute está instalado e configurado.
Para obter mais informações sobre como instalar e configurar o client do MaxCompute, consulte Install and configure the MaxCompute client.
-
O arquivo a ser referenciado foi adicionado ao projeto do MaxCompute como recurso.
Neste exemplo, o arquivo test_distcache.txt é adicionado a um projeto do MaxCompute como recurso. O arquivo contém os seguintes dados:
1 a 2 b 3 c 4 dPara obter mais informações sobre como adicionar recursos, consulte Add resources.
Procedimento de desenvolvimento e uso
1. Escrever uma UDF
O código de exemplo a seguir mostra como usar uma UDF em Python para obter dados específicos do arquivo test_distcache.txt.
from odps.udf import annotate
from odps.distcache import get_cache_file
@annotate('bigint->string')
class DistCacheExample(object):
def __init__(self):
cache_file = get_cache_file('test_distcache.txt')
kv = {}
for line in cache_file:
line = line.strip()
if not line:
continue
k, v = line.split()
kv[int(k)] = v
cache_file.close()
self.kv = kv
def evaluate(self, arg):
return self.kv.get(arg)
Salve o código de exemplo anterior como um script Python e armazene-o no diretório bin do client do MaxCompute. Neste exemplo, o nome do script Python é file.py.
2. Fazer upload dos recursos e criar a UDF
Após desenvolver e depurar o código da UDF, faça o upload dos recursos para o MaxCompute usando o client do MaxCompute e crie a UDF.
-
Execute o comando a seguir para adicionar o arquivo de script Python como recurso ao MaxCompute:
add py file.py;O resultado retornado é:
OK: Resource 'file.py' have been created.Para obter mais informações sobre os comandos disponíveis para adicionar recursos ao MaxCompute, consulte Add resources.
-
Execute o comando a seguir para criar uma UDF em Python:
create function file_udf as 'file.DistCacheExample' using 'file.py, test_distcache.txt';Descrição dos parâmetros:
file_udf: nome da UDF em Python a ser criada. A função será chamada posteriormente em uma instrução SQL.file.DistCacheExample:fileé o nome do script file.py.DistCacheExampleé a classe definida no script file.py.
O resultado retornado é:
Success: Function 'file_udf' have been created.Para obter mais informações sobre como criar UDFs, consulte Create a UDF.
3. Usar a UDF
Depois de criar a UDF, execute os comandos a seguir para construir dados de teste e chamar a UDF:
-- Create a test table.
create table file_table (arg bigint);
-- Insert data into the table.
insert into file_table values (1), (4), (15), (123), (7995);
-- Call the created function in the SQL statement to obtain the data that meets the specific requirements from the file resource.
select file_udf(arg) from file_table;
O resultado retornado é:
+-----+
| _c0 |
+-----+
| a |
| d |
| NULL |
| NULL |
| NULL |
+-----+