Este tópico descreve como usar um nó PyODPS para evitar baixar dados para um diretório local durante o processamento ou para processar dados online.
Informações básicas
O PyODPS oferece diversos métodos para baixar dados para um diretório local. Você pode baixar os dados para processá-los e, em seguida, enviá-los de volta ao MaxCompute. No entanto, o processamento local é ineficiente, pois não aproveita a capacidade de processamento massivamente paralelo do MaxCompute. Se o volume de dados for superior a 10 MB, evite baixá-los para um diretório local. Use um dos seguintes métodos para baixar dados:
Use os métodos head, tail ou to_pandas. Na maioria dos casos, use
headoutailpara obter pequenos volumes de dados. Para grandes volumes, use o método persist para armazenar os dados em uma tabela do MaxCompute. Para mais informações, consulte Execute and obtain results.Use o método open_reader. Execute open_reader em uma tabela ou instância SQL para obter os dados. Se precisar processar grandes volumes, use PyODPS DataFrame ou MaxCompute SQL. Um objeto PyODPS DataFrame é criado com base em uma tabela do MaxCompute e oferece maior eficiência que o processamento local.
Código de exemplo
Converta uma string JSON em várias linhas. Cada linha consiste em uma chave e seu respectivo valor.
-
Para testes locais, use o método
headpara obter pequenos volumes de dadosIn [12]: df.head(2) json 0 {"a": 1, "b": 2} 1 {"c": 4, "b": 3} In [14]: from odps.df import output In [16]: @output(['k', 'v'], ['string', 'int']) ...: def h(row): ...: import json ...: for k, v in json.loads(row.json).items(): ...: yield k, v ...: In [21]: df.apply(h, axis=1).head(4) k v 0 a 1 1 b 2 2 c 4 3 b 3 -
Para produção online, use o método
persistpara armazenar grandes volumes de dados em uma tabela do MaxComputeIn [14]: from odps.df import output In [16]: @output(['k', 'v'], ['string', 'int']) ...: def h(row): ...: import json ...: for k, v in json.loads(row.json).items(): ...: yield k, v ...: In [21]: df.apply(h, axis=1).persist('my_table')