Bu konu, MaxCompute istemcisinde Python kullanıcı tanımlı işlevlerini (UDF) kullanarak bir dosya kaynağına nasıl başvuracağınızı açıklar.
Ön koşullar
Aşağıdaki gereksinimlerin karşılandığından emin olun:
-
MaxCompute istemcisi yüklü ve yapılandırılmış olmalıdır.
MaxCompute istemcisini yükleme ve yapılandırma hakkında daha fazla bilgi için bkz. MaxCompute istemcisini yükleme ve yapılandırma.
-
Başvurmak istediğiniz dosya, kaynak olarak MaxCompute projenize eklenmiş olmalıdır.
Bu örnekte, test_distcache.txt dosyası kaynak olarak bir MaxCompute projesine eklenir. Dosya aşağıdaki verileri içerir:
1 a 2 b 3 c 4 dKaynak ekleme hakkında daha fazla bilgi için bkz. Kaynak ekleme.
Geliştirme ve kullanım yordamı
1. Bir UDF yazma
Aşağıdaki örnek kod, test_distcache.txt dosyasından belirli gereksinimleri karşılayan verileri almak için bir Python UDF'nin nasıl kullanılacağını gösterir.
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)
Önceki örnek kodu bir Python betiği olarak kaydedin ve bu betiği MaxCompute istemcisindeki bin dizininde saklayın. Bu örnekte, Python betiğinin adı file.py'dir.
2. Kaynakları yükleme ve UDF oluşturma
UDF kodunu geliştirip hata ayıkladıktan sonra, MaxCompute istemcisini kullanarak kaynakları MaxCompute'e yükleyin ve bir UDF oluşturun.
-
Python betiği dosyasını kaynak olarak MaxCompute'e eklemek için aşağıdaki komutu çalıştırın:
add py file.py;Aşağıdaki sonuç döndürülür:
OK: Resource 'file.py' have been created.MaxCompute'e kaynak eklemek için kullanılabilecek komutlar hakkında daha fazla bilgi için bkz. Kaynak ekleme.
-
Bir Python UDF oluşturmak için aşağıdaki komutu çalıştırın:
create function file_udf as 'file.DistCacheExample' using 'file.py, test_distcache.txt';Parametre açıklaması:
file_udf: Oluşturmak istediğiniz Python UDF'sinin adıdır. İşlev daha sonra bir SQL deyimi içinde çağrılır.file.DistCacheExample:filefile.py betiğinin adıdır.DistCacheExamplefile.py betiğinde tanımlanan sınıftır.
Aşağıdaki sonuç döndürülür:
Success: Function 'file_udf' have been created.UDF oluşturma hakkında daha fazla bilgi için bkz. UDF oluşturma.
3. UDF kullanma
UDF oluşturulduktan sonra, test verilerini oluşturmak ve UDF'yi çağırmak için aşağıdaki komutları çalıştırın:
-- 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;
Aşağıdaki sonuç döndürülür:
+-----+
| _c0 |
+-----+
| a |
| d |
| NULL |
| NULL |
| NULL |
+-----+