DatabricksStep Classe
Cria um passo do Pipeline do Azure ML para adicionar um bloco de notas do DataBricks, script python ou JAR como um nó.
Para obter um exemplo de utilização do DatabricksStep, consulte o bloco de notas https://aka.ms/pl-databricks.
Crie um passo do Pipeline do Azure ML para adicionar um bloco de notas do DataBricks, script python ou JAR como um nó.
Para obter um exemplo de utilização do DatabricksStep, consulte o bloco de notas https://aka.ms/pl-databricks.
:p aram python_script_name:[Obrigatório] O nome de um script python relativo a source_directory
.
Se o script utilizar entradas e saídas, estas serão transmitidas para o script como parâmetros.
Se python_script_name
for especificado, tem de source_directory
ser também.
Especifique exatamente um de notebook_path
, python_script_path
, python_script_name
ou main_class_name
.
Se especificar um objeto DataReference como entrada com data_reference_name=input1 e um objeto PipelineData como saída com name=output1, as entradas e saídas serão transmitidas para o script como parâmetros. É assim que serão e terá de analisar os argumentos no script para aceder aos caminhos de cada entrada e saída: "-input1", "wasbs://test@storagename.blob.core.windows.net/test","-output1", "wasbs://test@storagename.blob.core.windows.net/b3e26de1-87a4-494d-a20f-1988d22b81a2/output1"
Além disso, os seguintes parâmetros estarão disponíveis no script:
- AZUREML_RUN_TOKEN: o token AML para autenticação com o Azure Machine Learning.
- AZUREML_RUN_TOKEN_EXPIRY: o tempo de expiração do token AML.
- AZUREML_RUN_ID: ID de Execução do Azure Machine Learning para esta execução.
- AZUREML_ARM_SUBSCRIPTION: subscrição do Azure para a área de trabalho do AML.
- AZUREML_ARM_RESOURCEGROUP: grupo de recursos do Azure para a área de trabalho do Azure Machine Learning.
- AZUREML_ARM_WORKSPACE_NAME: Nome da área de trabalho do Azure Machine Learning.
- AZUREML_ARM_PROJECT_NAME: nome da experimentação do Azure Machine Learning.
- AZUREML_SERVICE_ENDPOINT: o URL do ponto final dos serviços AML.
- AZUREML_WORKSPACE_ID: ID da área de trabalho do Azure Machine Learning.
- AZUREML_EXPERIMENT_ID: ID da experimentação do Azure Machine Learning.
- AZUREML_SCRIPT_DIRECTORY_NAME: caminho do diretório no DBFS onde source_directory foi copiado.
(This parameter is only populated when `python_script_name` is used. See more details below.)
Quando está a executar um script python a partir do seu computador local no Databricks com os parâmetros source_directory
DatabricksStep e python_script_name
, o seu source_directory é copiado para o DBFS e o caminho do diretório no DBFS é transmitido como um parâmetro para o script quando inicia a execução.
Este parâmetro é rotulado como –AZUREML_SCRIPT_DIRECTORY_NAME. Tem de o prefixar com a cadeia "dbfs:/" ou "/dbfs/" para aceder ao diretório no DBFS.
- Herança
-
azureml.pipeline.core._databricks_step_base._DatabricksStepBaseDatabricksStep
Construtor
DatabricksStep(name, inputs=None, outputs=None, existing_cluster_id=None, spark_version=None, node_type=None, instance_pool_id=None, num_workers=None, min_workers=None, max_workers=None, spark_env_variables=None, spark_conf=None, init_scripts=None, cluster_log_dbfs_path=None, notebook_path=None, notebook_params=None, python_script_path=None, python_script_params=None, main_class_name=None, jar_params=None, python_script_name=None, source_directory=None, hash_paths=None, run_name=None, timeout_seconds=None, runconfig=None, maven_libraries=None, pypi_libraries=None, egg_libraries=None, jar_libraries=None, rcran_libraries=None, compute_target=None, allow_reuse=True, version=None, permit_cluster_restart=None)
Parâmetros
- inputs
- list[Union[InputPortBinding, DataReference, PortDataReference, PipelineData]]
Uma lista de ligações de entrada para dados consumidos por este passo. Obtenha isto no bloco de notas com dbutils.widgets.get("input_name"). Pode ser DataReference ou PipelineData. DataReference representa um conjunto de dados existente num arquivo de dados. Essencialmente, este é um caminho num arquivo de dados. O DatabricksStep suporta arquivos de dados que encapsulam o DBFS, o blob do Azure ou o ADLS v1. PipelineData representa dados intermédios produzidos por outro passo num pipeline.
Uma lista de definições de portas de saída para saídas produzidas por este passo. Obtenha isto no bloco de notas com dbutils.widgets.get("output_name"). Deve ser PipelineData.
- existing_cluster_id
- str
Um ID de cluster de um cluster interativo existente na área de trabalho do Databricks. Se estiver a transmitir este parâmetro, não poderá transmitir nenhum dos seguintes parâmetros que são utilizados para criar um novo cluster:
- spark_version
- node_type
- instance_pool_id
- num_workers
- min_workers
- max_workers
- spark_env_variables
- spark_conf
Nota: para criar um novo cluster de tarefas, terá de transmitir os parâmetros acima. Pode transmitir estes parâmetros diretamente ou pode transmiti-los como parte do objeto RunConfiguration com o parâmetro runconfig. Transmitir estes parâmetros diretamente e através de RunConfiguration resulta num erro.
- spark_version
- str
A versão do Spark para o cluster de execução do Databricks, por exemplo: "10.4.x-scala2.12".
Para obter mais informações, veja a descrição do existing_cluster_id
parâmetro .
- node_type
- str
[Obrigatório] Os tipos de nó da VM do Azure para o cluster de execução do Databricks, por exemplo: "Standard_D3_v2". Especifique ou node_type
instance_pool_id
.
Para obter mais informações, veja a descrição do existing_cluster_id
parâmetro .
- instance_pool_id
- str
[Obrigatório] O ID do conjunto de instâncias ao qual o cluster tem de ser anexado.
Especifique ou node_type
instance_pool_id
.
Para obter mais informações, veja a descrição do existing_cluster_id
parâmetro .
- num_workers
- int
[Obrigatório] O número estático de trabalhos para o cluster de execução do Databricks.
Tem de especificar ou num_workers
ambos min_workers
e max_workers
.
Para obter mais informações, veja a descrição do existing_cluster_id
parâmetro .
- min_workers
- int
[Obrigatório] O número mínimo de trabalhos a utilizar para dimensionar automaticamente o cluster de execução do Databricks.
Tem de especificar ou num_workers
ambos min_workers
e max_workers
.
Para obter mais informações, veja a descrição do existing_cluster_id
parâmetro .
- max_workers
- int
[Obrigatório] O número máximo de trabalhos a utilizar para dimensionar automaticamente o cluster de execução do Databricks.
Tem de especificar ou num_workers
ambos min_workers
e max_workers
.
Para obter mais informações, veja a descrição do existing_cluster_id
parâmetro .
- spark_env_variables
- dict
As variáveis de ambiente do Spark para o cluster de execução do Databricks.
Para obter mais informações, veja a descrição do existing_cluster_id
parâmetro .
- spark_conf
- dict
A configuração do Spark para o cluster de execução do Databricks.
Para obter mais informações, veja a descrição do existing_cluster_id
parâmetro .
- init_scripts
- [str]
Preterido. O Databricks anunciou que o script init armazenado no DBFS deixará de funcionar após 1 de dezembro de 2023. Para mitigar o problema, 1) utilize scripts init globais no databricks após https://learn.microsoft.com/azure/databricks/init-scripts/global 2) comentar a linha de init_scripts no passo do AzureML databricks.
- cluster_log_dbfs_path
- str
Os caminhos do DBFS onde os registos de clusters serão entregues.
- notebook_path
- str
[Obrigatório] O caminho para o bloco de notas na instância do Databricks. Esta classe permite quatro formas de especificar o código a executar no cluster do Databricks.
Para executar um bloco de notas presente na área de trabalho do Databricks, utilize: notebook_path=notebook_path, notebook_params={'myparam': 'testparam'}
Para executar um script python presente no DBFS, utilize: python_script_path=python_script_dbfs_path, python_script_params={'arg1', 'arg2'}
Para executar um JAR presente no DBFS, utilize: main_class_name=main_jar_class_name, jar_params={'arg1', 'arg2'}, jar_libraries=[JarLibrary(jar_library_dbfs_path)]
Para executar um script Python presente no computador local, utilize: python_script_name=python_script_name, source_directory=source_directory
Especifique exatamente um de notebook_path
, python_script_path
, python_script_name
ou main_class_name
.
- notebook_params
- dict[str, Union[str, PipelineParameter]]
Um dicionário de parâmetros para passar para o bloco de notas. notebook_params
estão disponíveis como widgets. Pode obter os valores destes widgets no seu bloco de notas com dbutils.widgets.get("myparam").
- python_script_path
- str
[Obrigatório] O caminho para o script python no DBFS.
Especifique exatamente um de notebook_path
, python_script_path
, python_script_name
ou main_class_name
.
- python_script_params
- list[str, PipelineParameter]
Parâmetros para o script python.
- main_class_name
- str
[Obrigatório] O nome do ponto de entrada num módulo JAR.
Especifique exatamente um de notebook_path
, python_script_path
, python_script_name
ou main_class_name
.
- python_script_name
- str
[Obrigatório] O nome de um script python relativo a source_directory
.
Se o script utilizar entradas e saídas, estas serão transmitidas para o script como parâmetros.
Se python_script_name
for especificado, tem de source_directory
ser também.
Especifique exatamente um de notebook_path
, python_script_path
, python_script_name
ou main_class_name
.
Se especificar um objeto DataReference como entrada com data_reference_name=input1 e um objeto PipelineData como saída com name=output1, as entradas e saídas serão transmitidas para o script como parâmetros. É assim que serão e terá de analisar os argumentos no script para aceder aos caminhos de cada entrada e saída: "-input1", "wasbs://test@storagename.blob.core.windows.net/test","-output1", "wasbs://test@storagename.blob.core.windows.net/b3e26de1-87a4-494d-a20f-1988d22b81a2/output1"
Além disso, os seguintes parâmetros estarão disponíveis no script:
- AZUREML_RUN_TOKEN: o token AML para autenticação com o Azure Machine Learning.
- AZUREML_RUN_TOKEN_EXPIRY: o tempo de expiração do token AML.
- AZUREML_RUN_ID: ID de Execução do Azure Machine Learning para esta execução.
- AZUREML_ARM_SUBSCRIPTION: subscrição do Azure para a área de trabalho do AML.
- AZUREML_ARM_RESOURCEGROUP: grupo de recursos do Azure para a área de trabalho do Azure Machine Learning.
- AZUREML_ARM_WORKSPACE_NAME: Nome da área de trabalho do Azure Machine Learning.
- AZUREML_ARM_PROJECT_NAME: nome da experimentação do Azure Machine Learning.
- AZUREML_SERVICE_ENDPOINT: o URL do ponto final dos serviços AML.
- AZUREML_WORKSPACE_ID: ID da área de trabalho do Azure Machine Learning.
- AZUREML_EXPERIMENT_ID: ID da experimentação do Azure Machine Learning.
- AZUREML_SCRIPT_DIRECTORY_NAME: caminho do diretório no DBFS onde source_directory foi copiado.
(Este parâmetro só é preenchido quando
python_script_name
é utilizado. Veja mais detalhes abaixo.)
Quando está a executar um script python a partir do seu computador local no Databricks com os parâmetros source_directory
DatabricksStep e python_script_name
, o seu source_directory é copiado para o DBFS e o caminho do diretório no DBFS é transmitido como um parâmetro para o script quando inicia a execução.
Este parâmetro é rotulado como –AZUREML_SCRIPT_DIRECTORY_NAME. Tem de o prefixar com a cadeia "dbfs:/" ou "/dbfs/" para aceder ao diretório no DBFS.
- source_directory
- str
A pasta que contém o script e outros ficheiros.
Se python_script_name
for especificado, tem de source_directory
ser também.
- hash_paths
- [str]
PRETERIDO: já não é necessário.
Uma lista de caminhos para hash ao verificar se existem alterações nos conteúdos do passo. Se não forem detetadas alterações, o pipeline reutilizará o conteúdo do passo de uma execução anterior. Por predefinição, os conteúdos de source_directory
são transformados em hash, à exceção dos ficheiros listados em .amlignoree ou .gitignore.
- runconfig
- RunConfiguration
O runconfig a utilizar.
Nota: pode transmitir o número de bibliotecas que quiser como dependências para a sua tarefa através dos seguintes parâmetros: maven_libraries
, pypi_libraries
, egg_libraries
, , jar_libraries
ou rcran_libraries
. Transmita estes parâmetros diretamente com os parâmetros correspondentes ou como parte do objeto RunConfiguration com o runconfig
parâmetro, mas não ambos.
- maven_libraries
- list[MavenLibrary]
Bibliotecas do Maven a utilizar para a execução do Databricks.
- pypi_libraries
- list[PyPiLibrary]
Bibliotecas PyPi a utilizar para a execução do Databricks.
- egg_libraries
- list[EggLibrary]
Bibliotecas de ovos a utilizar para a execução do Databricks.
- jar_libraries
- list[JarLibrary]
Bibliotecas jar a utilizar para a execução do Databricks.
- rcran_libraries
- list[RCranLibrary]
Bibliotecas RCran a utilizar para a execução do Databricks.
- compute_target
- str, DatabricksCompute
[Obrigatório] Uma computação do Azure Databricks. Antes de poder utilizar o DatabricksStep para executar os seus scripts ou blocos de notas numa área de trabalho do Azure Databricks, tem de adicionar a área de trabalho do Azure Databricks como um destino de computação à sua área de trabalho do Azure Machine Learning.
- allow_reuse
- bool
Indica se o passo deve reutilizar os resultados anteriores ao executar novamente com as mesmas definições. A reutilização está ativada por predefinição. Se o conteúdo do passo (scripts/dependências), bem como as entradas e os parâmetros permanecerem inalterados, o resultado da execução anterior deste passo será reutilizado. Ao reutilizar o passo, em vez de submeter a tarefa para computação, os resultados da execução anterior são imediatamente disponibilizados para quaisquer passos subsequentes. Se utilizar conjuntos de dados do Azure Machine Learning como entradas, a reutilização é determinada se a definição do conjunto de dados foi alterada e não se os dados subjacentes foram alterados.
- version
- str
Uma etiqueta de versão opcional para denotar uma alteração na funcionalidade do passo.
- permit_cluster_restart
- bool
se existing_cluster_id for especificado, este parâmetro indica se o cluster pode ser reiniciado em nome do utilizador.
- inputs
- list[Union[InputPortBinding, DataReference, PortDataReference, PipelineData]]
Lista de ligações de entrada para dados consumidos por este passo. Obtenha isto no bloco de notas com dbutils.widgets.get("input_name"). Pode ser DataReference ou PipelineData. DataReference representa um conjunto de dados existente num arquivo de dados. Essencialmente, este é um caminho num arquivo de dados. O DatabricksStep suporta arquivos de dados que encapsulam o DBFS, o blob do Azure ou o ADLS v1. PipelineData representa dados intermédios produzidos por outro passo num pipeline.
- outputs
- list[Union[OutputPortBinding, <xref:azureml.pipeline.core.pipeline_output_dataset.PipelineOutputDataset>, PipelineData]]
Uma lista de definições de portas de saída para saídas produzidas por este passo. Obtenha isto no bloco de notas com dbutils.widgets.get("output_name"). Deve ser PipelineData.
- existing_cluster_id
- str
Um ID de cluster de um cluster interativo existente na área de trabalho do Databricks. Se estiver a transmitir este parâmetro, não poderá transmitir nenhum dos seguintes parâmetros que são utilizados para criar um novo cluster:
- spark_version
- node_type
- instance_pool_id
- num_workers
- min_workers
- max_workers
- spark_env_variables
- spark_conf
Nota: para criar um novo cluster de tarefas, terá de transmitir os parâmetros acima. Pode transmitir estes parâmetros diretamente ou pode passá-los como parte do objeto RunConfiguration com o parâmetro runconfig. Transmitir estes parâmetros diretamente e através de RunConfiguration resulta num erro.
- spark_version
- str
A versão do Spark para o cluster de execução do Databricks, por exemplo: "10.4.x-scala2.12".
Para obter mais informações, veja a descrição do existing_cluster_id
parâmetro .
- node_type
- str
[Obrigatório] Os tipos de nó da VM do Azure para o cluster de execução do Databricks, por exemplo: "Standard_D3_v2". Especifique ou node_type
instance_pool_id
.
Para obter mais informações, veja a descrição do existing_cluster_id
parâmetro .
- instance_pool_id
- str
[Obrigatório] O ID do conjunto de instâncias ao qual o cluster precisa de ser anexado.
Especifique ou node_type
instance_pool_id
.
Para obter mais informações, veja a descrição do existing_cluster_id
parâmetro .
- num_workers
- int
[Obrigatório] O número estático de trabalhos do cluster de execução do Databricks.
Tem de especificar ou num_workers
ambos min_workers
e max_workers
.
Para obter mais informações, veja a descrição do existing_cluster_id
parâmetro .
- min_workers
- int
[Obrigatório] O número mínimo de trabalhadores a utilizar para dimensionar automaticamente o cluster de execução do Databricks.
Tem de especificar ou num_workers
ambos min_workers
e max_workers
.
Para obter mais informações, veja a descrição do existing_cluster_id
parâmetro .
- max_workers
- int
[Obrigatório] O número máximo de trabalhadores a utilizar para dimensionar automaticamente o cluster de execução do Databricks.
Tem de especificar ou num_workers
ambos min_workers
e max_workers
.
Para obter mais informações, veja a descrição do existing_cluster_id
parâmetro .
- spark_env_variables
- dict
As variáveis de ambiente spark para o cluster de execução do Databricks.
Para obter mais informações, veja a descrição do existing_cluster_id
parâmetro .
- spark_conf
- dict
A configuração do Spark para o cluster de execução do Databricks.
Para obter mais informações, veja a descrição do existing_cluster_id
parâmetro .
- init_scripts
- [str]
Preterido. O Databricks anunciou que o script init armazenado no DBFS deixará de funcionar após 1 de dezembro de 2023. Para mitigar o problema, utilize scripts init globais no databricks após https://learn.microsoft.com/azure/databricks/init-scripts/global 2) para comentar a linha de init_scripts no passo do AzureML databricks.
- cluster_log_dbfs_path
- str
Os caminhos do DBFS onde os registos de clusters devem ser entregues.
- notebook_path
- str
[Obrigatório] O caminho para o bloco de notas na instância do Databricks. Esta classe permite quatro formas de especificar o código a executar no cluster do Databricks.
Para executar um bloco de notas presente na área de trabalho do Databricks, utilize: notebook_path=notebook_path, notebook_params={'myparam': 'testparam'}
Para executar um script python presente no DBFS, utilize: python_script_path=python_script_dbfs_path, python_script_params={'arg1', 'arg2'}
Para executar um JAR presente no DBFS, utilize: main_class_name=main_jar_class_name, jar_params={'arg1', 'arg2'}, jar_libraries=[JarLibrary(jar_library_dbfs_path)]
Para executar um script Python presente no computador local, utilize: python_script_name=python_script_name, source_directory=source_directory
Especifique exatamente um de notebook_path
, python_script_path
, python_script_name
ou main_class_name
.
- notebook_params
- dict[str, (str ou PipelineParameter)]
Um dicionário de parâmetros para passar para o bloco de notas. notebook_params
estão disponíveis como widgets. Pode obter os valores destes widgets no seu bloco de notas com dbutils.widgets.get("myparam").
- python_script_path
- str
[Obrigatório] O caminho para o script python no DBFS.
Especifique exatamente um de notebook_path
, python_script_path
, python_script_name
ou main_class_name
.
- main_class_name
- str
[Obrigatório] O nome do ponto de entrada num módulo JAR.
Especifique exatamente um de notebook_path
, python_script_path
, python_script_name
ou main_class_name
.
- source_directory
- str
A pasta que contém o script e outros ficheiros.
Se python_script_name
for especificado, tem de source_directory
ser também.
- hash_paths
- [str]
PRETERIDO: já não é necessário.
Uma lista de caminhos para hash ao verificar se existem alterações nos conteúdos do passo. Se não forem detetadas alterações, o pipeline reutilizará o conteúdo do passo de uma execução anterior. Por predefinição, os conteúdos de source_directory
são transformados em hash, à exceção dos ficheiros listados em .amlignoree ou .gitignore.
- runconfig
- RunConfiguration
O runconfig a utilizar.
Nota: pode transmitir o número de bibliotecas que quiser como dependências para a sua tarefa através dos seguintes parâmetros: maven_libraries
, pypi_libraries
, egg_libraries
, , jar_libraries
ou rcran_libraries
. Transmita estes parâmetros diretamente com os parâmetros correspondentes ou como parte do objeto RunConfiguration com o runconfig
parâmetro, mas não ambos.
- maven_libraries
- list[<xref:azureml.core.runconfig.MavenLibrary>]
Bibliotecas do Maven a utilizar para a execução do Databricks.
Para obter mais informações sobre a especificação das bibliotecas do Maven, consulte help(azureml.core.runconfig.MavenLibrary)
.
- pypi_libraries
- list[<xref:azureml.core.runconfig.PyPiLibrary>]
Bibliotecas PyPi a utilizar para a execução do Databricks.
Para obter mais informações sobre a especificação das bibliotecas PyPi, consulte help(azureml.core.runconfig.PyPiLibrary)
.
- egg_libraries
- list[<xref:azureml.core.runconfig.EggLibrary>]
Bibliotecas de ovos a utilizar para a execução do Databricks.
Para obter mais informações sobre a especificação das bibliotecas de Ovos, consulte help(azureml.core.runconfig.EggLibrary)
.
- jar_libraries
- list[<xref:azureml.core.runconfig.JarLibrary>]
Bibliotecas jar a utilizar para a execução do Databricks.
Para obter mais informações sobre a especificação das bibliotecas Jar, consulte help(azureml.core.runconfig.JarLibrary)
.
- rcran_libraries
- list[<xref:azureml.core.runconfig.RCranLibrary>]
Bibliotecas RCran a utilizar para a execução do Databricks.
Para obter mais informações sobre a especificação das bibliotecas RCran, consulte help(azureml.core.runconfig.RCranLibrary)
.
- compute_target
- str, DatabricksCompute
[Obrigatório] Computação do Azure Databricks. Antes de poder utilizar o DatabricksStep para executar os seus scripts ou blocos de notas numa área de trabalho do Azure Databricks, tem de adicionar a área de trabalho do Azure Databricks como um destino de computação à sua área de trabalho do Azure Machine Learning.
- allow_reuse
- bool
Indica se o passo deve reutilizar os resultados anteriores ao executar novamente com as mesmas definições. A reutilização está ativada por predefinição. Se o conteúdo do passo (scripts/dependências), bem como as entradas e os parâmetros permanecerem inalterados, o resultado da execução anterior deste passo será reutilizado. Ao reutilizar o passo, em vez de submeter a tarefa para computação, os resultados da execução anterior são imediatamente disponibilizados para quaisquer passos subsequentes. Se utilizar conjuntos de dados do Azure Machine Learning como entradas, a reutilização é determinada se a definição do conjunto de dados foi alterada e não se os dados subjacentes foram alterados.
- version
- str
Uma etiqueta de versão opcional para denotar uma alteração na funcionalidade do passo.
- permit_cluster_restart
- bool
se existing_cluster_id for especificado, este parâmetro indica se o cluster pode ser reiniciado em nome do utilizador.
Métodos
create_node |
Crie um nó a partir do passo Databricks e adicione-o ao gráfico especificado. Este método não se destina a ser utilizado diretamente. Quando um pipeline é instanciado com este passo, o Azure ML transmite automaticamente os parâmetros necessários através deste método para que esse passo possa ser adicionado a um gráfico de pipeline que represente o fluxo de trabalho. |
create_node
Crie um nó a partir do passo Databricks e adicione-o ao gráfico especificado.
Este método não se destina a ser utilizado diretamente. Quando um pipeline é instanciado com este passo, o Azure ML transmite automaticamente os parâmetros necessários através deste método para que esse passo possa ser adicionado a um gráfico de pipeline que represente o fluxo de trabalho.
create_node(graph, default_datastore, context)
Parâmetros
- default_datastore
- Union[AbstractAzureStorageDatastore, AzureDataLakeDatastore]
O arquivo de dados predefinido.
- context
- <xref:azureml.pipeline.core._GraphContext>
O contexto do gráfico.
Devoluções
O nó criado.
Tipo de retorno
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários