Atualizar o Job quando o usuário atualizar o espaço de trabalho legado para Unity Catalog
Quando o senhor faz upgrade do espaço de trabalho legado para Unity Catalog, talvez seja necessário atualizar o trabalho existente para fazer referência às tabelas e aos caminhos de arquivo atualizados. A tabela a seguir lista cenários típicos e sugestões para atualizar seu Job.
Cenário | soluções |
---|---|
Job está usando um Notebook que tem referências a uma biblioteca personalizada por meio de um init script ou de uma biblioteca definida por clustering. Uma biblioteca personalizada seria definida como um pacote | Modifique a biblioteca personalizada para garantir que:
|
Job está usando um Notebook que está lendo ou gravando em uma tabela do site Hive metastore. |
|
Job está usando um Notebook que está lendo ou gravando em caminhos que são subpastas de tabelas. Isso não é possível no Unity Catalog. |
|
Job está usando um Notebook que está lendo ou gravando em caminhos de montagem que são tabelas registradas em Unity Catalog |
|
Job está usando um Notebook que lê ou grava arquivos, não tabelas, por meio de caminhos de montagem. | Em vez disso, altere o código para gravar em um local de volume. |
Job é um Job de transmissão que usa | Não há suporte no momento. Considere a possibilidade de reescrever, se possível, ou não tente refatorar esse trabalho até que o suporte seja fornecido. |
Job é um Job de transmissão que usa o modo de processamento contínuo. | O modo de processamento contínuo é experimental no Spark e não é compatível com o Unity Catalog. Refatorar o trabalho para usar a transmissão estruturada. Se isso não for possível, considere manter o trabalho em execução no site Hive metastore. |
Job é um trabalho de transmissão que usa diretórios de ponto de verificação. |
|
Job tem uma definição de clustering abaixo de Databricks Runtime 11.3. |
|
Job tem Notebook que interage com armazenamento ou tabelas. | A entidade de serviço na qual o trabalho foi executado deve ter acesso de leitura e gravação aos recursos necessários em Unity Catalog, como volumes, tabelas, locais externos e assim por diante. |
Job é um pipeline declarativo LakeFlow. |
|
Job O senhor tem um Notebook que usa um serviço de nuvem sem armazenamento, como o AWSKinesis, e a configuração usada para se conectar usa um instance profile. |
|
Job usos Scala |
|
Job tem Notebook que usa Scala UDFs |
|
Job tem tarefas que usam MLR | execução no site dedicado compute. |
Job tem configuração de clustering que depende do script de inicialização global. |
|
Job tem configuração de clustering ou Notebook que usa jars/Maven, extensões de Spark ou fonte de dados personalizada (de Spark). |
|
Job tem o Notebook que usa PySpark UDFs. | Use o site Databricks Runtime 13.2 ou o acima. |
Job tem Notebook que tem Python código que faz chamadas de rede. | Use o site Databricks Runtime 12.2 ou o acima. |
Job tem o Notebook que usa Pandas UDFs (escalar). | Use o site Databricks Runtime 13.2 ou o acima. |
Job usará o site Unity Catalog Volumes. | Use o site Databricks Runtime 13.3 ou o acima. |
Job tem Notebook que usa |
Em vez de
Em vez de
Para a execução do setDefaultCatalog
|
Job tem um Notebook que usa o DButils interno API: comando Contexto e execução usando um clustering compartilhado. Cargas de trabalho que tentam acessar o acesso ao comando, por exemplo, para recuperar um ID de trabalho, usando
| Em vez de Requer o Databricks Runtime 13.3 LTS+ |
Job tem Notebook que usa PySpark: spark.udf.registerJavaFunction e execução usando um clustering compartilhado |
|
Job tem Notebook que usa RDDs: sc.parallelize & spark.read.json() para converter um objeto JSON em um DF e execução usando um clustering compartilhado |
Exemplo - Antes:
Depois de:
|
Job tem Notebook que usa RDDs: Empty Dataframe via sc.emptyRDD() e execução usando um clustering compartilhado | Exemplo - Antes:
Depois de:
|
Job tem Notebook que usa RDDs: mapPartitions (lógica de inicialização cara + operações mais baratas por linha) e execução usando um clustering compartilhado |
Unity Catalog clustering compartilhado usando o Spark Connect para a comunicação entre os programas Python / Scala e o servidor Spark, fazendo com que os RDDs não sejam mais acessíveis. Antes: Um caso de uso típico de RDDs é executar a lógica de inicialização cara apenas uma vez e, em seguida, realizar operações mais baratas por linha. Esse caso de uso pode ser a chamada de um serviço externo ou a inicialização da lógica de criptografia. Depois de: Reescrever operações RDD usando a API Dataframe e usando UDFs Arrow nativas do PySpark. |
Job tem Notebook que usa SparkContext (sc) & sqlContext e execução usando um clustering compartilhado |
Spark Context (sc) & sqlContext não estão disponíveis por design devido à arquitetura de clustering compartilhado Unity Catalog e ao SparkConnect. Como resolver: Use a variável spark para interagir com a instância SparkSession Limitações: O Spark JVM não pode ser acessado diretamente do Python / Scala REPL, somente via Spark comando. Isso significa que o comando sc._jvm falhará por padrão. Os seguintes comandos sc não são suportados: emptyRDD, range, init_batched_serializer, parallelize, pickleFile, textFile, wholeTextFiles, binaryFiles, binaryRecords, sequenceFile, newAPIHadoopFile, newAPIHadoopRDD, hadoopFile, hadoopRDD, union, runJob, setSystemProperty, uiWebUrl, stop, setJobGroup, setLocalProperty, getConf |
Job tem Notebook que usa Spark Conf - sparkContext.getConf e execução usando um clustering compartilhado |
sparkContext, df.sparkContext, sc.sparkContext e APIs semelhantes não estão disponíveis por padrão. Como resolver: Em vez disso, use spark.conf |
Job tem Notebook que usa SparkContext - SetJobDescription() e execução usando um clustering compartilhado |
sc.setJobDescription("strings") não estão disponíveis por design devido à arquitetura de clustering compartilhado Unity Catalog e ao SparkConnect. Como resolver: Use tags em vez disso, se possível [PySpark docs]. spark.addTag () pode anexar uma tag, e getTags () e interruptTag (tag) podem ser usados para agir sobre a presença/ausência de uma tag Requer o Databricks Runtime 14.1+ |
Job tem o Notebook que define os níveis de registro Spark usando o comando, como sc.setLogLevel("INFO"), e a execução usando um clustering compartilhado |
Em Single-User e sem clustering de isolamento, é possível acessar o contexto Spark para definir dinamicamente o nível log nos drivers e no executor diretamente. No clustering compartilhado, esse método não era acessível pelo contexto Spark e, em Databricks Runtime 14+, o contexto Spark não está mais disponível. Como resolver: Para controlar o nível de log sem fornecer um log4j.conf, agora é possível usar um valor de configuração Spark nas configurações de clustering. Use os níveis de registro do Spark definindo spark.log.level como DEBUG, WARN, INFO, ERROR como um valor de configuração do Spark nas configurações de clustering. |
Job tem Notebook que usa expressões/consultas profundamente aninhadas e execução usando um clustering compartilhado |
RecursionError / Nível máximo de aninhamento do Protobuf excedido (para expressões/consultas profundamente aninhadas) Ao criar recursivamente expressões e DataFrames profundamente aninhados usando a API DataFrame do PySpark, é possível que, em certos casos, ocorra uma das seguintes situações:
Como resolver: Para contornar o problema, identifique os caminhos de código profundamente aninhados e reescreva-os usando expressões lineares/subconsultas ou exibições temporárias. Por exemplo: em vez de chamar recursivamente df.withColumn, chame df.withColumns (dict). |
Job tem Notebook que usa input_file_name() no código e execução usando um clustering compartilhado |
input_file_name() não é suportado em Unity Catalog para clustering compartilhado. Como resolver: Para obter o nome do arquivo
funcionará para spark.read Para obter todo o caminho do arquivo
funcionará para spark.read |
Job possui um Notebook que realiza operações de dados em sistemas de arquivos DBFS e execução usando um clustering compartilhado |
Ao usar o site DBFS com clustering compartilhado usando o serviço FUSE, ele não consegue acessar o sistema de arquivos e gera um erro de arquivo não encontrado Exemplo: Veja a seguir alguns exemplos de falha no acesso ao DBFS por meio de clustering compartilhado
Como resolver: Qualquer um dos usos -
|