Snowpark Migration Accelerator: Códigos de problema para Spark - Scala¶
SPRKSCL1126¶
Mensagem: org.apache.spark.sql.functions.covar_pop tem uma solução alternativa, consulte a documentação para obter mais informações
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.functions.covar_pop, que tem uma solução alternativa.
Entrada
Abaixo está um exemplo da função org.apache.spark.sql.functions.covar_pop
, usada primeiro com nomes de coluna como argumentos e depois com objetos de coluna.
val df = Seq(
(10.0, 100.0),
(20.0, 150.0),
(30.0, 200.0),
(40.0, 250.0),
(50.0, 300.0)
).toDF("column1", "column2")
val result1 = df.select(covar_pop("column1", "column2").as("covariance_pop"))
val result2 = df.select(covar_pop(col("column1"), col("column2")).as("covariance_pop"))
Saída
O SMA adiciona o EWI SPRKSCL1126
ao código de saída para que você saiba que essa função não é totalmente compatível com o Snowpark, mas que há uma solução alternativa.
val df = Seq(
(10.0, 100.0),
(20.0, 150.0),
(30.0, 200.0),
(40.0, 250.0),
(50.0, 300.0)
).toDF("column1", "column2")
/*EWI: SPRKSCL1126 => org.apache.spark.sql.functions.covar_pop has a workaround, see documentation for more info*/
val result1 = df.select(covar_pop("column1", "column2").as("covariance_pop"))
/*EWI: SPRKSCL1126 => org.apache.spark.sql.functions.covar_pop has a workaround, see documentation for more info*/
val result2 = df.select(covar_pop(col("column1"), col("column2")).as("covariance_pop"))
Correção recomendada
O Snowpark tem uma função equivalente covar_pop que recebe dois objetos de coluna como argumentos. Por esse motivo, a sobrecarga do Spark que recebe dois objetos de coluna como argumentos é diretamente suportada pelo Snowpark e não exige nenhuma alteração.
Para a sobrecarga que recebe dois argumentos de cadeia de caracteres, você pode converter as cadeias de caracteres em objetos de coluna usando a função com.snowflake.snowpark.functions.col como solução alternativa.
val df = Seq(
(10.0, 100.0),
(20.0, 150.0),
(30.0, 200.0),
(40.0, 250.0),
(50.0, 300.0)
).toDF("column1", "column2")
val result1 = df.select(covar_pop(col("column1"), col("column2")).as("covariance_pop"))
val result2 = df.select(covar_pop(col("column1"), col("column2")).as("covariance_pop"))
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1112¶
Mensagem: _ spark element _ is not supported
Categoria: Erro de conversão
Descrição¶
Esse problema aparece quando o SMA detecta o uso de um elemento Spark que não é compatível com o Snowpark e que não tem seu próprio código de erro associado a ele. Esse é um código de erro genérico usado pelo SMA para qualquer elemento Spark sem suporte.
Cenário¶
Entrada
Abaixo está um exemplo de um elemento Spark que não é compatível com o Snowpark e, portanto, gera este EWI.
val df = session.range(10)
val result = df.isLocal
Saída
O SMA adiciona o EWI SPRKSCL1112
ao código de saída para que você saiba que esse elemento não é compatível com o Snowpark.
val df = session.range(10)
/*EWI: SPRKSCL1112 => org.apache.spark.sql.Dataset.isLocal is not supported*/
val result = df.isLocal
Correção recomendada
Como esse é um código de erro genérico que se aplica a uma série de funções sem suporte, não há uma correção única e específica. A ação apropriada dependerá do elemento específico em uso.
Observe que, mesmo que o elemento não seja compatível, isso não significa necessariamente que não seja possível encontrar uma solução ou solução alternativa. Isso significa apenas que o próprio SMA não consegue encontrar a solução.
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1143¶
Mensagem: Ocorreu um erro ao carregar a tabela de símbolos
Categoria: Erro de conversão
Descrição¶
Esse problema aparece quando há um erro ao carregar os símbolos da tabela de símbolos do SMA. A tabela de símbolos faz parte da arquitetura subjacente do SMA, permitindo conversões mais complexas.
Recomendações adicionais¶
É improvável que isso seja um erro no próprio código-fonte, mas sim um erro na forma como o SMA processa o código-fonte. A melhor solução seria publicar um problema no SMA.
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1153¶
Aviso
Esse código de problema está obsoleto desde o Spark Conversion Core Version 4.3.2
Mensagem: org.apache.spark.sql.functions.max tem uma solução alternativa, consulte a documentação para obter mais informações
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.functions.max, que tem uma solução alternativa.
Cenário¶
Entrada
Abaixo está um exemplo da função org.apache.spark.sql.functions.max
, usada primeiro com um nome de coluna como argumento e depois com um objeto de coluna.
val df = Seq(10, 12, 20, 15, 18).toDF("value")
val result1 = df.select(max("value"))
val result2 = df.select(max(col("value")))
Saída
O SMA adiciona o EWI SPRKSCL1153
ao código de saída para que você saiba que essa função não é totalmente compatível com o Snowpark, mas que há uma solução alternativa.
val df = Seq(10, 12, 20, 15, 18).toDF("value")
/*EWI: SPRKSCL1153 => org.apache.spark.sql.functions.max has a workaround, see documentation for more info*/
val result1 = df.select(max("value"))
/*EWI: SPRKSCL1153 => org.apache.spark.sql.functions.max has a workaround, see documentation for more info*/
val result2 = df.select(max(col("value")))
Correção recomendada
O Snowpark tem uma função equivalente max que recebe um objeto de coluna como argumento. Por esse motivo, a sobrecarga do Spark que recebe um objeto de coluna como argumento é diretamente suportada pelo Snowpark e não exige nenhuma alteração.
Para a sobrecarga que recebe um argumento de cadeia de caracteres, você pode converter a cadeia de caracteres em um objeto de coluna usando a função com.snowflake.snowpark.functions.col como solução alternativa.
val df = Seq(10, 12, 20, 15, 18).toDF("value")
val result1 = df.select(max(col("value")))
val result2 = df.select(max(col("value")))
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1102¶
Esse código de problema está obsoleto desde o Spark Conversion Core 2.3.22
Mensagem: Explode não é suportado
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.functions.explode, que não é compatível com o Snowpark.
Cenário¶
Entrada
Abaixo está um exemplo da função org.apache.spark.sql.functions.explode
usada para obter as informações consolidadas dos campos de matriz do conjunto de dados.
val explodeData = Seq(
Row("Cat", Array("Gato","Chat")),
Row("Dog", Array("Perro","Chien")),
Row("Bird", Array("Ave","Oiseau"))
)
val explodeSchema = StructType(
List(
StructField("Animal", StringType),
StructField("Translation", ArrayType(StringType))
)
)
val rddExplode = session.sparkContext.parallelize(explodeData)
val dfExplode = session.createDataFrame(rddExplode, explodeSchema)
dfExplode.select(explode(dfExplode("Translation").alias("exploded")))
Saída
O SMA adiciona o EWI SPRKSCL1102
ao código de saída para que você saiba que essa função não é suportada no Snowpark.
val explodeData = Seq(
Row("Cat", Array("Gato","Chat")),
Row("Dog", Array("Perro","Chien")),
Row("Bird", Array("Ave","Oiseau"))
)
val explodeSchema = StructType(
List(
StructField("Animal", StringType),
StructField("Translation", ArrayType(StringType))
)
)
val rddExplode = session.sparkContext.parallelize(explodeData)
val dfExplode = session.createDataFrame(rddExplode, explodeSchema)
/*EWI: SPRKSCL1102 => Explode is not supported */
dfExplode.select(explode(dfExplode("Translation").alias("exploded")))
Correção recomendada
Como o explode não é compatível com o Snowpark, a função flatten pode ser usada como substituta.
A correção a seguir cria o achatamento do dataframe dfExplode e, em seguida, faz a consulta para replicar o resultado no Spark.
val explodeData = Seq(
Row("Cat", Array("Gato","Chat")),
Row("Dog", Array("Perro","Chien")),
Row("Bird", Array("Ave","Oiseau"))
)
val explodeSchema = StructType(
List(
StructField("Animal", StringType),
StructField("Translation", ArrayType(StringType))
)
)
val rddExplode = session.sparkContext.parallelize(explodeData)
val dfExplode = session.createDataFrame(rddExplode, explodeSchema)
var dfFlatten = dfExplode.flatten(col("Translation")).alias("exploded")
.select(col("exploded.value").alias("Translation"))
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1136¶
Aviso
Esse código de problema está obsoleto desde o Spark Conversion Core 4.3.2
Mensagem: org.apache.spark.sql.functions.min tem uma solução alternativa, consulte a documentação para obter mais informações
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.functions.min, que tem uma solução alternativa.
Cenário¶
Entrada
Abaixo está um exemplo da função org.apache.spark.sql.functions.min
, usada primeiro com um nome de coluna como argumento e depois com um objeto de coluna.
val df = Seq(1, 3, 10, 1, 3).toDF("value")
val result1 = df.select(min("value"))
val result2 = df.select(min(col("value")))
Saída
O SMA adiciona o EWI SPRKSCL1136
ao código de saída para que você saiba que essa função não é totalmente compatível com o Snowpark, mas que há uma solução alternativa.
val df = Seq(1, 3, 10, 1, 3).toDF("value")
/*EWI: SPRKSCL1136 => org.apache.spark.sql.functions.min has a workaround, see documentation for more info*/
val result1 = df.select(min("value"))
/*EWI: SPRKSCL1136 => org.apache.spark.sql.functions.min has a workaround, see documentation for more info*/
val result2 = df.select(min(col("value")))
Correção recomendada
O Snowpark tem uma função equivalente min que recebe um objeto de coluna como argumento. Por esse motivo, a sobrecarga do Spark que recebe um objeto de coluna como argumento é diretamente suportada pelo Snowpark e não exige nenhuma alteração.
Para a sobrecarga que recebe um argumento de cadeia de caracteres, você pode converter a cadeia de caracteres em um objeto de coluna usando a função com.snowflake.snowpark.functions.col como solução alternativa.
val df = Seq(1, 3, 10, 1, 3).toDF("value")
val result1 = df.select(min(col("value")))
val result2 = df.select(min(col("value")))
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1167¶
Mensagem: Arquivo de projeto não encontrado na pasta de entrada
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta que a pasta de entrada não tem nenhum arquivo de configuração de projeto. Os arquivos de configuração de projeto compatíveis com o SMA são os seguintes:
build.sbt
build.gradle
pom.xml
Recomendações adicionais¶
Inclua um arquivo de projeto de configuração na pasta de entrada.
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1147¶
Mensagem: org.apache.spark.sql.functions.tanh tem uma solução alternativa, consulte a documentação para obter mais informações
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.functions.tanh, que tem uma solução alternativa.
Cenário¶
Entrada
Abaixo está um exemplo da função org.apache.spark.sql.functions.tanh
, usada primeiro com um nome de coluna como argumento e depois com um objeto de coluna.
val df = Seq(-1.0, 0.5, 1.0, 2.0).toDF("value")
val result1 = df.withColumn("tanh_value", tanh("value"))
val result2 = df.withColumn("tanh_value", tanh(col("value")))
Saída
O SMA adiciona o EWI SPRKSCL1147
ao código de saída para que você saiba que essa função não é totalmente compatível com o Snowpark, mas que há uma solução alternativa.
val df = Seq(-1.0, 0.5, 1.0, 2.0).toDF("value")
/*EWI: SPRKSCL1147 => org.apache.spark.sql.functions.tanh has a workaround, see documentation for more info*/
val result1 = df.withColumn("tanh_value", tanh("value"))
/*EWI: SPRKSCL1147 => org.apache.spark.sql.functions.tanh has a workaround, see documentation for more info*/
val result2 = df.withColumn("tanh_value", tanh(col("value")))
Correção recomendada
O Snowpark tem uma função equivalente tanh que recebe um objeto de coluna como argumento. Por esse motivo, a sobrecarga do Spark que recebe um objeto de coluna como argumento é diretamente suportada pelo Snowpark e não exige nenhuma alteração.
Para a sobrecarga que recebe um argumento de cadeia de caracteres, você pode converter a cadeia de caracteres em um objeto de coluna usando a função com.snowflake.snowpark.functions.col como solução alternativa.
val df = Seq(-1.0, 0.5, 1.0, 2.0).toDF("value")
val result1 = df.withColumn("tanh_value", tanh(col("value")))
val result2 = df.withColumn("tanh_value", tanh(col("value")))
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1116¶
Aviso
Esse código de problema está obsoleto desde o Spark Conversion Core Version 2.40.1
Mensagem: org.apache.spark.sql.functions.split tem uma solução alternativa, consulte a documentação para obter mais informações
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.functions.split, que tem uma solução alternativa.
Cenário¶
Entrada
Veja a seguir um exemplo da função org.apache.spark.sql.functions.split
que gera esse EWI.
val df = Seq("apple,banana,orange", "grape,lemon,lime", "cherry,blueberry,strawberry").toDF("values")
val result1 = df.withColumn("split_values", split(col("values"), ","))
val result2 = df.withColumn("split_values", split(col("values"), ",", 0))
Saída
O SMA adiciona o EWI SPRKSCL1116
ao código de saída para que você saiba que essa função não é totalmente compatível com o Snowpark, mas que há uma solução alternativa.
val df = Seq("apple,banana,orange", "grape,lemon,lime", "cherry,blueberry,strawberry").toDF("values")
/*EWI: SPRKSCL1116 => org.apache.spark.sql.functions.split has a workaround, see documentation for more info*/
val result1 = df.withColumn("split_values", split(col("values"), ","))
/*EWI: SPRKSCL1116 => org.apache.spark.sql.functions.split has a workaround, see documentation for more info*/
val result2 = df.withColumn("split_values", split(col("values"), ",", 0))
Correção recomendada
Para a sobrecarga do Spark que recebe dois argumentos, você pode converter o segundo argumento em um objeto de coluna usando a função com.snowflake.snowpark.functions.lit como uma solução alternativa.
A sobrecarga que recebe três argumentos ainda não é compatível com o Snowpark e não há solução alternativa.
val df = Seq("apple,banana,orange", "grape,lemon,lime", "cherry,blueberry,strawberry").toDF("values")
val result1 = df.withColumn("split_values", split(col("values"), lit(",")))
val result2 = df.withColumn("split_values", split(col("values"), ",", 0)) // This overload is not supported yet
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1122¶
Mensagem: org.apache.spark.sql.functions.corr tem uma solução alternativa, consulte a documentação para obter mais informações
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.functions.corr, que tem uma solução alternativa.
Cenário¶
Entrada
Abaixo está um exemplo da função org.apache.spark.sql.functions.corr
, usada primeiro com nomes de coluna como argumentos e depois com objetos de coluna.
val df = Seq(
(10.0, 20.0),
(20.0, 40.0),
(30.0, 60.0)
).toDF("col1", "col2")
val result1 = df.select(corr("col1", "col2"))
val result2 = df.select(corr(col("col1"), col("col2")))
Saída
O SMA adiciona o EWI SPRKSCL1122
ao código de saída para que você saiba que essa função não é totalmente compatível com o Snowpark, mas que há uma solução alternativa.
val df = Seq(
(10.0, 20.0),
(20.0, 40.0),
(30.0, 60.0)
).toDF("col1", "col2")
/*EWI: SPRKSCL1122 => org.apache.spark.sql.functions.corr has a workaround, see documentation for more info*/
val result1 = df.select(corr("col1", "col2"))
/*EWI: SPRKSCL1122 => org.apache.spark.sql.functions.corr has a workaround, see documentation for more info*/
val result2 = df.select(corr(col("col1"), col("col2")))
Correção recomendada
O Snowpark tem uma função equivalente corr que recebe dois objetos de coluna como argumentos. Por esse motivo, a sobrecarga do Spark que recebe objetos de coluna como argumentos é diretamente suportada pelo Snowpark e não exige nenhuma alteração.
Para a sobrecarga que recebe dois argumentos de cadeia de caracteres, você pode converter as cadeias de caracteres em objetos de coluna usando a função com.snowflake.snowpark.functions.col como solução alternativa.
val df = Seq(
(10.0, 20.0),
(20.0, 40.0),
(30.0, 60.0)
).toDF("col1", "col2")
val result1 = df.select(corr(col("col1"), col("col2")))
val result2 = df.select(corr(col("col1"), col("col2")))
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1173¶
Mensagem: o código SQL incorporado não pode ser processado.
Categoria: Aviso.
Descrição¶
Esse problema aparece quando o SMA detecta um código SQL incorporado que não pode ser processado. Então, o código SQL incorporado não pode ser convertido para o Snowflake.
Cenário¶
Entrada
Abaixo está um exemplo de um código SQL incorporado que não pode ser processado.
spark.sql("CREATE VIEW IF EXISTS My View" + "AS Select * From my Table WHERE date < current_date()")
Saída
O SMA adiciona o EWI SPRKSCL1173
ao código de saída para informar que o código SQL incorporado não pode ser processado.
/*EWI: SPRKSCL1173 => SQL embedded code cannot be processed.*/
spark.sql("CREATE VIEW IF EXISTS My View" + "AS Select * From my Table WHERE date < current_date()")
Correção recomendada
Certifique-se de que o código SQL incorporado seja uma cadeia de caracteres sem interpolações, variáveis ou concatenações de cadeia de caracteres.
Recomendações adicionais¶
Você pode encontrar mais informações sobre SQL incorporado aqui.
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1163¶
Mensagem: O elemento não é um literal e não pode ser avaliado.
Categoria: Erro de conversão.
Descrição¶
Esse problema ocorre quando o elemento de processamento atual não é um literal e, portanto, não pode ser avaliado pelo SMA.
Cenário¶
Entrada
Veja a seguir um exemplo de quando o elemento a ser processado não é um literal e não pode ser avaliado pelo SMA.
val format_type = "csv"
spark.read.format(format_type).load(path)
Saída
O SMA adiciona o EWI SPRKSCL1163
ao código de saída para que você saiba que o parâmetro format_type
não é um literal e não pode ser avaliado pelo SMA.
/*EWI: SPRKSCL1163 => format_type is not a literal and can't be evaluated*/
val format_type = "csv"
spark.read.format(format_type).load(path)
Correção recomendada
Certifique-se de que o valor da variável seja válido para evitar comportamentos inesperados.
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1132¶
Mensagem: org.apache.spark.sql.functions.grouping_id tem uma solução alternativa, consulte a documentação para obter mais informações
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.functions.grouping_id, que tem uma solução alternativa.
Cenário¶
Entrada
Abaixo está um exemplo da função org.apache.spark.sql.functions.grouping_id
, usada primeiro com o nome de várias colunas como argumentos e depois com objetos de coluna.
val df = Seq(
("Store1", "Product1", 100),
("Store1", "Product2", 150),
("Store2", "Product1", 200),
("Store2", "Product2", 250)
).toDF("store", "product", "amount")
val result1 = df.cube("store", "product").agg(sum("amount"), grouping_id("store", "product"))
val result2 = df.cube("store", "product").agg(sum("amount"), grouping_id(col("store"), col("product")))
Saída
O SMA adiciona o EWI SPRKSCL1132
ao código de saída para que você saiba que essa função não é totalmente compatível com o Snowpark, mas que há uma solução alternativa.
val df = Seq(
("Store1", "Product1", 100),
("Store1", "Product2", 150),
("Store2", "Product1", 200),
("Store2", "Product2", 250)
).toDF("store", "product", "amount")
/*EWI: SPRKSCL1132 => org.apache.spark.sql.functions.grouping_id has a workaround, see documentation for more info*/
val result1 = df.cube("store", "product").agg(sum("amount"), grouping_id("store", "product"))
/*EWI: SPRKSCL1132 => org.apache.spark.sql.functions.grouping_id has a workaround, see documentation for more info*/
val result2 = df.cube("store", "product").agg(sum("amount"), grouping_id(col("store"), col("product")))
Correção recomendada
O Snowpark tem uma função equivalente grouping_id que recebe vários objetos de coluna como argumentos. Por esse motivo, a sobrecarga do Spark que recebe vários objetos de coluna como argumentos é diretamente suportada pelo Snowpark e não exige nenhuma alteração.
Para a sobrecarga que recebe vários argumentos de cadeia de caracteres, você pode converter as cadeias de caracteres em objetos de coluna usando a função com.snowflake.snowpark.functions.col como solução alternativa.
val df = Seq(
("Store1", "Product1", 100),
("Store1", "Product2", 150),
("Store2", "Product1", 200),
("Store2", "Product2", 250)
).toDF("store", "product", "amount")
val result1 = df.cube("store", "product").agg(sum("amount"), grouping_id(col("store"), col("product")))
val result2 = df.cube("store", "product").agg(sum("amount"), grouping_id(col("store"), col("product")))
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1106¶
Aviso
Este código de problema está obsoleto
Mensagem: A opção Writer não é suportada.
Categoria: Erro de conversão.
Descrição¶
Esse problema aparece quando a ferramenta detecta, na instrução writer, o uso de uma opção não suportada pelo Snowpark.
Cenário¶
Entrada
Abaixo está um exemplo do org.apache.spark.sql.DataFrameWriter.option usado para adicionar opções a uma instrução writer.
df.write.format("net.snowflake.spark.snowflake").option("dbtable", tablename)
Saída
O SMA adiciona o EWI SPRKSCL1106
ao código de saída para que você saiba que o método option não é compatível com o Snowpark.
df.write.saveAsTable(tablename)
/*EWI: SPRKSCL1106 => Writer option is not supported .option("dbtable", tablename)*/
Correção recomendada
Não há nenhuma correção recomendada para esse cenário
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1157¶
Mensagem: org.apache.spark.sql.functions.kurtosis tem uma solução alternativa, consulte a documentação para obter mais informações
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.functions.kurtosis, que tem uma solução alternativa.
Cenário¶
Entrada
Abaixo está um exemplo da função org.apache.spark.sql.functions.kurtosis
que gera essa EWI. Neste exemplo, a função kurtosis
é usada para calcular a curtose da coluna selecionada.
val df = Seq("1", "2", "3").toDF("elements")
val result1 = kurtosis(col("elements"))
val result2 = kurtosis("elements")
Saída
O SMA adiciona o EWI SPRKSCL1157
ao código de saída para que você saiba que essa função não é totalmente compatível com o Snowpark, mas que há uma solução alternativa.
val df = Seq("1", "2", "3").toDF("elements")
/*EWI: SPRKSCL1157 => org.apache.spark.sql.functions.kurtosis has a workaround, see documentation for more info*/
val result1 = kurtosis(col("elements"))
/*EWI: SPRKSCL1157 => org.apache.spark.sql.functions.kurtosis has a workaround, see documentation for more info*/
val result2 = kurtosis("elements")
Correção recomendada
O Snowpark tem uma função equivalente kurtosis que recebe um objeto de coluna como argumento. Por esse motivo, a sobrecarga do Spark que recebe um objeto de coluna como argumento é diretamente suportada pelo Snowpark e não exige nenhuma alteração.
Para a sobrecarga que recebe um argumento de cadeia de caracteres, você pode converter a cadeia de caracteres em um objeto de coluna usando a função com.snowflake.snowpark.functions.col como solução alternativa.
val df = Seq("1", "2", "3").toDF("elements")
val result1 = kurtosis(col("elements"))
val result2 = kurtosis(col("elements"))
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1146¶
Mensagem: org.apache.spark.sql.functions.tan tem uma solução alternativa, consulte a documentação para obter mais informações
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.functions.tan, que tem uma solução alternativa.
Cenário¶
Entrada
Abaixo está um exemplo da função org.apache.spark.sql.functions.tan
, usada primeiro com um nome de coluna como argumento e depois com um objeto de coluna.
val df = Seq(math.Pi / 4, math.Pi / 3, math.Pi / 6).toDF("angle")
val result1 = df.withColumn("tan_value", tan("angle"))
val result2 = df.withColumn("tan_value", tan(col("angle")))
Saída
O SMA adiciona o EWI SPRKSCL1146
ao código de saída para que você saiba que essa função não é totalmente compatível com o Snowpark, mas que há uma solução alternativa.
val df = Seq(math.Pi / 4, math.Pi / 3, math.Pi / 6).toDF("angle")
/*EWI: SPRKSCL1146 => org.apache.spark.sql.functions.tan has a workaround, see documentation for more info*/
val result1 = df.withColumn("tan_value", tan("angle"))
/*EWI: SPRKSCL1146 => org.apache.spark.sql.functions.tan has a workaround, see documentation for more info*/
val result2 = df.withColumn("tan_value", tan(col("angle")))
Correção recomendada
O Snowpark tem uma função equivalente tan que recebe um objeto de coluna como argumento. Por esse motivo, a sobrecarga do Spark que recebe um objeto de coluna como argumento é diretamente suportada pelo Snowpark e não exige nenhuma alteração.
Para a sobrecarga que recebe um argumento de cadeia de caracteres, você pode converter a cadeia de caracteres em um objeto de coluna usando a função com.snowflake.snowpark.functions.col como solução alternativa.
val df = Seq(math.Pi / 4, math.Pi / 3, math.Pi / 6).toDF("angle")
val result1 = df.withColumn("tan_value", tan(col("angle")))
val result2 = df.withColumn("tan_value", tan(col("angle")))
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1117¶
Aviso
Esse código de problema está obsoleto desde o Spark Conversion Core 2.40.1
Mensagem: org.apache.spark.sql.functions.translate tem uma solução alternativa, consulte a documentação para obter mais informações
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.functions.translate, que tem uma solução alternativa.
Cenário¶
Entrada
Abaixo está um exemplo da função org.apache.spark.sql.functions.translate
que gera este EWI. Neste exemplo, a função translate
é usada para substituir os caracteres “a”, “e” e “o” em cada palavra por “1”, “2” e “3”, respectivamente.
val df = Seq("hello", "world", "scala").toDF("word")
val result = df.withColumn("translated_word", translate(col("word"), "aeo", "123"))
Saída
O SMA adiciona o EWI SPRKSCL1117
ao código de saída para que você saiba que essa função não é totalmente compatível com o Snowpark, mas que há uma solução alternativa.
val df = Seq("hello", "world", "scala").toDF("word")
/*EWI: SPRKSCL1117 => org.apache.spark.sql.functions.translate has a workaround, see documentation for more info*/
val result = df.withColumn("translated_word", translate(col("word"), "aeo", "123"))
Correção recomendada
Como solução alternativa, você pode converter o segundo e o terceiro argumentos em um objeto de coluna usando a função com.snowflake.snowpark.functions.lit.
val df = Seq("hello", "world", "scala").toDF("word")
val result = df.withColumn("translated_word", translate(col("word"), lit("aeo"), lit("123")))
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1123¶
Mensagem: org.apache.spark.sql.functions.cos tem uma solução alternativa, consulte a documentação para obter mais informações
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.functions.cos, que tem uma solução alternativa.
Cenário¶
Entrada
Abaixo está um exemplo da função org.apache.spark.sql.functions.cos
, usada primeiro com um nome de coluna como argumento e depois com um objeto de coluna.
val df = Seq(0.0, Math.PI / 4, Math.PI / 2, Math.PI).toDF("angle_radians")
val result1 = df.withColumn("cosine_value", cos("angle_radians"))
val result2 = df.withColumn("cosine_value", cos(col("angle_radians")))
Saída
O SMA adiciona o EWI SPRKSCL1123
ao código de saída para que você saiba que essa função não é totalmente compatível com o Snowpark, mas que há uma solução alternativa.
val df = Seq(0.0, Math.PI / 4, Math.PI / 2, Math.PI).toDF("angle_radians")
/*EWI: SPRKSCL1123 => org.apache.spark.sql.functions.cos has a workaround, see documentation for more info*/
val result1 = df.withColumn("cosine_value", cos("angle_radians"))
/*EWI: SPRKSCL1123 => org.apache.spark.sql.functions.cos has a workaround, see documentation for more info*/
val result2 = df.withColumn("cosine_value", cos(col("angle_radians")))
Correção recomendada
O Snowpark tem uma função equivalente cos que recebe um objeto de coluna como argumento. Por esse motivo, a sobrecarga do Spark que recebe um objeto de coluna como argumento é diretamente suportada pelo Snowpark e não exige nenhuma alteração.
Para a sobrecarga que recebe um argumento de cadeia de caracteres, você pode converter a cadeia de caracteres em um objeto de coluna usando a função com.snowflake.snowpark.functions.col como solução alternativa.
val df = Seq(0.0, Math.PI / 4, Math.PI / 2, Math.PI).toDF("angle_radians")
val result1 = df.withColumn("cosine_value", cos(col("angle_radians")))
val result2 = df.withColumn("cosine_value", cos(col("angle_radians")))
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1172¶
Mensagem: O Snowpark não oferece suporte a StructFiled com parâmetro de metadados.
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta que org.apache.spark.sql.types.StructField.apply com org.apache.spark.sql.types.Metadata como parâmetro. Isso ocorre porque o Snowpark não oferece suporte ao parâmetro de metadados.
Cenário¶
Entrada
Veja a seguir um exemplo da função org.apache.spark.sql.types.StructField.apply
que gera este EWI. Neste exemplo, a função apply
é usada para gerar uma instância de StructField.
val result = StructField("f1", StringType(), True, metadata)
Saída
O SMA adiciona o EWI SPRKSCL1172
ao código de saída para que você saiba que o parâmetro de metadados não é compatível com o Snowflake.
/*EWI: SPRKSCL1172 => Snowpark does not support StructFiled with metadata parameter.*/
val result = StructField("f1", StringType(), True, metadata)
Correção recomendada
O Snowpark tem uma função equivalente com.snowflake.snowpark.types.StructField.apply que recebe três parâmetros. Então, como solução alternativa, você pode tentar remover o argumento de metadados.
val result = StructField("f1", StringType(), True, metadata)
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1162¶
Nota
Este código de problema está obsoleto
Mensagem: Ocorreu um erro ao extrair os arquivos dbc.
Categoria: Aviso.
Descrição¶
Esse problema aparece quando um arquivo dbc não pode ser extraído. Esse aviso pode ser causado por um ou mais dos seguintes motivos: muito pesado, inacessível, somente leitura, etc.
Recomendações adicionais¶
Como solução alternativa, você pode verificar o tamanho do arquivo se ele for muito pesado para ser processado. Além disso, analise se a ferramenta pode acessá-la para evitar problemas de acesso.
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1133¶
Mensagem: org.apache.spark.sql.functions.least tem uma solução alternativa, consulte a documentação para obter mais informações
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.functions.least, que tem uma solução alternativa.
Cenário¶
Entrada
Abaixo está um exemplo da função org.apache.spark.sql.functions.least
, usada primeiro com o nome de várias colunas como argumentos e depois com objetos de coluna.
val df = Seq((10, 20, 5), (15, 25, 30), (7, 14, 3)).toDF("value1", "value2", "value3")
val result1 = df.withColumn("least", least("value1", "value2", "value3"))
val result2 = df.withColumn("least", least(col("value1"), col("value2"), col("value3")))
Saída
O SMA adiciona o EWI SPRKSCL1133
ao código de saída para que você saiba que essa função não é totalmente compatível com o Snowpark, mas que há uma solução alternativa.
val df = Seq((10, 20, 5), (15, 25, 30), (7, 14, 3)).toDF("value1", "value2", "value3")
/*EWI: SPRKSCL1133 => org.apache.spark.sql.functions.least has a workaround, see documentation for more info*/
val result1 = df.withColumn("least", least("value1", "value2", "value3"))
/*EWI: SPRKSCL1133 => org.apache.spark.sql.functions.least has a workaround, see documentation for more info*/
val result2 = df.withColumn("least", least(col("value1"), col("value2"), col("value3")))
Correção recomendada
O Snowpark tem uma função equivalente least que recebe vários objetos de coluna como argumentos. Por esse motivo, a sobrecarga do Spark que recebe vários objetos de coluna como argumentos é diretamente suportada pelo Snowpark e não exige nenhuma alteração.
Para a sobrecarga que recebe vários argumentos de cadeia de caracteres, você pode converter as cadeias de caracteres em objetos de coluna usando a função com.snowflake.snowpark.functions.col como solução alternativa.
val df = Seq((10, 20, 5), (15, 25, 30), (7, 14, 3)).toDF("value1", "value2", "value3")
val result1 = df.withColumn("least", least(col("value1"), col("value2"), col("value3")))
val result2 = df.withColumn("least", least(col("value1"), col("value2"), col("value3")))
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1107¶
Aviso
Este código de problema está obsoleto
Mensagem: Não há suporte para salvar Write.
Categoria: Erro de conversão.
Descrição¶
Esse problema aparece quando a ferramenta detecta, na instrução writer, o uso de um método para salvar writer que não é compatível com o Snowpark.
Cenário¶
Entrada
Abaixo está um exemplo do org.apache.spark.sql.DataFrameWriter.save usado para salvar o conteúdo de DataFrame.
df.write.format("net.snowflake.spark.snowflake").save()
Saída
O SMA adiciona o EWI SPRKSCL1107
ao código de saída para que você saiba que o método de salvamento não é compatível com o Snowpark.
df.write.saveAsTable(tablename)
/*EWI: SPRKSCL1107 => Writer method is not supported .save()*/
Correção recomendada
Não há nenhuma correção recomendada para esse cenário
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1156¶
Mensagem: org.apache.spark.sql.functions.degrees tem uma solução alternativa, consulte a documentação para obter mais informações
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.functions.degrees, que tem uma solução alternativa.
Cenário¶
Entrada
Abaixo está um exemplo da função org.apache.spark.sql.functions.degrees
, usada primeiro com um nome de coluna como argumento e depois com um objeto de coluna.
val df = Seq(math.Pi, math.Pi / 2, math.Pi / 4, math.Pi / 6).toDF("radians")
val result1 = df.withColumn("degrees", degrees("radians"))
val result2 = df.withColumn("degrees", degrees(col("radians")))
Saída
O SMA adiciona o EWI SPRKSCL1156
ao código de saída para que você saiba que essa função não é totalmente compatível com o Snowpark, mas que há uma solução alternativa.
val df = Seq(math.Pi, math.Pi / 2, math.Pi / 4, math.Pi / 6).toDF("radians")
/*EWI: SPRKSCL1156 => org.apache.spark.sql.functions.degrees has a workaround, see documentation for more info*/
val result1 = df.withColumn("degrees", degrees("radians"))
/*EWI: SPRKSCL1156 => org.apache.spark.sql.functions.degrees has a workaround, see documentation for more info*/
val result2 = df.withColumn("degrees", degrees(col("radians")))
Correção recomendada
O Snowpark tem uma função equivalente degrees que recebe um objeto de coluna como argumento. Por esse motivo, a sobrecarga do Spark que recebe um objeto de coluna como argumento é diretamente suportada pelo Snowpark e não exige nenhuma alteração.
Para a sobrecarga que recebe um argumento de cadeia de caracteres, você pode converter a cadeia de caracteres em um objeto de coluna usando a função com.snowflake.snowpark.functions.col como solução alternativa.
val df = Seq(math.Pi, math.Pi / 2, math.Pi / 4, math.Pi / 6).toDF("radians")
val result1 = df.withColumn("degrees", degrees(col("radians")))
val result2 = df.withColumn("degrees", degrees(col("radians")))
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1127¶
Mensagem: org.apache.spark.sql.functions.covar_samp tem uma solução alternativa, consulte a documentação para obter mais informações
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.functions.covar_samp, que tem uma solução alternativa.
Cenário¶
Entrada
Abaixo está um exemplo da função org.apache.spark.sql.functions.covar_samp
, usada primeiro com nomes de colunas como argumentos e depois com objetos de colunas.
val df = Seq(
(10.0, 20.0),
(15.0, 25.0),
(20.0, 30.0),
(25.0, 35.0),
(30.0, 40.0)
).toDF("value1", "value2")
val result1 = df.select(covar_samp("value1", "value2").as("sample_covariance"))
val result2 = df.select(covar_samp(col("value1"), col("value2")).as("sample_covariance"))
Saída
O SMA adiciona o EWI SPRKSCL1127
ao código de saída para que você saiba que essa função não é totalmente compatível com o Snowpark, mas que há uma solução alternativa.
val df = Seq(
(10.0, 20.0),
(15.0, 25.0),
(20.0, 30.0),
(25.0, 35.0),
(30.0, 40.0)
).toDF("value1", "value2")
/*EWI: SPRKSCL1127 => org.apache.spark.sql.functions.covar_samp has a workaround, see documentation for more info*/
val result1 = df.select(covar_samp("value1", "value2").as("sample_covariance"))
/*EWI: SPRKSCL1127 => org.apache.spark.sql.functions.covar_samp has a workaround, see documentation for more info*/
val result2 = df.select(covar_samp(col("value1"), col("value2")).as("sample_covariance"))
Correção recomendada
O Snowpark tem uma função equivalente covar_samp que recebe dois objetos de coluna como argumentos. Por esse motivo, a sobrecarga do Spark que recebe dois objetos de coluna como argumentos é diretamente suportada pelo Snowpark e não exige nenhuma alteração.
Para a sobrecarga que recebe dois argumentos de cadeia de caracteres, você pode converter as cadeias de caracteres em objetos de coluna usando a função com.snowflake.snowpark.functions.col como solução alternativa.
val df = Seq(
(10.0, 20.0),
(15.0, 25.0),
(20.0, 30.0),
(25.0, 35.0),
(30.0, 40.0)
).toDF("value1", "value2")
val result1 = df.select(covar_samp(col("value1"), col("value2")).as("sample_covariance"))
val result2 = df.select(covar_samp(col("value1"), col("value2")).as("sample_covariance"))
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1113¶
Mensagem: org.apache.spark.sql.functions.next_day tem uma solução alternativa, consulte a documentação para obter mais informações
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.functions.next_day, que tem uma solução alternativa.
Cenário¶
Entrada
Abaixo está um exemplo da função org.apache.spark.sql.functions.next_day
, usada primeiro com uma cadeia de caracteres como segundo argumento e depois com um objeto de coluna.
val df = Seq("2024-11-06", "2024-11-13", "2024-11-20").toDF("date")
val result1 = df.withColumn("next_monday", next_day(col("date"), "Mon"))
val result2 = df.withColumn("next_monday", next_day(col("date"), lit("Mon")))
Saída
O SMA adiciona o EWI SPRKSCL1113
ao código de saída para que você saiba que essa função não é totalmente compatível com o Snowpark, mas que há uma solução alternativa.
val df = Seq("2024-11-06", "2024-11-13", "2024-11-20").toDF("date")
/*EWI: SPRKSCL1113 => org.apache.spark.sql.functions.next_day has a workaround, see documentation for more info*/
val result1 = df.withColumn("next_monday", next_day(col("date"), "Mon"))
/*EWI: SPRKSCL1113 => org.apache.spark.sql.functions.next_day has a workaround, see documentation for more info*/
val result2 = df.withColumn("next_monday", next_day(col("date"), lit("Mon")))
Correção recomendada
O Snowpark tem uma função equivalente next_day que recebe dois objetos de coluna como argumentos. Por esse motivo, a sobrecarga do Spark que recebe dois objetos de coluna como argumentos é diretamente suportada pelo Snowpark e não exige nenhuma alteração.
Para a sobrecarga que recebe um objeto de coluna e uma cadeia de caracteres, você pode converter a cadeia de caracteres em um objeto de coluna usando a função com.snowflake.snowpark.functions.lit como solução alternativa.
val df = Seq("2024-11-06", "2024-11-13", "2024-11-20").toDF("date")
val result1 = df.withColumn("next_monday", next_day(col("date"), lit("Mon")))
val result2 = df.withColumn("next_monday", next_day(col("date"), lit("Mon")))
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1002¶
Mensagem: Esta seção de código tem recuperação de erros de análise _ instrução _
Categoria: Erro de análise.
Descrição¶
Esse problema aparece quando o SMA detecta alguma instrução que não pode ser lida ou compreendida corretamente no código de um arquivo, o que é chamado de erro de análise, mas o SMA pode se recuperar desse erro de análise e continuar analisando o código do arquivo. Nesse caso, o SMA consegue processar o código do arquivo sem erros.
Cenário¶
Entrada
Abaixo está um exemplo de código Scala inválido em que o SMA pode se recuperar.
Class myClass {
def function1() & = { 1 }
def function2() = { 2 }
def function3() = { 3 }
}
Saída
O SMA adiciona o EWI SPRKSCL1002
ao código de saída para que você saiba que o código do arquivo tem erros de análise, mas o SMA pode se recuperar desse erro e continuar analisando o código do arquivo.
class myClass {
def function1();//EWI: SPRKSCL1002 => Unexpected end of declaration. Failed token: '&' @(3,21).
& = { 1 }
def function2() = { 2 }
def function3() = { 3 }
}
Correção recomendada
Como a mensagem aponta o erro na instrução, você pode tentar identificar a sintaxe inválida e removê-la ou comentar essa instrução para evitar o erro de análise.
Class myClass {
def function1() = { 1 }
def function2() = { 2 }
def function3() = { 3 }
}
Class myClass {
// def function1() & = { 1 }
def function2() = { 2 }
def function3() = { 3 }
}
Recomendações adicionais¶
Verifique se o código do arquivo é um código Scala válido.
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1142¶
Mensagem: _ spark element _ não está definido
Categoria: Erro de conversão
Descrição¶
Esse problema aparece quando o SMA não consegue determinar um status de mapeamento apropriado para um determinado elemento. Isso significa que o SMA ainda não sabe se esse elemento é compatível ou não com o Snowpark. Observe que esse é um código de erro genérico usado pelo SMA para qualquer elemento não definido.
Cenário¶
Entrada
Abaixo está um exemplo de uma função para a qual o SMA não conseguiu determinar um status de mapeamento apropriado e, portanto, gerou este EWI. Nesse caso, presuma que notDefinedFunction()
é uma função Spark válida e o código é executado.
val df = session.range(10)
val result = df.notDefinedFunction()
Saída
O SMA adiciona o EWI SPRKSCL1142
ao código de saída para informar que esse elemento não está definido.
val df = session.range(10)
/*EWI: SPRKSCL1142 => org.apache.spark.sql.DataFrame.notDefinedFunction is not defined*/
val result = df.notDefinedFunction()
Correção recomendada
Para tentar identificar o problema, você pode realizar as seguintes validações:
Verifique se é um elemento Spark válido.
Verifique se o elemento tem a sintaxe correta e se está escrito corretamente.
Verifique se está usando uma versão do Spark compatível com o SMA.
Se esse for um elemento válido do Spark, informe que encontrou um erro de conversão nesse elemento específico usando a opção de Relatar um prolema do SMA e inclua qualquer informação adicional que considere útil.
Observe que, se um elemento não for definido pelo SMA, isso não significa necessariamente que ele não seja compatível com o Snowpark. Consulte a documentação do Snowpark para verificar se existe um elemento equivalente.
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1152¶
Mensagem: org.apache.spark.sql.functions.variance tem uma solução alternativa, consulte a documentação para obter mais informações
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.functions.variance, que tem uma solução alternativa.
Cenário¶
Entrada
Abaixo está um exemplo da função org.apache.spark.sql.functions.variance
, usada primeiro com um nome de coluna como argumento e depois com um objeto de coluna.
val df = Seq(10, 20, 30, 40, 50).toDF("value")
val result1 = df.select(variance("value"))
val result2 = df.select(variance(col("value")))
Saída
O SMA adiciona o EWI SPRKSCL1152
ao código de saída para que você saiba que essa função não é totalmente compatível com o Snowpark, mas que há uma solução alternativa.
val df = Seq(10, 20, 30, 40, 50).toDF("value")
/*EWI: SPRKSCL1152 => org.apache.spark.sql.functions.variance has a workaround, see documentation for more info*/
val result1 = df.select(variance("value"))
/*EWI: SPRKSCL1152 => org.apache.spark.sql.functions.variance has a workaround, see documentation for more info*/
val result2 = df.select(variance(col("value")))
Correção recomendada
O Snowpark tem uma função equivalente variance que recebe um objeto de coluna como argumento. Por esse motivo, a sobrecarga do Spark que recebe um objeto de coluna como argumento é diretamente suportada pelo Snowpark e não exige nenhuma alteração.
Para a sobrecarga que recebe um argumento de cadeia de caracteres, você pode converter a cadeia de caracteres em um objeto de coluna usando a função com.snowflake.snowpark.functions.col como solução alternativa.
val df = Seq(10, 20, 30, 40, 50).toDF("value")
val result1 = df.select(variance(col("value")))
val result2 = df.select(variance(col("value")))
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1103¶
Este código de problema está obsoleto
Mensagem: O método SparkBuilder não é suportado _ method name _
Categoria: Erro de conversão
Descrição¶
Esse problema aparece quando o SMA detecta um método que não é compatível com o Snowflake no encadeamento de métodos do SparkBuilder. Portanto, isso pode afetar a migração da instrução reader.
A seguir, estão os métodos SparkBuilder não suportados:
master
appName
enableHiveSupport
withExtensions
Cenário¶
Entrada
Abaixo está um exemplo de um encadeamento de métodos SparkBuilder com muitos métodos que não são compatíveis com o Snowflake.
val spark = SparkSession.builder()
.master("local")
.appName("testApp")
.config("spark.sql.broadcastTimeout", "3600")
.enableHiveSupport()
.getOrCreate()
Saída
O SMA adiciona o EWI SPRKSCL1103
ao código de saída para que você saiba que os métodos master, appName e enableHiveSupport não são compatíveis com o Snowpark. Então, isso pode afetar a migração da instrução Spark Session.
val spark = Session.builder.configFile("connection.properties")
/*EWI: SPRKSCL1103 => SparkBuilder Method is not supported .master("local")*/
/*EWI: SPRKSCL1103 => SparkBuilder Method is not supported .appName("testApp")*/
/*EWI: SPRKSCL1103 => SparkBuilder method is not supported .enableHiveSupport()*/
.create
Correção recomendada
Para criar a sessão, é necessário adicionar a configuração adequada do Snowflake Snowpark.
Neste exemplo, é usada uma variável configs.
val configs = Map (
"URL" -> "https://<myAccount>.snowflakecomputing.com:<port>",
"USER" -> <myUserName>,
"PASSWORD" -> <myPassword>,
"ROLE" -> <myRole>,
"WAREHOUSE" -> <myWarehouse>,
"DB" -> <myDatabase>,
"SCHEMA" -> <mySchema>
)
val session = Session.builder.configs(configs).create
Também é recomendado o uso de um configFile (profile.properties) com as informações de conexão:
## profile.properties file (a text file)
URL = https://<account_identifier>.snowflakecomputing.com
USER = <username>
PRIVATEKEY = <unencrypted_private_key_from_the_private_key_file>
ROLE = <role_name>
WAREHOUSE = <warehouse_name>
DB = <database_name>
SCHEMA = <schema_name>
E com o Session.builder.configFile
, a sessão pode ser criada:
val session = Session.builder.configFile("/path/to/properties/file").create
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1137¶
Mensagem: org.apache.spark.sql.functions.sin tem uma solução alternativa, consulte a documentação para obter mais informações
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.functions.sin, que tem uma solução alternativa.
Cenário¶
Entrada
Abaixo está um exemplo da função org.apache.spark.sql.functions.sin
, usada primeiro com um nome de coluna como argumento e depois com um objeto de coluna.
val df = Seq(Math.PI / 2, Math.PI, Math.PI / 6).toDF("angle")
val result1 = df.withColumn("sin_value", sin("angle"))
val result2 = df.withColumn("sin_value", sin(col("angle")))
Saída
O SMA adiciona o EWI SPRKSCL1137
ao código de saída para que você saiba que essa função não é totalmente compatível com o Snowpark, mas que há uma solução alternativa.
val df = Seq(Math.PI / 2, Math.PI, Math.PI / 6).toDF("angle")
/*EWI: SPRKSCL1137 => org.apache.spark.sql.functions.sin has a workaround, see documentation for more info*/
val result1 = df.withColumn("sin_value", sin("angle"))
/*EWI: SPRKSCL1137 => org.apache.spark.sql.functions.sin has a workaround, see documentation for more info*/
val result2 = df.withColumn("sin_value", sin(col("angle")))
Correção recomendada
O Snowpark tem uma função equivalente sin que recebe um objeto de coluna como argumento. Por esse motivo, a sobrecarga do Spark que recebe um objeto de coluna como argumento é diretamente suportada pelo Snowpark e não exige nenhuma alteração.
Para a sobrecarga que recebe um argumento de cadeia de caracteres, você pode converter a cadeia de caracteres em um objeto de coluna usando a função com.snowflake.snowpark.functions.col como solução alternativa.
val df = Seq(Math.PI / 2, Math.PI, Math.PI / 6).toDF("angle")
val result1 = df.withColumn("sin_value", sin(col("angle")))
val result2 = df.withColumn("sin_value", sin(col("angle")))
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1166¶
Nota
Este código de problema está obsoleto
Mensagem: org.apache.spark.sql.DataFrameReader.format não é compatível.
Categoria: Aviso.
Descrição¶
Esse problema aparece quando o comando org.apache.spark.sql.DataFrameReader.format tem um argumento que não é suportado pelo Snowpark.
Cenários¶
Há alguns cenários, dependendo do tipo de formato que você está tentando carregar. Pode ser um formato suportado
ou não suportado
.
Cenário 1¶
Entrada
A ferramenta analisa o tipo de formato que está tentando carregar; os formatos compatíveis são:
csv
json
orc
parquet
texto
O exemplo abaixo mostra como a ferramenta transforma o método format
ao passar um valor csv
.
spark.read.format("csv").load(path)
Saída
A ferramenta transforma o método format
em uma chamada de método csv
quando a função load tem um parâmetro.
spark.read.csv(path)
Correção recomendada
Nesse caso, a ferramenta não mostra o EWI, o que significa que não há necessidade de correção.
Cenário 2¶
Entrada
O exemplo abaixo mostra como a ferramenta transforma o método format
ao passar um valor net.snowflake.spark.snowflake
.
spark.read.format("net.snowflake.spark.snowflake").load(path)
Saída
A ferramenta mostra o EWI SPRKSCL1166
indicando que o valor net.snowflake.spark.snowflake
não é suportado.
/*EWI: SPRKSCL1166 => The parameter net.snowflake.spark.snowflake is not supported for org.apache.spark.sql.DataFrameReader.format
EWI: SPRKSCL1112 => org.apache.spark.sql.DataFrameReader.load(scala.String) is not supported*/
spark.read.format("net.snowflake.spark.snowflake").load(path)
Correção recomendada
Para os cenários não suportados
não há nenhuma correção específica, pois depende dos arquivos que estão tentando ser lidos.
Cenário 3¶
Entrada
O exemplo abaixo mostra como a ferramenta transforma o método format
ao passar um csv
, mas usando uma variável.
val myFormat = "csv"
spark.read.format(myFormat).load(path)
Saída
Como a ferramenta não consegue determinar o valor da variável em tempo de execução, mostra o EWI SPRKSCL1163
indicando que o valor não é suportado.
/*EWI: SPRKSCL1163 => myFormat is not a literal and can't be evaluated
EWI: SPRKSCL1112 => org.apache.spark.sql.DataFrameReader.load(scala.String) is not supported*/
spark.read.format(myFormat).load(path)
Correção recomendada
Como solução alternativa, você pode verificar o valor da variável e adicioná-lo como uma cadeia de caracteres à chamada format
.
Recomendações adicionais¶
O local do Snowpark só aceita locais de nuvem usando um estágio de snowflake.
A documentação dos métodos suportados pelo Snowpark pode ser encontrada na documentação
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1118¶
Mensagem: org.apache.spark.sql.functions.trunc tem uma solução alternativa, consulte a documentação para obter mais informações
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.functions.trunc, que tem uma solução alternativa.
Cenário¶
Entrada
Abaixo está um exemplo da função org.apache.spark.sql.functions.trunc
que gera esse EWI.
val df = Seq(
Date.valueOf("2024-10-28"),
Date.valueOf("2023-05-15"),
Date.valueOf("2022-11-20"),
).toDF("date")
val result = df.withColumn("truncated", trunc(col("date"), "month"))
Saída
O SMA adiciona o EWI SPRKSCL1118
ao código de saída para que você saiba que essa função não é totalmente compatível com o Snowpark, mas que há uma solução alternativa.
val df = Seq(
Date.valueOf("2024-10-28"),
Date.valueOf("2023-05-15"),
Date.valueOf("2022-11-20"),
).toDF("date")
/*EWI: SPRKSCL1118 => org.apache.spark.sql.functions.trunc has a workaround, see documentation for more info*/
val result = df.withColumn("truncated", trunc(col("date"), "month"))
Correção recomendada
Como solução alternativa, você pode converter o segundo argumento em um objeto de coluna usando a função com.snowflake.snowpark.functions.lit.
val df = Seq(
Date.valueOf("2024-10-28"),
Date.valueOf("2023-05-15"),
Date.valueOf("2022-11-20"),
).toDF("date")
val result = df.withColumn("truncated", trunc(col("date"), lit("month")))
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1149¶
Mensagem: org.apache.spark.sql.functions.toRadians tem uma solução alternativa, consulte a documentação para obter mais informações
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.functions.toRadians, que tem uma solução alternativa.
Cenário¶
Entrada
Abaixo está um exemplo da função org.apache.spark.sql.functions.toRadians
, usada primeiro com um nome de coluna como argumento e depois com um objeto de coluna.
val df = Seq(0, 45, 90, 180, 270).toDF("degrees")
val result1 = df.withColumn("radians", toRadians("degrees"))
val result2 = df.withColumn("radians", toRadians(col("degrees")))
Saída
O SMA adiciona o EWI SPRKSCL1149
ao código de saída para que você saiba que essa função não é totalmente compatível com o Snowpark, mas que há uma solução alternativa.
val df = Seq(0, 45, 90, 180, 270).toDF("degrees")
/*EWI: SPRKSCL1149 => org.apache.spark.sql.functions.toRadians has a workaround, see documentation for more info*/
val result1 = df.withColumn("radians", toRadians("degrees"))
/*EWI: SPRKSCL1149 => org.apache.spark.sql.functions.toRadians has a workaround, see documentation for more info*/
val result2 = df.withColumn("radians", toRadians(col("degrees")))
Correção recomendada
Como solução alternativa, o senhor pode usar a função radians. Para a sobrecarga do Spark que recebe um argumento de cadeia de caracteres, você também precisa converter a cadeia de caracteres em um objeto de coluna usando a função com.snowflake.snowpark.functions.col.
val df = Seq(0, 45, 90, 180, 270).toDF("degrees")
val result1 = df.withColumn("radians", radians(col("degrees")))
val result2 = df.withColumn("radians", radians(col("degrees")))
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1159¶
Mensagem: org.apache.spark.sql.functions.stddev_samp tem uma solução alternativa, consulte a documentação para obter mais informações
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.functions.stddev_samp, que tem uma solução alternativa.
Cenário¶
Entrada
Abaixo está um exemplo da função org.apache.spark.sql.functions.stddev_samp
que gera esse EWI. Neste exemplo, a função stddev_samp
é usada para calcular o desvio padrão de amostra da coluna selecionada.
val df = Seq("1.7", "2.1", "3.0", "4.4", "5.2").toDF("elements")
val result1 = stddev_samp(col("elements"))
val result2 = stddev_samp("elements")
Saída
O SMA adiciona o EWI SPRKSCL1159
ao código de saída para que você saiba que essa função não é totalmente compatível com o Snowpark, mas que há uma solução alternativa.
val df = Seq("1.7", "2.1", "3.0", "4.4", "5.2").toDF("elements")
/*EWI: SPRKSCL1159 => org.apache.spark.sql.functions.stddev_samp has a workaround, see documentation for more info*/
val result1 = stddev_samp(col("elements"))
/*EWI: SPRKSCL1159 => org.apache.spark.sql.functions.stddev_samp has a workaround, see documentation for more info*/
val result2 = stddev_samp("elements")
Correção recomendada
O Snowpark tem uma função equivalente stddev_samp que recebe um objeto de coluna como argumento. Por esse motivo, a sobrecarga do Spark que recebe um objeto de coluna como argumento é diretamente suportada pelo Snowpark e não exige nenhuma alteração.
Para a sobrecarga que recebe um argumento de cadeia de caracteres, você pode converter a cadeia de caracteres em um objeto de coluna usando a função com.snowflake.snowpark.functions.col como solução alternativa.
val df = Seq("1.7", "2.1", "3.0", "4.4", "5.2").toDF("elements")
val result1 = stddev_samp(col("elements"))
val result2 = stddev_samp(col("elements"))
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1108¶
Nota
Este código de problema está obsoleto.
Mensagem: org.apache.spark.sql.DataFrameReader.format não é compatível.
Categoria: Aviso.
Descrição¶
Esse problema aparece quando o comando org.apache.spark.sql.DataFrameReader.format tem um argumento que não é suportado pelo Snowpark.
Cenários¶
Há alguns cenários, dependendo do tipo de formato que você está tentando carregar. Pode ser um formato suportado
ou não suportado
.
Cenário 1¶
Entrada
A ferramenta analisa o tipo de formato que está tentando carregar; os formatos compatíveis são:
csv
json
orc
parquet
texto
O exemplo abaixo mostra como a ferramenta transforma o método format
ao passar um valor csv
.
spark.read.format("csv").load(path)
Saída
A ferramenta transforma o método format
em uma chamada de método csv
quando a função load tem um parâmetro.
spark.read.csv(path)
Correção recomendada
Nesse caso, a ferramenta não mostra o EWI, o que significa que não há necessidade de correção.
Cenário 2¶
Entrada
O exemplo abaixo mostra como a ferramenta transforma o método format
ao passar um valor net.snowflake.spark.snowflake
.
spark.read.format("net.snowflake.spark.snowflake").load(path)
Saída
A ferramenta mostra o EWI SPRKSCL1108
indicando que o valor net.snowflake.spark.snowflake
não é suportado.
/*EWI: SPRKSCL1108 => The parameter net.snowflake.spark.snowflake is not supported for org.apache.spark.sql.DataFrameReader.format
EWI: SPRKSCL1112 => org.apache.spark.sql.DataFrameReader.load(scala.String) is not supported*/
spark.read.format("net.snowflake.spark.snowflake").load(path)
Correção recomendada
Para os cenários não suportados
não há nenhuma correção específica, pois depende dos arquivos que estão tentando ser lidos.
Cenário 3¶
Entrada
O exemplo abaixo mostra como a ferramenta transforma o método format
ao passar um csv
, mas usando uma variável.
val myFormat = "csv"
spark.read.format(myFormat).load(path)
Saída
Como a ferramenta não consegue determinar o valor da variável em tempo de execução, mostra o EWI SPRKSCL1163
indicando que o valor não é suportado.
/*EWI: SPRKSCL1108 => myFormat is not a literal and can't be evaluated
EWI: SPRKSCL1112 => org.apache.spark.sql.DataFrameReader.load(scala.String) is not supported*/
spark.read.format(myFormat).load(path)
Correção recomendada
Como solução alternativa, você pode verificar o valor da variável e adicioná-lo como uma cadeia de caracteres à chamada format
.
Recomendações adicionais¶
O local do Snowpark só aceita locais de nuvem usando um estágio de snowflake.
A documentação dos métodos suportados pelo Snowpark pode ser encontrada na documentação
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1128¶
Mensagem: org.apache.spark.sql.functions.exp tem uma solução alternativa, consulte a documentação para obter mais informações
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.functions.exp, que tem uma solução alternativa.
Cenário¶
Entrada
Abaixo está um exemplo da função org.apache.spark.sql.functions.exp
, usada primeiro com um nome de coluna como argumento e depois com um objeto de coluna.
val df = Seq(1.0, 2.0, 3.0).toDF("value")
val result1 = df.withColumn("exp_value", exp("value"))
val result2 = df.withColumn("exp_value", exp(col("value")))
Saída
O SMA adiciona o EWI SPRKSCL1128
ao código de saída para que você saiba que essa função não é totalmente compatível com o Snowpark, mas que há uma solução alternativa.
val df = Seq(1.0, 2.0, 3.0).toDF("value")
/*EWI: SPRKSCL1128 => org.apache.spark.sql.functions.exp has a workaround, see documentation for more info*/
val result1 = df.withColumn("exp_value", exp("value"))
/*EWI: SPRKSCL1128 => org.apache.spark.sql.functions.exp has a workaround, see documentation for more info*/
val result2 = df.withColumn("exp_value", exp(col("value")))
Correção recomendada
O Snowpark tem uma função equivalente exp que recebe um objeto de coluna como argumento. Por esse motivo, a sobrecarga do Spark que recebe um objeto de coluna como argumento é diretamente suportada pelo Snowpark e não exige nenhuma alteração.
Para a sobrecarga que recebe um argumento de cadeia de caracteres, você pode converter a cadeia de caracteres em um objeto de coluna usando a função com.snowflake.snowpark.functions.col como solução alternativa.
val df = Seq(1.0, 2.0, 3.0).toDF("value")
val result1 = df.withColumn("exp_value", exp(col("value")))
val result2 = df.withColumn("exp_value", exp(col("value")))
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1169¶
Mensagem: _ Spark element _ está faltando no método de encadeamento.
Categoria: Aviso.
Descrição¶
Esse problema aparece quando o SMA detecta que está faltando uma chamada de elemento Spark no encadeamento do método. O SMA precisa conhecer esse elemento Spark para analisar a instrução.
Cenário¶
Entrada
Abaixo está um exemplo em que a chamada de função de carregamento está ausente no encadeamento de métodos.
val reader = spark.read.format("json")
val df = reader.load(path)
Saída
O SMA adiciona o EWI SPRKSCL1169
ao código de saída para que você saiba que falta uma chamada de função de carregamento no encadeamento do método e que o SMA não pode analisar a instrução.
/*EWI: SPRKSCL1169 => Function 'org.apache.spark.sql.DataFrameReader.load' is missing on the method chaining*/
val reader = spark.read.format("json")
val df = reader.load(path)
Correção recomendada
Certifique-se de que todas as chamadas de função do encadeamento de métodos estejam na mesma instrução.
val reader = spark.read.format("json").load(path)
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1138¶
Mensagem: org.apache.spark.sql.functions.sinh tem uma solução alternativa, consulte a documentação para obter mais informações
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.functions.sinh, que tem uma solução alternativa.
Cenário¶
Entrada
Abaixo está um exemplo da função org.apache.spark.sql.functions.sinh
, usada primeiro com um nome de coluna como argumento e depois com um objeto de coluna.
val df = Seq(0.0, 1.0, 2.0, 3.0).toDF("value")
val result1 = df.withColumn("sinh_value", sinh("value"))
val result2 = df.withColumn("sinh_value", sinh(col("value")))
Saída
O SMA adiciona o EWI SPRKSCL1138
ao código de saída para que você saiba que essa função não é totalmente compatível com o Snowpark, mas que há uma solução alternativa.
val df = Seq(0.0, 1.0, 2.0, 3.0).toDF("value")
/*EWI: SPRKSCL1138 => org.apache.spark.sql.functions.sinh has a workaround, see documentation for more info*/
val result1 = df.withColumn("sinh_value", sinh("value"))
/*EWI: SPRKSCL1138 => org.apache.spark.sql.functions.sinh has a workaround, see documentation for more info*/
val result2 = df.withColumn("sinh_value", sinh(col("value")))
Correção recomendada
O Snowpark tem uma função equivalente sinh que recebe um objeto de coluna como argumento. Por esse motivo, a sobrecarga do Spark que recebe um objeto de coluna como argumento é diretamente suportada pelo Snowpark e não exige nenhuma alteração.
Para a sobrecarga que recebe um argumento de cadeia de caracteres, você pode converter a cadeia de caracteres em um objeto de coluna usando a função com.snowflake.snowpark.functions.col como solução alternativa.
val df = Seq(0.0, 1.0, 2.0, 3.0).toDF("value")
val result1 = df.withColumn("sinh_value", sinh(col("value")))
val result2 = df.withColumn("sinh_value", sinh(col("value")))
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1129¶
Mensagem: org.apache.spark.sql.functions.floor tem uma solução alternativa, consulte a documentação para obter mais informações
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.functions.floor, que tem uma solução alternativa.
Cenário¶
Entrada
Abaixo está um exemplo da função org.apache.spark.sql.functions.floor
, usada primeiro com um nome de coluna como argumento, depois com um objeto de coluna e, finalmente, com dois objetos de coluna.
val df = Seq(4.75, 6.22, 9.99).toDF("value")
val result1 = df.withColumn("floor_value", floor("value"))
val result2 = df.withColumn("floor_value", floor(col("value")))
val result3 = df.withColumn("floor_value", floor(col("value"), lit(1)))
Saída
O SMA adiciona o EWI SPRKSCL1129
ao código de saída para que você saiba que essa função não é totalmente compatível com o Snowpark, mas que há uma solução alternativa.
val df = Seq(4.75, 6.22, 9.99).toDF("value")
/*EWI: SPRKSCL1129 => org.apache.spark.sql.functions.floor has a workaround, see documentation for more info*/
val result1 = df.withColumn("floor_value", floor("value"))
/*EWI: SPRKSCL1129 => org.apache.spark.sql.functions.floor has a workaround, see documentation for more info*/
val result2 = df.withColumn("floor_value", floor(col("value")))
/*EWI: SPRKSCL1129 => org.apache.spark.sql.functions.floor has a workaround, see documentation for more info*/
val result3 = df.withColumn("floor_value", floor(col("value"), lit(1)))
Correção recomendada
O Snowpark tem uma função equivalente floor que recebe um objeto de coluna como argumento. Por esse motivo, a sobrecarga do Spark que recebe um objeto de coluna como argumento é diretamente suportada pelo Snowpark e não exige nenhuma alteração.
Para a sobrecarga que recebe um argumento de cadeia de caracteres, você pode converter a cadeia de caracteres em um objeto de coluna usando a função com.snowflake.snowpark.functions.col como solução alternativa.
Para a sobrecarga que recebe um objeto de coluna e uma escala, você pode usar a função callBuiltin para invocar a função interna do Snowflake FLOOR. Para usá-la, você deve passar a cadeia de caracteres «floor» como o primeiro argumento, a coluna como o segundo argumento e a escala como o terceiro argumento.
val df = Seq(4.75, 6.22, 9.99).toDF("value")
val result1 = df.withColumn("floor_value", floor(col("value")))
val result2 = df.withColumn("floor_value", floor(col("value")))
val result3 = df.withColumn("floor_value", callBuiltin("floor", col("value"), lit(1)))
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1168¶
Mensagem: _ elemento Spark _ com valor(es) de argumento _ argumentos dados _ não é suportada.
Categoria: Aviso.
Descrição¶
Esse problema aparece quando o SMA detecta que o elemento Spark com os parâmetros fornecidos não é compatível.
Cenário¶
Entrada
Abaixo está um exemplo de elemento Spark cujo parâmetro não é suportado.
spark.read.format("text").load(path)
Saída
O SMA adiciona o EWI SPRKSCL1168
ao código de saída para informar que o elemento Spark com o parâmetro fornecido não é compatível.
/*EWI: SPRKSCL1168 => org.apache.spark.sql.DataFrameReader.format(scala.String) with argument(s) value(s) (spark.format) is not supported*/
spark.read.format("text").load(path)
Correção recomendada
Para esse cenário, não há uma correção específica.
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1139¶
Mensagem: org.apache.spark.sql.functions.sqrt tem uma solução alternativa, consulte a documentação para obter mais informações
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.functions.sqrt, que tem uma solução alternativa.
Cenário¶
Entrada
Abaixo está um exemplo da função org.apache.spark.sql.functions.sqrt
, usada primeiro com um nome de coluna como argumento e depois com um objeto de coluna.
val df = Seq(4.0, 16.0, 25.0, 36.0).toDF("value")
val result1 = df.withColumn("sqrt_value", sqrt("value"))
val result2 = df.withColumn("sqrt_value", sqrt(col("value")))
Saída
O SMA adiciona o EWI SPRKSCL1139
ao código de saída para que você saiba que essa função não é totalmente compatível com o Snowpark, mas que há uma solução alternativa.
val df = Seq(4.0, 16.0, 25.0, 36.0).toDF("value")
/*EWI: SPRKSCL1139 => org.apache.spark.sql.functions.sqrt has a workaround, see documentation for more info*/
val result1 = df.withColumn("sqrt_value", sqrt("value"))
/*EWI: SPRKSCL1139 => org.apache.spark.sql.functions.sqrt has a workaround, see documentation for more info*/
val result2 = df.withColumn("sqrt_value", sqrt(col("value")))
Correção recomendada
O Snowpark tem uma função equivalente sqrt que recebe um objeto de coluna como argumento. Por esse motivo, a sobrecarga do Spark que recebe um objeto de coluna como argumento é diretamente suportada pelo Snowpark e não exige nenhuma alteração.
Para a sobrecarga que recebe um argumento de cadeia de caracteres, você pode converter a cadeia de caracteres em um objeto de coluna usando a função com.snowflake.snowpark.functions.col como solução alternativa.
val df = Seq(4.0, 16.0, 25.0, 36.0).toDF("value")
val result1 = df.withColumn("sqrt_value", sqrt(col("value")))
val result2 = df.withColumn("sqrt_value", sqrt(col("value")))
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1119¶
Mensagem: org.apache.spark.sql.Column.endsWith tem uma solução alternativa, consulte a documentação para obter mais informações
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.Column.endsWith, que tem uma solução alternativa.
Cenário¶
Entrada
Abaixo está um exemplo da função org.apache.spark.sql.Column.endsWith
, usada primeiro com um argumento de cadeia de caracteres literal e depois com um argumento de objeto de coluna.
val df1 = Seq(
("Alice", "alice@example.com"),
("Bob", "bob@example.org"),
("David", "david@example.com")
).toDF("name", "email")
val result1 = df1.filter(col("email").endsWith(".com"))
val df2 = Seq(
("Alice", "alice@example.com", ".com"),
("Bob", "bob@example.org", ".org"),
("David", "david@example.org", ".com")
).toDF("name", "email", "suffix")
val result2 = df2.filter(col("email").endsWith(col("suffix")))
Saída
O SMA adiciona o EWI SPRKSCL1119
ao código de saída para que você saiba que essa função não é diretamente compatível com o Snowpark, mas tem uma solução alternativa.
val df1 = Seq(
("Alice", "alice@example.com"),
("Bob", "bob@example.org"),
("David", "david@example.com")
).toDF("name", "email")
/*EWI: SPRKSCL1119 => org.apache.spark.sql.Column.endsWith has a workaround, see documentation for more info*/
val result1 = df1.filter(col("email").endsWith(".com"))
val df2 = Seq(
("Alice", "alice@example.com", ".com"),
("Bob", "bob@example.org", ".org"),
("David", "david@example.org", ".com")
).toDF("name", "email", "suffix")
/*EWI: SPRKSCL1119 => org.apache.spark.sql.Column.endsWith has a workaround, see documentation for more info*/
val result2 = df2.filter(col("email").endsWith(col("suffix")))
Correção recomendada
Como solução alternativa, você pode usar a função com.snowflake.snowpark.functions.endswith, em que o primeiro argumento seria a coluna cujos valores serão verificados e o segundo argumento seria o sufixo a ser verificado em relação aos valores da coluna. Observe que, se o argumento da função endswith
do Spark for uma cadeia de caracteres literal, você deverá convertê-la em um objeto de coluna usando a função com.snowflake.snowpark.functions.lit.
val df1 = Seq(
("Alice", "alice@example.com"),
("Bob", "bob@example.org"),
("David", "david@example.com")
).toDF("name", "email")
val result1 = df1.filter(endswith(col("email"), lit(".com")))
val df2 = Seq(
("Alice", "alice@example.com", ".com"),
("Bob", "bob@example.org", ".org"),
("David", "david@example.org", ".com")
).toDF("name", "email", "suffix")
val result2 = df2.filter(endswith(col("email"), col("suffix")))
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1148¶
Mensagem: org.apache.spark.sql.functions.toDegrees tem uma solução alternativa, consulte a documentação para obter mais informações
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.functions.toDegrees, que tem uma solução alternativa.
Cenário¶
Entrada
Abaixo está um exemplo da função org.apache.spark.sql.functions.toDegrees
, usada primeiro com um nome de coluna como argumento e depois com um objeto de coluna.
val df = Seq(Math.PI, Math.PI / 2, Math.PI / 4).toDF("angle_in_radians")
val result1 = df.withColumn("angle_in_degrees", toDegrees("angle_in_radians"))
val result2 = df.withColumn("angle_in_degrees", toDegrees(col("angle_in_radians")))
Saída
O SMA adiciona o EWI SPRKSCL1148
ao código de saída para que você saiba que essa função não é totalmente compatível com o Snowpark, mas que há uma solução alternativa.
val df = Seq(Math.PI, Math.PI / 2, Math.PI / 4).toDF("angle_in_radians")
/*EWI: SPRKSCL1148 => org.apache.spark.sql.functions.toDegrees has a workaround, see documentation for more info*/
val result1 = df.withColumn("angle_in_degrees", toDegrees("angle_in_radians"))
/*EWI: SPRKSCL1148 => org.apache.spark.sql.functions.toDegrees has a workaround, see documentation for more info*/
val result2 = df.withColumn("angle_in_degrees", toDegrees(col("angle_in_radians")))
Correção recomendada
Como solução alternativa, você pode usar a função degrees. Para a sobrecarga do Spark que recebe um argumento de cadeia de caracteres, você também precisa converter a cadeia de caracteres em um objeto de coluna usando a função com.snowflake.snowpark.functions.col.
val df = Seq(Math.PI, Math.PI / 2, Math.PI / 4).toDF("angle_in_radians")
val result1 = df.withColumn("angle_in_degrees", degrees(col("angle_in_radians")))
val result2 = df.withColumn("angle_in_degrees", degrees(col("angle_in_radians")))
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1158¶
Mensagem: org.apache.spark.sql.functions.skewness tem uma solução alternativa, consulte a documentação para obter mais informações
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.functions.skewness, que tem uma solução alternativa.
Cenário¶
Entrada
Abaixo está um exemplo da função org.apache.spark.sql.functions.skewness
que gera esse EWI. Neste exemplo, a função skewness
é usada para calcular a assimetria da coluna selecionada.
val df = Seq("1", "2", "3").toDF("elements")
val result1 = skewness(col("elements"))
val result2 = skewness("elements")
Saída
O SMA adiciona o EWI SPRKSCL1158
ao código de saída para que você saiba que essa função não é totalmente compatível com o Snowpark, mas que há uma solução alternativa.
val df = Seq("1", "2", "3").toDF("elements")
/*EWI: SPRKSCL1158 => org.apache.spark.sql.functions.skewness has a workaround, see documentation for more info*/
val result1 = skewness(col("elements"))
/*EWI: SPRKSCL1158 => org.apache.spark.sql.functions.skewness has a workaround, see documentation for more info*/
val result2 = skewness("elements")
Correção recomendada
O Snowpark tem uma função equivalente skew que recebe um objeto de coluna como argumento. Por esse motivo, a sobrecarga do Spark que recebe um objeto de coluna como argumento é diretamente suportada pelo Snowpark e não exige nenhuma alteração.
Para a sobrecarga que recebe um argumento de cadeia de caracteres, você pode converter a cadeia de caracteres em um objeto de coluna usando a função com.snowflake.snowpark.functions.col como solução alternativa.
val df = Seq("1", "2", "3").toDF("elements")
val result1 = skew(col("elements"))
val result2 = skew(col("elements"))
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1109¶
Nota
Este código de problema está obsoleto
Mensagem: O parâmetro não está definido para org.apache.spark.sql.DataFrameReader.option
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta que o parâmetro de org.apache.spark.sql.DataFrameReader.option não está definido.
Cenário¶
Entrada
Abaixo está um exemplo de parâmetro indefinido para a função org.apache.spark.sql.DataFrameReader.option
.
spark.read.option("header", True).json(path)
Saída
O SMA adiciona o EWI SPRKSCL1109
ao código de saída para que você saiba que o parâmetro fornecido para a função org.apache.spark.sql.DataFrameReader.option não está definido.
/*EWI: SPRKSCL1109 => The parameter header=True is not supported for org.apache.spark.sql.DataFrameReader.option*/
spark.read.option("header", True).json(path)
Correção recomendada
Verifique a documentação do Snowpark para a opção de formato de reader aqui, a fim de identificar as opções definidas.
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1114¶
Mensagem: org.apache.spark.sql.functions.repeat tem uma solução alternativa, consulte a documentação para obter mais informações
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.functions.repeat, que tem uma solução alternativa.
Cenário¶
Entrada
Veja a seguir um exemplo da função org.apache.spark.sql.functions.repeat
que gera esse EWI.
val df = Seq("Hello", "World").toDF("word")
val result = df.withColumn("repeated_word", repeat(col("word"), 3))
Saída
O SMA adiciona o EWI SPRKSCL1114
ao código de saída para que você saiba que essa função não é totalmente compatível com o Snowpark, mas que há uma solução alternativa.
val df = Seq("Hello", "World").toDF("word")
/*EWI: SPRKSCL1114 => org.apache.spark.sql.functions.repeat has a workaround, see documentation for more info*/
val result = df.withColumn("repeated_word", repeat(col("word"), 3))
Correção recomendada
Como solução alternativa, você pode converter o segundo argumento em um objeto de coluna usando a função com.snowflake.snowpark.functions.lit.
val df = Seq("Hello", "World").toDF("word")
val result = df.withColumn("repeated_word", repeat(col("word"), lit(3)))
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1145¶
Mensagem: org.apache.spark.sql.functions.sumDistinct tem uma solução alternativa, consulte a documentação para obter mais informações
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.functions.sumDistinct, que tem uma solução alternativa.
Cenário¶
Entrada
Abaixo está um exemplo da função org.apache.spark.sql.functions.sumDistinct
, usada primeiro com um nome de coluna como argumento e depois com um objeto de coluna.
val df = Seq(
("Alice", 10),
("Bob", 15),
("Alice", 10),
("Alice", 20),
("Bob", 15)
).toDF("name", "value")
val result1 = df.groupBy("name").agg(sumDistinct("value"))
val result2 = df.groupBy("name").agg(sumDistinct(col("value")))
Saída
O SMA adiciona o EWI SPRKSCL1145
ao código de saída para que você saiba que essa função não é totalmente compatível com o Snowpark, mas que há uma solução alternativa.
val df = Seq(
("Alice", 10),
("Bob", 15),
("Alice", 10),
("Alice", 20),
("Bob", 15)
).toDF("name", "value")
/*EWI: SPRKSCL1145 => org.apache.spark.sql.functions.sumDistinct has a workaround, see documentation for more info*/
val result1 = df.groupBy("name").agg(sumDistinct("value"))
/*EWI: SPRKSCL1145 => org.apache.spark.sql.functions.sumDistinct has a workaround, see documentation for more info*/
val result2 = df.groupBy("name").agg(sumDistinct(col("value")))
Correção recomendada
Como solução alternativa, o senhor pode usar a função sum_distinct. Para a sobrecarga do Spark que recebe um argumento de cadeia de caracteres, você também precisa converter a cadeia de caracteres em um objeto de coluna usando a função com.snowflake.snowpark.functions.col.
val df = Seq(
("Alice", 10),
("Bob", 15),
("Alice", 10),
("Alice", 20),
("Bob", 15)
).toDF("name", "value")
val result1 = df.groupBy("name").agg(sum_distinct(col("value")))
val result2 = df.groupBy("name").agg(sum_distinct(col("value")))
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1171¶
Mensagem: O Snowpark não oferece suporte a funções de divisão com mais de dois parâmetros ou que contenham um padrão regex. Consulte a documentação para obter mais informações.
Categoria: Aviso.
Descrição¶
Esse problema aparece quando o SMA detecta que org.apache.spark.sql.functions.split tem mais de dois parâmetros ou contém um padrão regex.
Cenários¶
A função split
é usada para separar a coluna fornecida em torno das correspondências do padrão fornecido. Essa função Spark tem três sobrecargas.
Cenário 1¶
Entrada
Veja a seguir um exemplo da função org.apache.spark.sql.functions.split
que gera esse EWI. Neste exemplo, a função split
tem dois parâmetros e o segundo argumento é uma cadeia de caracteres, não um padrão regex.
val df = Seq("Snowflake", "Snowpark", "Snow", "Spark").toDF("words")
val result = df.select(split(col("words"), "Snow"))
Saída
O SMA adiciona o EWI SPRKSCL1171
ao código de saída para que você saiba que essa função não é totalmente suportada no Snowpark.
val df = Seq("Snowflake", "Snowpark", "Snow", "Spark").toDF("words")
/* EWI: SPRKSCL1171 => Snowpark does not support split functions with more than two parameters or containing regex pattern. See documentation for more info. */
val result = df.select(split(col("words"), "Snow"))
Correção recomendada
O Snowpark tem uma função equivalente split que recebe um objeto de coluna como segundo argumento. Por esse motivo, a sobrecarga do Spark que recebe um argumento de cadeia de caracteres no segundo argumento, mas que não é um padrão regex, pode converter a cadeia de caracteres em um objeto de coluna usando a função com.snowflake.snowpark.functions.lit como uma solução alternativa.
val df = Seq("Snowflake", "Snowpark", "Snow", "Spark").toDF("words")
val result = df.select(split(col("words"), lit("Snow")))
Cenário 2¶
Entrada
Veja a seguir um exemplo da função org.apache.spark.sql.functions.split
que gera esse EWI. Neste exemplo, a função split
tem dois parâmetros e o segundo argumento é um padrão regex.
val df = Seq("Snowflake", "Snowpark", "Snow", "Spark").toDF("words")
val result = df.select(split(col("words"), "^([\\d]+-[\\d]+-[\\d])"))
Saída
O SMA adiciona o EWI SPRKSCL1171
ao código de saída para que você saiba que essa função não é totalmente compatível com o Snowpark porque os padrões regex não são compatíveis com o Snowflake.
val df = Seq("Snowflake", "Snowpark", "Snow", "Spark").toDF("words")
/* EWI: SPRKSCL1171 => Snowpark does not support split functions with more than two parameters or containing regex pattern. See documentation for more info. */
val result = df.select(split(col("words"), "^([\\d]+-[\\d]+-[\\d])"))
Correção recomendada
Como o Snowflake não oferece suporte a padrões regex, tente substituir o padrão por uma cadeia de caracteres de padrão não regex.
Cenário 3¶
Entrada
Veja a seguir um exemplo da função org.apache.spark.sql.functions.split
que gera esse EWI. Neste exemplo, a função split
tem mais de dois parâmetros.
val df = Seq("Snowflake", "Snowpark", "Snow", "Spark").toDF("words")
val result = df.select(split(df("words"), "Snow", 3))
Saída
O SMA adiciona o EWI SPRKSCL1171
ao código de saída para que você saiba que essa função não é totalmente compatível com o Snowpark, pois o Snowflake não tem uma função split com mais de dois parâmetros.
val df = Seq("Snowflake", "Snowpark", "Snow", "Spark").toDF("words")
/* EWI: SPRKSCL1171 => Snowpark does not support split functions with more than two parameters or containing regex pattern. See documentation for more info. */
val result3 = df.select(split(df("words"), "Snow", 3))
Correção recomendada
Como o Snowflake não suporta a função split com mais de dois parâmetros, tente usar a função split suportada pelo Snowflake.
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1120¶
Mensagem: org.apache.spark.sql.functions.asin tem uma solução alternativa, consulte a documentação para obter mais informações
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.functions.asin, que tem uma solução alternativa.
Cenário¶
Entrada
Abaixo está um exemplo da função org.apache.spark.sql.functions.asin
, usada primeiro com um nome de coluna como argumento e depois com um objeto de coluna.
val df = Seq(0.5, 0.6, -0.5).toDF("value")
val result1 = df.select(col("value"), asin("value").as("asin_value"))
val result2 = df.select(col("value"), asin(col("value")).as("asin_value"))
Saída
O SMA adiciona o EWI SPRKSCL1120
ao código de saída para que você saiba que essa função não é totalmente compatível com o Snowpark, mas que há uma solução alternativa.
val df = Seq(0.5, 0.6, -0.5).toDF("value")
/*EWI: SPRKSCL1120 => org.apache.spark.sql.functions.asin has a workaround, see documentation for more info*/
val result1 = df.select(col("value"), asin("value").as("asin_value"))
/*EWI: SPRKSCL1120 => org.apache.spark.sql.functions.asin has a workaround, see documentation for more info*/
val result2 = df.select(col("value"), asin(col("value")).as("asin_value"))
Correção recomendada
O Snowpark tem uma função equivalente asin que recebe um objeto de coluna como argumento. Por esse motivo, a sobrecarga do Spark que recebe um objeto de coluna como argumento é diretamente suportada pelo Snowpark e não exige nenhuma alteração.
Para a sobrecarga que recebe um argumento de cadeia de caracteres, você pode converter a cadeia de caracteres em um objeto de coluna usando a função com.snowflake.snowpark.functions.col como solução alternativa.
val df = Seq(0.5, 0.6, -0.5).toDF("value")
val result1 = df.select(col("value"), asin(col("value")).as("asin_value"))
val result2 = df.select(col("value"), asin(col("value")).as("asin_value"))
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1130¶
Mensagem: org.apache.spark.sql.functions.greatest tem uma solução alternativa, consulte a documentação para obter mais informações
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.functions.greatest, que tem uma solução alternativa.
Cenário¶
Entrada
Abaixo está um exemplo da função org.apache.spark.sql.functions.greatest
, usada primeiro com vários nomes de coluna como argumentos e depois com vários objetos de coluna.
val df = Seq(
("apple", 10, 20, 15),
("banana", 5, 25, 18),
("mango", 12, 8, 30)
).toDF("fruit", "value1", "value2", "value3")
val result1 = df.withColumn("greatest", greatest("value1", "value2", "value3"))
val result2 = df.withColumn("greatest", greatest(col("value1"), col("value2"), col("value3")))
Saída
O SMA adiciona o EWI SPRKSCL1130
ao código de saída para que você saiba que essa função não é totalmente compatível com o Snowpark, mas que há uma solução alternativa.
val df = Seq(
("apple", 10, 20, 15),
("banana", 5, 25, 18),
("mango", 12, 8, 30)
).toDF("fruit", "value1", "value2", "value3")
/*EWI: SPRKSCL1130 => org.apache.spark.sql.functions.greatest has a workaround, see documentation for more info*/
val result1 = df.withColumn("greatest", greatest("value1", "value2", "value3"))
/*EWI: SPRKSCL1130 => org.apache.spark.sql.functions.greatest has a workaround, see documentation for more info*/
val result2 = df.withColumn("greatest", greatest(col("value1"), col("value2"), col("value3")))
Correção recomendada
O Snowpark tem uma função equivalente greatest que recebe vários objetos de coluna como argumentos. Por esse motivo, a sobrecarga do Spark que recebe objetos de coluna como argumentos é diretamente suportada pelo Snowpark e não exige nenhuma alteração.
Para a sobrecarga que recebe vários argumentos de cadeia de caracteres, você pode converter as cadeias de caracteres em objetos de coluna usando a função com.snowflake.snowpark.functions.col como solução alternativa.
val df = Seq(
("apple", 10, 20, 15),
("banana", 5, 25, 18),
("mango", 12, 8, 30)
).toDF("fruit", "value1", "value2", "value3")
val result1 = df.withColumn("greatest", greatest(col("value1"), col("value2"), col("value3")))
val result2 = df.withColumn("greatest", greatest(col("value1"), col("value2"), col("value3")))
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
descrição: >- Snowpark e extensões do Snowpark não foram adicionados ao arquivo de configuração do projeto.
SPRKSCL1161¶
Mensagem: Falha ao adicionar dependências.
Categoria: Erro de conversão.
Descrição¶
Esse problema ocorre quando o SMA detecta uma versão do Spark no arquivo de configuração do projeto que não é compatível com o SMA e, portanto, o SMA não pode adicionar as dependências do Snowpark e extensões do Snowpark ao arquivo de configuração do projeto correspondente. Se as dependências do Snowpark não forem adicionadas, o código migrado não será compilado.
Cenários¶
Há três cenários possíveis: sbt, gradle e pom.xml. O SMA tenta processar o arquivo de configuração do projeto removendo as dependências do Spark e adicionando as dependências do Snowpark e extensões do Snowpark.
Cenário 1¶
Entrada
Veja a seguir um exemplo da seção dependencies
de um arquivo de configuração de projeto sbt
.
...
libraryDependencies += "org.apache.spark" % "spark-core_2.13" % "3.5.3"
libraryDependencies += "org.apache.spark" % "spark-sql_2.13" % "3.5.3"
...
Saída
O SMA adiciona o EWI SPRKSCL1161
ao inventário de problemas, já que a versão do Spark não é compatível, e mantém a mesma saída.
...
libraryDependencies += "org.apache.spark" % "spark-core_2.13" % "3.5.3"
libraryDependencies += "org.apache.spark" % "spark-sql_2.13" % "3.5.3"
...
Correção recomendada
Manualmente, remova as dependências do Spark e adicione as dependências do Snowpark e extensões do Snowpark ao arquivo de configuração do projeto sbt
.
...
libraryDependencies += "com.snowflake" % "snowpark" % "1.14.0"
libraryDependencies += "net.mobilize.snowpark-extensions" % "snowparkextensions" % "0.0.18"
...
Certifique-se de usar a versão do Snowpark que melhor atenda aos requisitos do seu projeto.
Cenário 2¶
Entrada
Veja a seguir um exemplo da seção dependencies
de um arquivo de configuração de projeto gradle
.
dependencies {
implementation group: 'org.apache.spark', name: 'spark-core_2.13', version: '3.5.3'
implementation group: 'org.apache.spark', name: 'spark-sql_2.13', version: '3.5.3'
...
}
Saída
O SMA adiciona o EWI SPRKSCL1161
ao inventário de problemas, já que a versão do Spark não é compatível, e mantém a mesma saída.
dependencies {
implementation group: 'org.apache.spark', name: 'spark-core_2.13', version: '3.5.3'
implementation group: 'org.apache.spark', name: 'spark-sql_2.13', version: '3.5.3'
...
}
Correção recomendada
Manualmente, remova as dependências do Spark e adicione as dependências do Snowpark e extensões do Snowpark ao arquivo de configuração do projeto gradle
.
dependencies {
implementation 'com.snowflake:snowpark:1.14.2'
implementation 'net.mobilize.snowpark-extensions:snowparkextensions:0.0.18'
...
}
Certifique-se de que a versão das dependências esteja de acordo com as necessidades de seu projeto.
Cenário 3¶
Entrada
Veja a seguir um exemplo da seção dependencies
de um arquivo de configuração de projeto pom.xml
.
<dependencies>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.13</artifactId>
<version>3.5.3</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.13</artifactId>
<version>3.5.3</version>
<scope>compile</scope>
</dependency>
...
</dependencies>
Saída
O SMA adiciona o EWI SPRKSCL1161
ao inventário de problemas, já que a versão do Spark não é compatível, e mantém a mesma saída.
<dependencies>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.13</artifactId>
<version>3.5.3</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.13</artifactId>
<version>3.5.3</version>
<scope>compile</scope>
</dependency>
...
</dependencies>
Correção recomendada
Manualmente, remova as dependências do Spark e adicione as dependências do Snowpark e extensões do Snowpark ao arquivo de configuração do projeto gradle
.
<dependencies>
<dependency>
<groupId>com.snowflake</groupId>
<artifactId>snowpark</artifactId>
<version>1.14.2</version>
</dependency>
<dependency>
<groupId>net.mobilize.snowpark-extensions</groupId>
<artifactId>snowparkextensions</artifactId>
<version>0.0.18</version>
</dependency>
...
</dependencies>
Certifique-se de que a versão das dependências esteja de acordo com as necessidades de seu projeto.
Recomendações adicionais¶
Certifique-se de que a entrada tenha um arquivo de configuração de projeto:
build.sbt
build.gradle
pom.xml
A versão do Spark suportada pelo SMA é 2.12:3.1.2
Você pode verificar a versão mais recente do Snowpark aqui.
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1155¶
Aviso
Esse código de problema está obsoleto desde o Spark Conversion Core Version 4.3.2
Mensagem: org.apache.spark.sql.functions.countDistinct tem uma solução alternativa, consulte a documentação para obter mais informações
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.functions.countDistinct, que tem uma solução alternativa.
Cenário¶
Entrada
Abaixo está um exemplo da função org.apache.spark.sql.functions.countDistinct
, usada primeiro com nomes de coluna como argumentos e depois com objetos de coluna.
val df = Seq(
("Alice", 1),
("Bob", 2),
("Alice", 3),
("Bob", 4),
("Alice", 1),
("Charlie", 5)
).toDF("name", "value")
val result1 = df.select(countDistinct("name", "value"))
val result2 = df.select(countDistinct(col("name"), col("value")))
Saída
O SMA adiciona o EWI SPRKSCL1155
ao código de saída para que você saiba que essa função não é totalmente compatível com o Snowpark, mas que há uma solução alternativa.
val df = Seq(
("Alice", 1),
("Bob", 2),
("Alice", 3),
("Bob", 4),
("Alice", 1),
("Charlie", 5)
).toDF("name", "value")
/*EWI: SPRKSCL1155 => org.apache.spark.sql.functions.countDistinct has a workaround, see documentation for more info*/
val result1 = df.select(countDistinct("name", "value"))
/*EWI: SPRKSCL1155 => org.apache.spark.sql.functions.countDistinct has a workaround, see documentation for more info*/
val result2 = df.select(countDistinct(col("name"), col("value")))
Correção recomendada
Como solução alternativa, você pode usar a função count_distinct. Para a sobrecarga do Spark que recebe argumentos de cadeia de caracteres, você também precisa converter as cadeias de caracteres em objetos de coluna usando a função com.snowflake.snowpark.functions.col.
val df = Seq(
("Alice", 1),
("Bob", 2),
("Alice", 3),
("Bob", 4),
("Alice", 1),
("Charlie", 5)
).toDF("name", "value")
val result1 = df.select(count_distinct(col("name"), col("value")))
val result2 = df.select(count_distinct(col("name"), col("value")))
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1104¶
Este código de problema está obsoleto
Mensagem: A opção Spark Session builder não é suportada.
Categoria: Erro de conversão.
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.SparkSession. Builder.config, que está definindo uma opção da Spark Session e não é suportada pelo Snowpark.
Cenário¶
Entrada
Veja a seguir um exemplo da função org.apache.spark.sql.SparkSession.Builder.config
usada para definir uma opção na Spark Session.
val spark = SparkSession.builder()
.master("local")
.appName("testApp")
.config("spark.sql.broadcastTimeout", "3600")
.getOrCreate()
Saída
O SMA adiciona o EWI SPRKSCL1104
ao código de saída para que você saiba que o método de configuração não é compatível com o Snowpark. Então, não é possível definir opções na Spark Session por meio da função config e isso pode afetar a migração da instrução da Spark Session.
val spark = Session.builder.configFile("connection.properties")
/*EWI: SPRKSCL1104 => SparkBuilder Option is not supported .config("spark.sql.broadcastTimeout", "3600")*/
.create()
Correção recomendada
Para criar a sessão, é necessário adicionar a configuração adequada do Snowflake Snowpark.
Neste exemplo, é usada uma variável configs.
val configs = Map (
"URL" -> "https://<myAccount>.snowflakecomputing.com:<port>",
"USER" -> <myUserName>,
"PASSWORD" -> <myPassword>,
"ROLE" -> <myRole>,
"WAREHOUSE" -> <myWarehouse>,
"DB" -> <myDatabase>,
"SCHEMA" -> <mySchema>
)
val session = Session.builder.configs(configs).create
Também é recomendado o uso de um configFile (profile.properties) com as informações de conexão:
## profile.properties file (a text file)
URL = https://<account_identifier>.snowflakecomputing.com
USER = <username>
PRIVATEKEY = <unencrypted_private_key_from_the_private_key_file>
ROLE = <role_name>
WAREHOUSE = <warehouse_name>
DB = <database_name>
SCHEMA = <schema_name>
E com o Session.builder.configFile
, a sessão pode ser criada:
val session = Session.builder.configFile("/path/to/properties/file").create
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1124¶
Mensagem: org.apache.spark.sql.functions.cosh tem uma solução alternativa, consulte a documentação para obter mais informações
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.functions.cosh, que tem uma solução alternativa.
Cenário¶
Entrada
Abaixo está um exemplo da função org.apache.spark.sql.functions.cosh
, usada primeiro com um nome de coluna como argumento e depois com um objeto de coluna.
val df = Seq(0.0, 1.0, 2.0, -1.0).toDF("value")
val result1 = df.withColumn("cosh_value", cosh("value"))
val result2 = df.withColumn("cosh_value", cosh(col("value")))
Saída
O SMA adiciona o EWI SPRKSCL1124
ao código de saída para que você saiba que essa função não é totalmente compatível com o Snowpark, mas que há uma solução alternativa.
val df = Seq(0.0, 1.0, 2.0, -1.0).toDF("value")
/*EWI: SPRKSCL1124 => org.apache.spark.sql.functions.cosh has a workaround, see documentation for more info*/
val result1 = df.withColumn("cosh_value", cosh("value"))
/*EWI: SPRKSCL1124 => org.apache.spark.sql.functions.cosh has a workaround, see documentation for more info*/
val result2 = df.withColumn("cosh_value", cosh(col("value")))
Correção recomendada
O Snowpark tem uma função equivalente cosh que recebe um objeto de coluna como argumento. Por esse motivo, a sobrecarga do Spark que recebe um objeto de coluna como argumento é diretamente suportada pelo Snowpark e não exige nenhuma alteração.
Para a sobrecarga que recebe um argumento de cadeia de caracteres, você pode converter a cadeia de caracteres em um objeto de coluna usando a função com.snowflake.snowpark.functions.col como solução alternativa.
val df = Seq(0.0, 1.0, 2.0, -1.0).toDF("value")
val result1 = df.withColumn("cosh_value", cosh(col("value")))
val result2 = df.withColumn("cosh_value", cosh(col("value")))
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1175¶
Mensagem: A função de dois parâmetrosudf
não é compatível com o Snowpark. Ela deve ser convertida em uma função de parâmetro únicoudf
. Consulte a documentação para saber como modificar manualmente o código para que ele funcione no Snowpark.
Categoria: Erro de conversão.
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função de dois parâmetros org.apache.spark.sql.functions.udf no código-fonte, porque o Snowpark não tem uma função equivalente de dois parâmetros udf
, então o código de saída pode não ser compilado.
Cenário¶
Entrada
Abaixo está um exemplo da função org.apache.spark.sql.functions.udf
que gera esse EWI. Neste exemplo, a função udf
tem dois parâmetros.
val myFuncUdf = udf(new UDF1[String, Integer] {
override def call(s: String): Integer = s.length()
}, IntegerType)
Saída
O SMA adiciona o EWI SPRKSCL1175
ao código de saída para que você saiba que a função udf
não é compatível, pois tem dois parâmetros.
/*EWI: SPRKSCL1175 => The two-parameter udf function is not supported in Snowpark. It should be converted into a single-parameter udf function. Please check the documentation to learn how to manually modify the code to make it work in Snowpark.*/
val myFuncUdf = udf(new UDF1[String, Integer] {
override def call(s: String): Integer = s.length()
}, IntegerType)
Correção recomendada
O Snowpark suporta apenas a função de parâmetro único udf
(sem o parâmetro de tipo de retorno), portanto, você deve converter sua função de dois parâmetros udf
em uma função de parâmetro único udf
para que ela funcione no Snowpark.
Por exemplo, para o código de amostra mencionado acima, você teria que convertê-lo manualmente para isso:
val myFuncUdf = udf((s: String) => s.length())
Observe que há algumas ressalvas sobre a criação do udf
no Snowpark que podem exigir que você faça algumas alterações manuais adicionais no seu código. Para obter mais detalhes, consulte estas outras recomendações [aqui](../../issue-codes-by-source/spark-scala/README. md#additional-recommendations) relacionadas à criação de funções de parâmetro único udf
no Snowpark.
Recomendações adicionais¶
Para saber mais sobre como criar funções definidas pelo usuário no Snowpark, consulte a documentação a seguir: Criação de funções definidas pelo usuário (UDFs) para DataFrames no Scala
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1001¶
Mensagem: Esta seção de código tem erros de análise. O erro de análise foi encontrado em: linha _ número da linha _, coluna _ número da coluna _. Ao tentar analisar a _ instrução _. Esse arquivo não foi convertido, portanto, espera-se que ele ainda tenha referências ao Spark API.
Categoria: Erro de análise.
Descrição¶
Esse problema aparece quando o SMA detecta alguma instrução que não pode ser lida ou compreendida corretamente no código de um arquivo, o que é chamado de erro de análise. Além disso, esse problema aparece quando um arquivo tem um ou mais erros de análise.
Cenário¶
Entrada
Abaixo está um exemplo de código Scala inválido.
/#/(%$"$%
Class myClass {
def function1() = { 1 }
}
Saída
O SMA adiciona o EWI SPRKSCL1001
ao código de saída para que você saiba que o código do arquivo tem erros de análise. Portanto, o SMA não é capaz de processar um arquivo com esse erro.
// **********************************************************************************************************************
// EWI: SPRKSCL1001 => This code section has parsing errors
// The parsing error was found at: line 0, column 0. When trying to parse ''.
// This file was not converted, so it is expected to still have references to the Spark API
// **********************************************************************************************************************
/#/(%$"$%
Class myClass {
def function1() = { 1 }
}
Correção recomendada
Como a mensagem aponta o erro na instrução, você pode tentar identificar a sintaxe inválida e removê-la ou comentar essa instrução para evitar o erro de análise.
Class myClass {
def function1() = { 1 }
}
// /#/(%$"$%
Class myClass {
def function1() = { 1 }
}
Recomendações adicionais¶
Verifique se o código do arquivo é um código Scala válido.
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1141¶
Mensagem: org.apache.spark.sql.functions.stddev_pop tem uma solução alternativa, consulte a documentação para obter mais informações
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.functions.stddev_pop, que tem uma solução alternativa.
Cenário¶
Abaixo está um exemplo da função org.apache.spark.sql.functions.stddev_pop
, usada primeiro com um nome de coluna como argumento e depois com um objeto de coluna.
Entrada
val df = Seq(
("Alice", 23),
("Bob", 30),
("Carol", 27),
("David", 25),
).toDF("name", "age")
val result1 = df.select(stddev_pop("age"))
val result2 = df.select(stddev_pop(col("age")))
Saída
O SMA adiciona o EWI SPRKSCL1141
ao código de saída para que você saiba que essa função não é totalmente compatível com o Snowpark, mas que há uma solução alternativa.
val df = Seq(
("Alice", 23),
("Bob", 30),
("Carol", 27),
("David", 25),
).toDF("name", "age")
/*EWI: SPRKSCL1141 => org.apache.spark.sql.functions.stddev_pop has a workaround, see documentation for more info*/
val result1 = df.select(stddev_pop("age"))
/*EWI: SPRKSCL1141 => org.apache.spark.sql.functions.stddev_pop has a workaround, see documentation for more info*/
val result2 = df.select(stddev_pop(col("age")))
Correção recomendada
O Snowpark tem uma função equivalente stddev_pop que recebe um objeto de coluna como argumento. Por esse motivo, a sobrecarga do Spark que recebe um objeto de coluna como argumento é diretamente suportada pelo Snowpark e não exige nenhuma alteração.
Para a sobrecarga que recebe um argumento de cadeia de caracteres, você pode converter a cadeia de caracteres em um objeto de coluna usando a função com.snowflake.snowpark.functions.col como solução alternativa.
val df = Seq(
("Alice", 23),
("Bob", 30),
("Carol", 27),
("David", 25),
).toDF("name", "age")
val result1 = df.select(stddev_pop(col("age")))
val result2 = df.select(stddev_pop(col("age")))
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1110¶
Nota
Este código de problema está obsoleto
Mensagem: Método de leitura não suportado _ nome do método _.
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta um método que não é compatível com o Snowflake no encadeamento de métodos do DataFrameReader. Então, isso pode afetar a migração da instrução reader.
Cenário¶
Entrada
Abaixo está um exemplo de um encadeamento de método DataFrameReader em que o método de carregamento não é suportado no Snowflake.
spark.read.
format("net.snowflake.spark.snowflake").
option("query", s"select * from $tablename")
load()
Saída
O SMA adiciona o EWI SPRKSCL1110
ao código de saída para que você saiba que o método de carregamento não é suportado no Snowpark. Então, isso pode afetar a migração da instrução reader.
session.sql(s"select * from $tablename")
/*EWI: SPRKSCL1110 => Reader method not supported .load()*/
Correção recomendada
Consulte a documentação do Snowpark para reader aqui, a fim de conhecer os métodos suportados pelo Snowflake.
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1100¶
Esse código de problema está obsoleto desde o Spark Conversion Core 2.3.22
Mensagem: A repartição não é suportada.
Categoria: Erro de análise.
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.DataFrame. repartition, que não é suportada pelo Snowpark. O Snowflake gerencia o armazenamento e a carga de trabalho nos clusters, tornando a operação de repartição inaplicável.
Cenário¶
Entrada
Abaixo está um exemplo da função org.apache.spark.sql.DataFrame.repartition
usada para retornar um novo DataFrame
particionado pelas expressões de particionamento fornecidas.
var nameData = Seq("James", "Sarah", "Dylan", "Leila, "Laura", "Peter")
var jobData = Seq("Police", "Doctor", "Actor", "Teacher, "Dentist", "Fireman")
var ageData = Seq(40, 38, 34, 27, 29, 55)
val dfName = nameData.toDF("name")
val dfJob = jobData.toDF("job")
val dfAge = ageData.toDF("age")
val dfRepartitionByExpresion = dfName.repartition($"name")
val dfRepartitionByNumber = dfJob.repartition(3)
val dfRepartitionByBoth = dfAge.repartition(3, $"age")
val joinedDf = dfRepartitionByExpresion.join(dfRepartitionByNumber)
Saída
O SMA adiciona o EWI SPRKSCL1100
ao código de saída para que você saiba que essa função não é suportada no Snowpark.
var nameData = Seq("James", "Sarah", "Dylan", "Leila, "Laura", "Peter")
var jobData = Seq("Police", "Doctor", "Actor", "Teacher, "Dentist", "Fireman")
var ageData = Seq(40, 38, 34, 27, 29, 55)
val dfName = nameData.toDF("name")
val dfJob = jobData.toDF("job")
val dfAge = ageData.toDF("age")
/*EWI: SPRKSCL1100 => Repartition is not supported*/
val dfRepartitionByExpresion = dfName.repartition($"name")
/*EWI: SPRKSCL1100 => Repartition is not supported*/
val dfRepartitionByNumber = dfJob.repartition(3)
/*EWI: SPRKSCL1100 => Repartition is not supported*/
val dfRepartitionByBoth = dfAge.repartition(3, $"age")
val joinedDf = dfRepartitionByExpresion.join(dfRepartitionByNumber)
Correção recomendada
Como o Snowflake gerencia o armazenamento e a carga de trabalho nos clusters, a operação de repartição não é aplicável. Isso significa que o uso da repartição antes da união não é necessário.
var nameData = Seq("James", "Sarah", "Dylan", "Leila, "Laura", "Peter")
var jobData = Seq("Police", "Doctor", "Actor", "Teacher, "Dentist", "Fireman")
var ageData = Seq(40, 38, 34, 27, 29, 55)
val dfName = nameData.toDF("name")
val dfJob = jobData.toDF("job")
val dfAge = ageData.toDF("age")
val dfRepartitionByExpresion = dfName
val dfRepartitionByNumber = dfJob
val dfRepartitionByBoth = dfAge
val joinedDf = dfRepartitionByExpresion.join(dfRepartitionByNumber)
Recomendações adicionais¶
O guia de arquitetura do Snowflake fornece informações sobre o gerenciamento de armazenamento do Snowflake.
A referência do Dataframe do Snowpark pode ser útil na adaptação de um cenário específico sem a necessidade de repartição.
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1151¶
Mensagem: org.apache.spark.sql.functions.var_samp tem uma solução alternativa, consulte a documentação para obter mais informações
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.functions.var_samp, que tem uma solução alternativa.
Cenário¶
Entrada
Abaixo está um exemplo da função org.apache.spark.sql.functions.var_samp
, usada primeiro com um nome de coluna como argumento e depois com um objeto de coluna.
val df = Seq(
("A", 10),
("A", 20),
("A", 30),
("B", 40),
("B", 50),
("B", 60)
).toDF("category", "value")
val result1 = df.groupBy("category").agg(var_samp("value"))
val result2 = df.groupBy("category").agg(var_samp(col("value")))
Saída
O SMA adiciona o EWI SPRKSCL1151
ao código de saída para que você saiba que essa função não é totalmente compatível com o Snowpark, mas que há uma solução alternativa.
val df = Seq(
("A", 10),
("A", 20),
("A", 30),
("B", 40),
("B", 50),
("B", 60)
).toDF("category", "value")
/*EWI: SPRKSCL1151 => org.apache.spark.sql.functions.var_samp has a workaround, see documentation for more info*/
val result1 = df.groupBy("category").agg(var_samp("value"))
/*EWI: SPRKSCL1151 => org.apache.spark.sql.functions.var_samp has a workaround, see documentation for more info*/
val result2 = df.groupBy("category").agg(var_samp(col("value")))
Correção recomendada
O Snowpark tem uma função equivalente var_samp que recebe um objeto de coluna como argumento. Por esse motivo, a sobrecarga do Spark que recebe um objeto de coluna como argumento é diretamente suportada pelo Snowpark e não exige nenhuma alteração.
Para a sobrecarga que recebe um argumento de cadeia de caracteres, você pode converter a cadeia de caracteres em um objeto de coluna usando a função com.snowflake.snowpark.functions.col como solução alternativa.
val df = Seq(
("A", 10),
("A", 20),
("A", 30),
("B", 40),
("B", 50),
("B", 60)
).toDF("category", "value")
val result1 = df.groupBy("category").agg(var_samp(col("value")))
val result2 = df.groupBy("category").agg(var_samp(col("value")))
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
descrição: >- O formato de reader no encadeamento do método DataFrameReader não é um dos definidos pelo Snowpark.
SPRKSCL1165¶
Mensagem: O formato de reader no encadeamento do método DataFrameReader não pode ser definido
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta que o format
do reader no encadeamento do método DataFrameReader não é um dos seguintes suportados pelo Snowpark: avro
, csv
, json
, orc
, parquet
e xml
. Portanto, o SMA não pode determinar se as opções de configuração estão definidas ou não.
Cenário¶
Entrada
Abaixo está um exemplo de encadeamento do método DataFrameReader em que o SMA pode determinar o formato do leitor.
spark.read.format("net.snowflake.spark.snowflake")
.option("query", s"select * from $tableName")
.load()
Saída
O SMA adiciona o EWI SPRKSCL1165
ao código de saída para que você saiba que o format
do reader não pode ser determinado no encadeamento do método DataFrameReader.
/*EWI: SPRKSCL1165 => Reader format on DataFrameReader method chaining can't be defined*/
spark.read.option("query", s"select * from $tableName")
.load()
Correção recomendada
Consulte a documentação do Snowpark aqui para obter mais informações sobre o formato de reader.
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1134¶
Mensagem: org.apache.spark.sql.functions.log tem uma solução alternativa, consulte a documentação para obter mais informações
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.functions.log, que tem uma solução alternativa.
Cenário¶
Entrada
Veja a seguir um exemplo da função org.apache.spark.sql.functions.log
que gera esse EWI.
val df = Seq(10.0, 20.0, 30.0, 40.0).toDF("value")
val result1 = df.withColumn("log_value", log(10, "value"))
val result2 = df.withColumn("log_value", log(10, col("value")))
val result3 = df.withColumn("log_value", log("value"))
val result4 = df.withColumn("log_value", log(col("value")))
Saída
O SMA adiciona o EWI SPRKSCL1134
ao código de saída para que você saiba que essa função não é totalmente compatível com o Snowpark, mas que há uma solução alternativa.
val df = Seq(10.0, 20.0, 30.0, 40.0).toDF("value")
/*EWI: SPRKSCL1134 => org.apache.spark.sql.functions.log has a workaround, see documentation for more info*/
val result1 = df.withColumn("log_value", log(10, "value"))
/*EWI: SPRKSCL1134 => org.apache.spark.sql.functions.log has a workaround, see documentation for more info*/
val result2 = df.withColumn("log_value", log(10, col("value")))
/*EWI: SPRKSCL1134 => org.apache.spark.sql.functions.log has a workaround, see documentation for more info*/
val result3 = df.withColumn("log_value", log("value"))
/*EWI: SPRKSCL1134 => org.apache.spark.sql.functions.log has a workaround, see documentation for more info*/
val result4 = df.withColumn("log_value", log(col("value")))
Correção recomendada
Abaixo estão as diferentes soluções alternativas para todas as sobrecargas da função log
.
1. def log(base: Double, columnName: String): Column
Você pode converter a base em um objeto de coluna usando a função com.snowflake.snowpark.functions.lit e converter o nome da coluna em um objeto de coluna usando a função com.snowflake.snowpark.functions.col.
val result1 = df.withColumn("log_value", log(lit(10), col("value")))
2. def log(base: Double, a: Column): Column
Você pode converter a base em um objeto de coluna usando a função com.snowflake.snowpark.functions.lit.
val result2 = df.withColumn("log_value", log(lit(10), col("value")))
3.def log(columnName: String): Column
Você pode passar lit(Math.E)
como o primeiro argumento e converter o nome da coluna em um objeto de coluna usando a função com.snowflake.snowpark.functions.col e passá-lo como o segundo argumento.
val result3 = df.withColumn("log_value", log(lit(Math.E), col("value")))
4. def log(e: Column): Column
Você pode passar lit(Math.E)
como o primeiro argumento e o objeto de coluna como o segundo argumento.
val result4 = df.withColumn("log_value", log(lit(Math.E), col("value")))
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1125¶
Aviso
Esse código de problema está obsoleto desde o Spark Conversion Core 2.9.0
Mensagem: org.apache.spark.sql.functions.count tem uma solução alternativa, consulte a documentação para obter mais informações
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.functions.count, que tem uma solução alternativa.
Cenário¶
Entrada
Abaixo está um exemplo da função org.apache.spark.sql.functions.count
, usada primeiro com um nome de coluna como argumento e depois com um objeto de coluna.
val df = Seq(
("Alice", "Math"),
("Bob", "Science"),
("Alice", "Science"),
("Bob", null)
).toDF("name", "subject")
val result1 = df.groupBy("name").agg(count("subject").as("subject_count"))
val result2 = df.groupBy("name").agg(count(col("subject")).as("subject_count"))
Saída
O SMA adiciona o EWI SPRKSCL1125
ao código de saída para que você saiba que essa função não é totalmente compatível com o Snowpark, mas que há uma solução alternativa.
val df = Seq(
("Alice", "Math"),
("Bob", "Science"),
("Alice", "Science"),
("Bob", null)
).toDF("name", "subject")
/*EWI: SPRKSCL1125 => org.apache.spark.sql.functions.count has a workaround, see documentation for more info*/
val result1 = df.groupBy("name").agg(count("subject").as("subject_count"))
/*EWI: SPRKSCL1125 => org.apache.spark.sql.functions.count has a workaround, see documentation for more info*/
val result2 = df.groupBy("name").agg(count(col("subject")).as("subject_count"))
Correção recomendada
O Snowpark tem uma função equivalente count que recebe um objeto de coluna como argumento. Por esse motivo, a sobrecarga do Spark que recebe um objeto de coluna como argumento é diretamente suportada pelo Snowpark e não exige nenhuma alteração.
Para a sobrecarga que recebe um argumento de cadeia de caracteres, você pode converter a cadeia de caracteres em um objeto de coluna usando a função com.snowflake.snowpark.functions.col como solução alternativa.
val df = Seq(
("Alice", "Math"),
("Bob", "Science"),
("Alice", "Science"),
("Bob", null)
).toDF("name", "subject")
val result1 = df.groupBy("name").agg(count(col("subject")).as("subject_count"))
val result2 = df.groupBy("name").agg(count(col("subject")).as("subject_count"))
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1174¶
Mensagem: A função de parâmetro único udf
é compatível com o Snowpark, mas pode exigir intervenção manual. Consulte a documentação para saber como modificar manualmente o código para que ele funcione no Snowpark.
Categoria: Aviso.
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função de parâmetro único org.apache.spark.sql.functions.udf no código. Nesse caso, pode ser necessária uma intervenção manual.
O Snowpark API fornece uma função com.snowflake.snowpark.functions.udf equivalente que permite criar uma função definida pelo usuário a partir de um lambda ou função em Scala; no entanto, há algumas ressalvas sobre a criação de udf
no Snowpark que podem exigir que você faça algumas alterações manuais no seu código para que ele funcione corretamente.
Cenários¶
A função do Snowpark udf
deve funcionar como pretendido em uma ampla gama de casos, sem necessidade de intervenção manual. No entanto, há alguns cenários que exigiriam que você modificasse manualmente o código para que ele funcionasse no Snowpark. Alguns desses cenários estão listados abaixo:
Cenário 1¶
Entrada
Veja a seguir um exemplo de criação de UDFs em um objeto com o App Trait.
A característica App
do Scala simplifica a criação de programas executáveis, fornecendo um método main
que executa automaticamente o código dentro da definição do objeto. Estender App
atrasa a inicialização dos campos até que o método main
seja executado, o que pode afetar as definições de UDFs se elas dependerem de campos inicializados. Isso significa que, se um objeto estender App
e o udf
fizer referência a um campo de objeto, a definição udf
carregada no Snowflake não incluirá o valor inicializado do campo. Isso pode resultar em valores null
sendo retornados pelo udf
.
Por exemplo, no código a seguir, a variável myValue será resolvida para null
na definição udf
:
object Main extends App {
...
val myValue = 10
val myUdf = udf((x: Int) => x + myValue) // myValue in the `udf` definition will resolve to null
...
}
Saída
O SMA adiciona o EWI SPRKSCL1174
ao código de saída para que você saiba que a função de parâmetro único udf
é compatível com o Snowpark, mas requer intervenção manual.
object Main extends App {
...
val myValue = 10
/*EWI: SPRKSCL1174 => The single-parameter udf function is supported in Snowpark but it might require manual intervention. Please check the documentation to learn how to manually modify the code to make it work in Snowpark.*/
val myUdf = udf((x: Int) => x + myValue) // myValue in the `udf` definition will resolve to null
...
}
Correção recomendada
Para evitar esse problema, é recomendável não estender o App
e implementar um método main
separado para o seu código. Isso garante que os campos de objeto sejam inicializados antes que as definições de udf
sejam criadas e carregadas no Snowflake.
object Main {
...
def main(args: Array[String]): Unit = {
val myValue = 10
val myUdf = udf((x: Int) => x + myValue)
}
...
}
Para obter mais detalhes sobre esse tópico, consulte Ressalva sobre criar UDFs em um objeto com o App Trait.
Cenário 2¶
Entrada
Veja abaixo um exemplo de criação de UDFs no Jupyter Notebooks.
def myFunc(s: String): String = {
...
}
val myFuncUdf = udf((x: String) => myFunc(x))
df1.select(myFuncUdf(col("name"))).show()
Saída
O SMA adiciona o EWI SPRKSCL1174
ao código de saída para que você saiba que a função de parâmetro único udf
é compatível com o Snowpark, mas requer intervenção manual.
def myFunc(s: String): String = {
...
}
/*EWI: SPRKSCL1174 => The single-parameter udf function is supported in Snowpark but it might require manual intervention. Please check the documentation to learn how to manually modify the code to make it work in Snowpark.*/
val myFuncUdf = udf((x: String) => myFunc(x))
df1.select(myFuncUdf(col("name"))).show()
Correção recomendada
Para criar um udf
em um Jupyter Notebook, você deve definir a implementação de sua função em uma classe que estenda Serializable
. Por exemplo, você deve convertê-lo manualmente para isso:
object ConvertedUdfFuncs extends Serializable {
def myFunc(s: String): String = {
...
}
val myFuncAsLambda = ((x: String) => ConvertedUdfFuncs.myFunc(x))
}
val myFuncUdf = udf(ConvertedUdfFuncs.myFuncAsLambda)
df1.select(myFuncUdf(col("name"))).show()
Para obter mais detalhes sobre como criar UDFs no Jupyter Notebooks, consulte Criando UDFs no Jupyter Notebooks.
Recomendações adicionais¶
Para saber mais sobre como criar funções definidas pelo usuário no Snowpark, consulte a documentação a seguir: Criação de funções definidas pelo usuário (UDFs) para DataFrames em Scala
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1000¶
Mensagem: A versão do spark-core do projeto de origem é _ número da versão _, a versão do spark-core suportada pelo snowpark é 2.12:3.1.2, portanto, pode haver diferenças funcionais entre os mapeamentos existentes
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta uma versão do spark-core
que não é compatível com o SMA. Portanto, pode haver diferenças funcionais entre os mapeamentos existentes e a saída pode ter comportamentos inesperados.
Recomendações adicionais¶
A versão do spark-core suportada pelo SMA é 2.12:3.1.2. Considere a possibilidade de alterar a versão de seu código-fonte.
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1140¶
Mensagem: org.apache.spark.sql.functions.stddev tem uma solução alternativa, consulte a documentação para obter mais informações
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.functions.stddev, que tem uma solução alternativa.
Cenário¶
Entrada
Abaixo está um exemplo da função org.apache.spark.sql.functions.stddev
, usada primeiro com um nome de coluna como argumento e depois com um objeto de coluna.
val df = Seq(
("Alice", 10),
("Bob", 15),
("Charlie", 20),
("David", 25),
).toDF("name", "score")
val result1 = df.select(stddev("score"))
val result2 = df.select(stddev(col("score")))
Saída
O SMA adiciona o EWI SPRKSCL1140
ao código de saída para que você saiba que essa função não é totalmente compatível com o Snowpark, mas que há uma solução alternativa.
val df = Seq(
("Alice", 10),
("Bob", 15),
("Charlie", 20),
("David", 25),
).toDF("name", "score")
/*EWI: SPRKSCL1140 => org.apache.spark.sql.functions.stddev has a workaround, see documentation for more info*/
val result1 = df.select(stddev("score"))
/*EWI: SPRKSCL1140 => org.apache.spark.sql.functions.stddev has a workaround, see documentation for more info*/
val result2 = df.select(stddev(col("score")))
Correção recomendada
O Snowpark tem uma função equivalente stddev que recebe um objeto de coluna como argumento. Por esse motivo, a sobrecarga do Spark que recebe um objeto de coluna como argumento é diretamente suportada pelo Snowpark e não exige nenhuma alteração.
Para a sobrecarga que recebe um argumento de cadeia de caracteres, você pode converter a cadeia de caracteres em um objeto de coluna usando a função com.snowflake.snowpark.functions.col como solução alternativa.
val df = Seq(
("Alice", 10),
("Bob", 15),
("Charlie", 20),
("David", 25),
).toDF("name", "score")
val result1 = df.select(stddev(col("score")))
val result2 = df.select(stddev(col("score")))
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1111¶
Nota
Este código de problema está obsoleto
Mensagem: CreateDecimalType não é compatível.
Categoria: Erro de conversão.
Descrição¶
Esse problema aparece quando o SMA detecta um uso da função org.apache.spark.sql.types.DataTypes.CreateDecimalType
Cenário¶
Entrada
Veja a seguir um exemplo de uso da função org.apache.spark.sql.types.DataTypes.CreateDecimalType.
var result = DataTypes.createDecimalType(18, 8)
Saída
O SMA adiciona o EWI SPRKSCL1111
ao código de saída para que você saiba que a função CreateDecimalType não é compatível com o Snowpark.
/*EWI: SPRKSCL1111 => CreateDecimalType is not supported*/
var result = createDecimalType(18, 8)
Correção recomendada
Ainda não há uma correção recomendada.
Mensagem: A opção Spark Session builder não é suportada.
Categoria: Erro de conversão.
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.SparkSession. Builder.config, que está definindo uma opção da Spark Session e não é suportada pelo Snowpark.
Cenário¶
Entrada
Veja a seguir um exemplo da função org.apache.spark.sql.SparkSession.Builder.config
usada para definir uma opção na Spark Session.
val spark = SparkSession.builder()
.master("local")
.appName("testApp")
.config("spark.sql.broadcastTimeout", "3600")
.getOrCreate()
Saída
O SMA adiciona o EWI SPRKSCL1104
ao código de saída para que você saiba que o método de configuração não é compatível com o Snowpark. Então, não é possível definir opções na Spark Session por meio da função config e isso pode afetar a migração da instrução da Spark Session.
val spark = Session.builder.configFile("connection.properties")
/*EWI: SPRKSCL1104 => SparkBuilder Option is not supported .config("spark.sql.broadcastTimeout", "3600")*/
.create()
Correção recomendada
Para criar a sessão, é necessário adicionar a configuração adequada do Snowflake Snowpark.
Neste exemplo, é usada uma variável configs.
val configs = Map (
"URL" -> "https://<myAccount>.snowflakecomputing.com:<port>",
"USER" -> <myUserName>,
"PASSWORD" -> <myPassword>,
"ROLE" -> <myRole>,
"WAREHOUSE" -> <myWarehouse>,
"DB" -> <myDatabase>,
"SCHEMA" -> <mySchema>
)
val session = Session.builder.configs(configs).create
Também é recomendado o uso de um configFile (profile.properties) com as informações de conexão:
## profile.properties file (a text file)
URL = https://<account_identifier>.snowflakecomputing.com
USER = <username>
PRIVATEKEY = <unencrypted_private_key_from_the_private_key_file>
ROLE = <role_name>
WAREHOUSE = <warehouse_name>
DB = <database_name>
SCHEMA = <schema_name>
E com o Session.builder.configFile
, a sessão pode ser criada:
val session = Session.builder.configFile("/path/to/properties/file").create
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1101¶
Esse código de problema está obsoleto desde o Spark Conversion Core 2.3.22
Mensagem: Broadcast não é suportado
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.functions.broadcast, que não é compatível com o Snowpark. Essa função não é suportada porque o Snowflake não suporta variáveis broadcast.
Cenário¶
Entrada
Abaixo está um exemplo da função org.apache.spark.sql.functions.broadcast
usada para criar um objeto de broadcast a ser usado em cada cluster do Spark:
var studentData = Seq(
("James", "Orozco", "Science"),
("Andrea", "Larson", "Bussiness"),
)
var collegeData = Seq(
("Arts", 1),
("Bussiness", 2),
("Science", 3)
)
val dfStudent = studentData.toDF("FirstName", "LastName", "CollegeName")
val dfCollege = collegeData.toDF("CollegeName", "CollegeCode")
dfStudent.join(
broadcast(dfCollege),
Seq("CollegeName")
)
Saída
O SMA adiciona o EWI SPRKSCL1101
ao código de saída para que você saiba que essa função não é suportada no Snowpark.
var studentData = Seq(
("James", "Orozco", "Science"),
("Andrea", "Larson", "Bussiness"),
)
var collegeData = Seq(
("Arts", 1),
("Bussiness", 2),
("Science", 3)
)
val dfStudent = studentData.toDF("FirstName", "LastName", "CollegeName")
val dfCollege = collegeData.toDF("CollegeName", "CollegeCode")
dfStudent.join(
/*EWI: SPRKSCL1101 => Broadcast is not supported*/
broadcast(dfCollege),
Seq("CollegeName")
)
Correção recomendada
Como o Snowflake gerencia o armazenamento e a carga de trabalho nos clusters, os objetos broadcast não são aplicáveis. Isso significa que o uso de broadcast pode não ser necessário, mas cada caso deve exigir uma análise mais detalhada.
A abordagem recomendada é substituir uma transmissão de dataframe do Spark por um dataframe regular do Snowpark ou usar um método de dataframe como Join.
Para a entrada proposta, a correção é adaptar a união para usar diretamente o dataframe collegeDF
sem o uso de transmissão para o dataframe.
var studentData = Seq(
("James", "Orozco", "Science"),
("Andrea", "Larson", "Bussiness"),
)
var collegeData = Seq(
("Arts", 1),
("Bussiness", 2),
("Science", 3)
)
val dfStudent = studentData.toDF("FirstName", "LastName", "CollegeName")
val dfCollege = collegeData.toDF("CollegeName", "CollegeCode")
dfStudent.join(
dfCollege,
Seq("CollegeName")
).show()
Recomendações adicionais¶
O guia de arquitetura do Snowflake fornece informações sobre o gerenciamento de armazenamento do Snowflake.
A referência do Dataframe do Snowpark pode ser útil na adaptação de um cenário de transmissão específico.
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1150¶
Mensagem: org.apache.spark.sql.functions.var_pop tem uma solução alternativa, consulte a documentação para obter mais informações
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.functions.var_pop, que tem uma solução alternativa.
Cenário¶
Entrada
Abaixo está um exemplo da função org.apache.spark.sql.functions.var_pop
, usada primeiro com um nome de coluna como argumento e depois com um objeto de coluna.
val df = Seq(
("A", 10.0),
("A", 20.0),
("A", 30.0),
("B", 40.0),
("B", 50.0),
("B", 60.0)
).toDF("group", "value")
val result1 = df.groupBy("group").agg(var_pop("value"))
val result2 = df.groupBy("group").agg(var_pop(col("value")))
Saída
O SMA adiciona o EWI SPRKSCL1150
ao código de saída para que você saiba que essa função não é totalmente compatível com o Snowpark, mas que há uma solução alternativa.
val df = Seq(
("A", 10.0),
("A", 20.0),
("A", 30.0),
("B", 40.0),
("B", 50.0),
("B", 60.0)
).toDF("group", "value")
/*EWI: SPRKSCL1150 => org.apache.spark.sql.functions.var_pop has a workaround, see documentation for more info*/
val result1 = df.groupBy("group").agg(var_pop("value"))
/*EWI: SPRKSCL1150 => org.apache.spark.sql.functions.var_pop has a workaround, see documentation for more info*/
val result2 = df.groupBy("group").agg(var_pop(col("value")))
Correção recomendada
O Snowpark tem uma função equivalente var_pop que recebe um objeto de coluna como argumento. Por esse motivo, a sobrecarga do Spark que recebe um objeto de coluna como argumento é diretamente suportada pelo Snowpark e não exige nenhuma alteração.
Para a sobrecarga que recebe um argumento de cadeia de caracteres, você pode converter a cadeia de caracteres em um objeto de coluna usando a função com.snowflake.snowpark.functions.col como solução alternativa.
val df = Seq(
("A", 10.0),
("A", 20.0),
("A", 30.0),
("B", 40.0),
("B", 50.0),
("B", 60.0)
).toDF("group", "value")
val result1 = df.groupBy("group").agg(var_pop(col("value")))
val result2 = df.groupBy("group").agg(var_pop(col("value")))
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
descrição: >- O parâmetro da função org.apache.spark.sql.DataFrameReader.option não está definido.
SPRKSCL1164¶
Nota
Este código de problema está obsoleto
Mensagem: O parâmetro não está definido para org.apache.spark.sql.DataFrameReader.option
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta que o parâmetro de org.apache.spark.sql.DataFrameReader.option não está definido.
Cenário¶
Entrada
Abaixo está um exemplo de parâmetro indefinido para a função org.apache.spark.sql.DataFrameReader.option
.
spark.read.option("header", True).json(path)
Saída
O SMA adiciona o EWI SPRKSCL1164
ao código de saída para que você saiba que o parâmetro fornecido para a função org.apache.spark.sql.DataFrameReader.option não está definido.
/*EWI: SPRKSCL1164 => The parameter header=True is not supported for org.apache.spark.sql.DataFrameReader.option*/
spark.read.option("header", True).json(path)
Correção recomendada
Verifique a documentação do Snowpark para a opção de formato de reader aqui, a fim de identificar as opções definidas.
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1135¶
Aviso
Esse código de problema está obsoleto desde o Spark Conversion Core 4.3.2
Mensagem: org.apache.spark.sql.functions.mean tem uma solução alternativa, consulte a documentação para obter mais informações
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.functions.mean, que tem uma solução alternativa.
Cenário¶
Entrada
Abaixo está um exemplo da função org.apache.spark.sql.functions.mean
, usada primeiro com um nome de coluna como argumento e depois com um objeto de coluna.
val df = Seq(1, 3, 10, 1, 3).toDF("value")
val result1 = df.select(mean("value"))
val result2 = df.select(mean(col("value")))
Saída
O SMA adiciona o EWI SPRKSCL1135
ao código de saída para que você saiba que essa função não é totalmente compatível com o Snowpark, mas que há uma solução alternativa.
val df = Seq(1, 3, 10, 1, 3).toDF("value")
/*EWI: SPRKSCL1135 => org.apache.spark.sql.functions.mean has a workaround, see documentation for more info*/
val result1 = df.select(mean("value"))
/*EWI: SPRKSCL1135 => org.apache.spark.sql.functions.mean has a workaround, see documentation for more info*/
val result2 = df.select(mean(col("value")))
Correção recomendada
O Snowpark tem uma função equivalente mean que recebe um objeto de coluna como argumento. Por esse motivo, a sobrecarga do Spark que recebe um objeto de coluna como argumento é diretamente suportada pelo Snowpark e não exige nenhuma alteração.
Para a sobrecarga que recebe um argumento de cadeia de caracteres, você pode converter a cadeia de caracteres em um objeto de coluna usando a função com.snowflake.snowpark.functions.col como solução alternativa.
val df = Seq(1, 3, 10, 1, 3).toDF("value")
val result1 = df.select(mean(col("value")))
val result2 = df.select(mean(col("value")))
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1115¶
Aviso
Esse código de problema está obsoleto desde o Spark Conversion Core Version 4.6.0
Mensagem: org.apache.spark.sql.functions.round tem uma solução alternativa, consulte a documentação para obter mais informações
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.functions.round, que tem uma solução alternativa.
Cenário¶
Entrada
Abaixo está um exemplo da função org.apache.spark.sql.functions.round
que gera esse EWI.
val df = Seq(3.9876, 5.673, 8.1234).toDF("value")
val result1 = df.withColumn("rounded_value", round(col("value")))
val result2 = df.withColumn("rounded_value", round(col("value"), 2))
Saída
O SMA adiciona o EWI SPRKSCL1115
ao código de saída para que você saiba que essa função não é totalmente compatível com o Snowpark, mas que há uma solução alternativa.
val df = Seq(3.9876, 5.673, 8.1234).toDF("value")
/*EWI: SPRKSCL1115 => org.apache.spark.sql.functions.round has a workaround, see documentation for more info*/
val result1 = df.withColumn("rounded_value", round(col("value")))
/*EWI: SPRKSCL1115 => org.apache.spark.sql.functions.round has a workaround, see documentation for more info*/
val result2 = df.withColumn("rounded_value", round(col("value"), 2))
Correção recomendada
O Snowpark tem uma função equivalente round que recebe um objeto de coluna como argumento. Por esse motivo, a sobrecarga do Spark que recebe um objeto de coluna como argumento é diretamente suportada pelo Snowpark e não exige nenhuma alteração.
Para a sobrecarga que recebe um objeto de coluna e uma escala, você pode converter a escala em um objeto de coluna usando a função com.snowflake.snowpark.functions.lit como solução alternativa.
val df = Seq(3.9876, 5.673, 8.1234).toDF("value")
val result1 = df.withColumn("rounded_value", round(col("value")))
val result2 = df.withColumn("rounded_value", round(col("value"), lit(2)))
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1144¶
Mensagem: A tabela de símbolos não pôde ser carregada
Categoria: Erro de análise
Descrição¶
Esse problema aparece quando há um erro crítico no processo de execução do SMA. Como a tabela de símbolos não pode ser carregada, o SMA não pode iniciar o processo de avaliação ou conversão.
Recomendações adicionais¶
É improvável que isso seja um erro no próprio código-fonte, mas sim um erro na forma como o SMA processa o código-fonte. A melhor solução seria publicar um problema no SMA.
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1170¶
Nota
Este código de problema está obsoleto
Mensagem: a chave do membro sparkConfig não é compatível com a chave específica da plataforma.
Categoria: Erro de conversão
Descrição¶
Se você estiver usando uma versão mais antiga, atualize para a mais recente.
Recomendações adicionais¶
Atualize seu aplicativo para a versão mais recente.
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1121¶
Mensagem: org.apache.spark.sql.functions.atan tem uma solução alternativa, consulte a documentação para obter mais informações
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.functions.atan, que tem uma solução alternativa.
Cenário¶
Entrada
Abaixo está um exemplo da função org.apache.spark.sql.functions.atan
, usada primeiro com um nome de coluna como argumento e depois com um objeto de coluna.
val df = Seq(1.0, 0.5, -1.0).toDF("value")
val result1 = df.withColumn("atan_value", atan("value"))
val result2 = df.withColumn("atan_value", atan(col("value")))
Saída
O SMA adiciona o EWI SPRKSCL1121
ao código de saída para que você saiba que essa função não é totalmente compatível com o Snowpark, mas que há uma solução alternativa.
val df = Seq(1.0, 0.5, -1.0).toDF("value")
/*EWI: SPRKSCL1121 => org.apache.spark.sql.functions.atan has a workaround, see documentation for more info*/
val result1 = df.withColumn("atan_value", atan("value"))
/*EWI: SPRKSCL1121 => org.apache.spark.sql.functions.atan has a workaround, see documentation for more info*/
val result2 = df.withColumn("atan_value", atan(col("value")))
Correção recomendada
O Snowpark tem uma função equivalente atan que recebe um objeto de coluna como argumento. Por esse motivo, a sobrecarga do Spark que recebe um objeto de coluna como argumento é diretamente suportada pelo Snowpark e não exige nenhuma alteração.
Para a sobrecarga que recebe um argumento de cadeia de caracteres, você pode converter a cadeia de caracteres em um objeto de coluna usando a função com.snowflake.snowpark.functions.col como solução alternativa.
val df = Seq(1.0, 0.5, -1.0).toDF("value")
val result1 = df.withColumn("atan_value", atan(col("value")))
val result2 = df.withColumn("atan_value", atan(col("value")))
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1131¶
Mensagem: org.apache.spark.sql.functions.grouping tem uma solução alternativa, consulte a documentação para obter mais informações
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.functions.grouping, que tem uma solução alternativa.
Cenário¶
Entrada
Abaixo está um exemplo da função org.apache.spark.sql.functions.grouping
, usada primeiro com um nome de coluna como argumento e depois com um objeto de coluna.
val df = Seq(("Alice", 2), ("Bob", 5)).toDF("name", "age")
val result1 = df.cube("name").agg(grouping("name"), sum("age"))
val result2 = df.cube("name").agg(grouping(col("name")), sum("age"))
Saída
O SMA adiciona o EWI SPRKSCL1131
ao código de saída para que você saiba que essa função não é totalmente compatível com o Snowpark, mas que há uma solução alternativa.
val df = Seq(("Alice", 2), ("Bob", 5)).toDF("name", "age")
/*EWI: SPRKSCL1131 => org.apache.spark.sql.functions.grouping has a workaround, see documentation for more info*/
val result1 = df.cube("name").agg(grouping("name"), sum("age"))
/*EWI: SPRKSCL1131 => org.apache.spark.sql.functions.grouping has a workaround, see documentation for more info*/
val result2 = df.cube("name").agg(grouping(col("name")), sum("age"))
Correção recomendada
O Snowpark tem uma função equivalente grouping que recebe um objeto de coluna como argumento. Por esse motivo, a sobrecarga do Spark que recebe um objeto de coluna como argumento é diretamente suportada pelo Snowpark e não exige nenhuma alteração.
Para a sobrecarga que recebe um argumento de cadeia de caracteres, você pode converter a cadeia de caracteres em um objeto de coluna usando a função com.snowflake.snowpark.functions.col como solução alternativa.
val df = Seq(("Alice", 2), ("Bob", 5)).toDF("name", "age")
val result1 = df.cube("name").agg(grouping(col("name")), sum("age"))
val result2 = df.cube("name").agg(grouping(col("name")), sum("age"))
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1160¶
Nota
Esse código de problema está obsoleto desde o Spark Conversion Core 4.1.0
Mensagem: org.apache.spark.sql.functions.sum tem uma solução alternativa, consulte a documentação para obter mais informações
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.functions.sum, que tem uma solução alternativa.
Cenário¶
Entrada
Veja a seguir um exemplo da função org.apache.spark.sql.functions.sum
que gera esse EWI. Neste exemplo, a função sum
é usada para calcular a soma da coluna selecionada.
val df = Seq("1", "2", "3", "4", "5").toDF("elements")
val result1 = sum(col("elements"))
val result2 = sum("elements")
Saída
O SMA adiciona o EWI SPRKSCL1160
ao código de saída para que você saiba que essa função não é totalmente compatível com o Snowpark, mas que há uma solução alternativa.
val df = Seq("1", "2", "3", "4", "5").toDF("elements")
/*EWI: SPRKSCL1160 => org.apache.spark.sql.functions.sum has a workaround, see documentation for more info*/
val result1 = sum(col("elements"))
/*EWI: SPRKSCL1160 => org.apache.spark.sql.functions.sum has a workaround, see documentation for more info*/
val result2 = sum("elements")
Correção recomendada
O Snowpark tem uma função equivalente sum que recebe um objeto de coluna como argumento. Por esse motivo, a sobrecarga do Spark que recebe um objeto de coluna como argumento é diretamente suportada pelo Snowpark e não exige nenhuma alteração.
Para a sobrecarga que recebe um argumento de cadeia de caracteres, você pode converter a cadeia de caracteres em um objeto de coluna usando a função com.snowflake.snowpark.functions.col como solução alternativa.
val df = Seq("1", "2", "3", "4", "5").toDF("elements")
val result1 = sum(col("elements"))
val result2 = sum(col("elements"))
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1154¶
Mensagem: org.apache.spark.sql.functions.ceil tem uma solução alternativa, consulte a documentação para obter mais informações
Categoria: Aviso
Descrição¶
Esse problema aparece quando o SMA detecta o uso da função org.apache.spark.sql.functions.ceil, que tem uma solução alternativa.
Cenário¶
Entrada
Abaixo está um exemplo da função org.apache.spark.sql.functions.ceil
, usada primeiro com um nome de coluna como argumento, depois com um objeto de coluna e, por fim, com um objeto de coluna e uma escala.
val df = Seq(2.33, 3.88, 4.11, 5.99).toDF("value")
val result1 = df.withColumn("ceil", ceil("value"))
val result2 = df.withColumn("ceil", ceil(col("value")))
val result3 = df.withColumn("ceil", ceil(col("value"), lit(1)))
Saída
O SMA adiciona o EWI SPRKSCL1154
ao código de saída para que você saiba que essa função não é totalmente compatível com o Snowpark, mas que há uma solução alternativa.
val df = Seq(2.33, 3.88, 4.11, 5.99).toDF("value")
/*EWI: SPRKSCL1154 => org.apache.spark.sql.functions.ceil has a workaround, see documentation for more info*/
val result1 = df.withColumn("ceil", ceil("value"))
/*EWI: SPRKSCL1154 => org.apache.spark.sql.functions.ceil has a workaround, see documentation for more info*/
val result2 = df.withColumn("ceil", ceil(col("value")))
/*EWI: SPRKSCL1154 => org.apache.spark.sql.functions.ceil has a workaround, see documentation for more info*/
val result3 = df.withColumn("ceil", ceil(col("value"), lit(1)))
Correção recomendada
O Snowpark tem uma função equivalente ceil que recebe um objeto de coluna como argumento. Por esse motivo, a sobrecarga do Spark que recebe um objeto de coluna como argumento é diretamente suportada pelo Snowpark e não exige nenhuma alteração.
Para a sobrecarga que recebe um argumento de cadeia de caracteres, você pode converter a cadeia de caracteres em um objeto de coluna usando a função com.snowflake.snowpark.functions.col como solução alternativa.
Para a sobrecarga que recebe um objeto de coluna e uma escala, você pode usar a função callBuiltin para invocar a função interna do Snowflake CEIL. Para usá-lo, você deve passar a cadeia de caracteres «ceil» como o primeiro argumento, a coluna como o segundo argumento e a escala como o terceiro argumento.
val df = Seq(2.33, 3.88, 4.11, 5.99).toDF("value")
val result1 = df.withColumn("ceil", ceil(col("value")))
val result2 = df.withColumn("ceil", ceil(col("value")))
val result3 = df.withColumn("ceil", callBuiltin("ceil", col("value"), lit(1)))
Recomendações adicionais¶
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.
SPRKSCL1105¶
Este código de problema está obsoleto
Mensagem: O valor do formato do writer não é suportado.
Categoria: Erro de conversão
Descrição¶
Esse problema aparece quando o comando org.apache.spark.sql.DataFrameWriter.format tem um argumento que não é suportado pelo Snowpark.
Cenários¶
Há alguns cenários, dependendo do tipo de formato que você está tentando salvar. Pode ser um formato suportado
ou não suportado
.
Cenário 1¶
Entrada
A ferramenta analisa o tipo de formato que está tentando salvar; os formatos compatíveis são:
csv
json
orc
parquet
texto
dfWrite.write.format("csv").save(path)
Saída
A ferramenta transforma o método format
em uma chamada de método csv
quando a função save tem um parâmetro.
dfWrite.write.csv(path)
Correção recomendada
Nesse caso, a ferramenta não mostra o EWI, o que significa que não há necessidade de correção.
Cenário 2¶
Entrada
O exemplo abaixo mostra como a ferramenta transforma o método format
ao passar um valor net.snowflake.spark.snowflake
.
dfWrite.write.format("net.snowflake.spark.snowflake").save(path)
Saída
A ferramenta mostra o EWI SPRKSCL1105
indicando que o valor net.snowflake.spark.snowflake
não é suportado.
/*EWI: SPRKSCL1105 => Writer format value is not supported .format("net.snowflake.spark.snowflake")*/
dfWrite.write.format("net.snowflake.spark.snowflake").save(path)
Correção recomendada
Para os cenários não suportados
não há nenhuma correção específica, pois depende dos arquivos que estão tentando ser lidos.
Cenário 3¶
Entrada
O exemplo abaixo mostra como a ferramenta transforma o método format
ao passar um csv
, mas usando uma variável.
val myFormat = "csv"
dfWrite.write.format(myFormat).save(path)
Saída
Como a ferramenta não consegue determinar o valor da variável em tempo de execução, mostra o EWI SPRKSCL1163
indicando que o valor não é suportado.
val myFormat = "csv"
/*EWI: SPRKSCL1163 => format_type is not a literal and can't be evaluated*/
dfWrite.write.format(myFormat).load(path)
Correção recomendada
Como solução alternativa, você pode verificar o valor da variável e adicioná-lo como uma cadeia de caracteres à chamada format
.
Recomendações adicionais¶
O local do Snowpark só aceita locais de nuvem usando um estágio de snowflake.
A documentação dos métodos suportados pelo Snowpark pode ser encontrada na documentação
Para obter mais suporte, envie um e-mail para sma-support@snowflake.com ou publique um problema no SMA.