Snowpark Migration Accelerator: Problemcodes für Spark - Scala

SPRKSCL1126

Meldung: org.apache.spark.sql.functions.covar_pop verfügt über eine Problemumgehung, siehe Dokumentation für weitere Informationen

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der Funktion org.apache.spark.sql.functions.covar_pop feststellt, für die es eine Problemumgehung gibt.

Eingabe

Nachfolgend sehen Sie ein Beispiel für die org.apache.spark.sql.functions.covar_pop-Funktion, die zunächst mit Spaltennamen als Argumenten und dann mit Spaltenobjekten verwendet wird.

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"))
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1126 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird, aber es eine Problemumgehung gibt.

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"))
Copy

Empfohlene Korrektur

Snowpark verfügt über eine äquivalente covar_pop-Funktion, die zwei Spaltenobjekte als Argumente erhält. Aus diesem Grund wird die Spark-Überladung, die zwei Spaltenobjekte als Argumente erhält, direkt von Snowpark unterstützt und erfordert keine Änderungen.

Für die Überladung, die zwei Zeichenfolgenargumente empfängt, können Sie die Zeichenfolgen in Spaltenobjekte umwandeln, indem Sie die Funktion com.snowflake.snowpark.functions.col als Problemumgehung verwenden.

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"))
Copy

Zusätzliche Empfehlungen

SPRKSCL1112

Meldung: _ spark element _ wird nicht unterstützt

Kategorie: Konvertierungsfehler

Beschreibung

Dieses Problem tritt auf, wenn SMA die Verwendung eines Spark-Elements erkennt, das von Snowpark nicht unterstützt wird und für das es keinen eigenen Fehlercode gibt. Dies ist ein allgemeiner Fehlercode, der von SMA für jedes nicht unterstützte Spark-Element verwendet wird.

Szenario

Eingabe

Nachfolgend finden Sie ein Beispiel für ein Spark-Element, das von Snowpark nicht unterstützt wird und daher diese EWI erzeugt.

val df = session.range(10)
val result = df.isLocal
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1112 hinzu, um Sie darauf hinzuweisen, dass dieses Element von Snowpark nicht unterstützt wird.

val df = session.range(10)
/*EWI: SPRKSCL1112 => org.apache.spark.sql.Dataset.isLocal is not supported*/
val result = df.isLocal
Copy

Empfohlene Korrektur

Da es sich um einen allgemeinen Fehlercode handelt, der für eine Reihe von nicht unterstützten Funktionen gilt, gibt es keine einzelne und spezifische Korrektur. Die geeignete Aktion hängt von dem jeweiligen Element ab, das verwendet wird.

Bitte beachten Sie, dass, auch wenn das Element nicht unterstützt wird, dies nicht unbedingt bedeutet, dass keine Lösung oder Problemumgehung gefunden werden kann. Es bedeutet nur, dass die SMA selbst keine Lösung finden kann.

Zusätzliche Empfehlungen

SPRKSCL1143

Meldung: Beim Laden der Symboltabelle ist ein Fehler aufgetreten

Kategorie: Konvertierungsfehler

Beschreibung

Dieses Problem tritt auf, wenn ein Fehler beim Laden der Symbole in der SMA-Symboltabelle auftritt. Die Symboltabelle ist Teil der zugrunde liegenden Architektur von SMA und ermöglicht komplexere Konvertierungen.

Zusätzliche Empfehlungen

  • Es ist unwahrscheinlich, dass es sich um einen Fehler im Quellcode selbst handelt, sondern eher um einen Fehler bei der Verarbeitung des Quellcodes durch SMA. Die beste Lösung wäre, ein Problem in der SMA zu melden.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an sma-support@snowflake.com senden oder ein Problem im SMA melden.

SPRKSCL1153

Warnung

Dieser Problemcode gilt als veraltet bereits seit [Spark Conversion Core Version 4.3.2](../../../general/release-notes/README. md#spark-conversion-core-version-432)

Meldung: org.apache.spark.sql.functions.max verfügt über eine Problemumgehung, siehe Dokumentation für weitere Informationen

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.functions.max-Funktion feststellt, für die es eine Problemumgehung gibt.

Szenario

Eingabe

Nachfolgend sehen Sie ein Beispiel für die org.apache.spark.sql.functions.max-Funktion, die zunächst mit einem Spaltennamen als Argument und anschließend mit einem Spaltenobjekt verwendet wird.

val df = Seq(10, 12, 20, 15, 18).toDF("value")
val result1 = df.select(max("value"))
val result2 = df.select(max(col("value")))
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1153 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird, aber es eine Problemumgehung gibt.

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")))
Copy

Empfohlene Korrektur

Snowpark verfügt über eine äquivalente max-Funktion, die ein Spaltenobjekt als Argument erhält. Aus diesem Grund wird die Spark-Überladung, die ein Spaltenobjekt als Argument erhält, direkt von Snowpark unterstützt und erfordert keine Änderungen.

Für die Überladung, die ein Zeichenfolgenargument empfängt, können Sie die Zeichenfolge in ein Spaltenobjekt umwandeln, indem Sie die com.snowflake.snowpark.functions.col-Funktion als Problemumgehung verwenden.

val df = Seq(10, 12, 20, 15, 18).toDF("value")
val result1 = df.select(max(col("value")))
val result2 = df.select(max(col("value")))
Copy

Zusätzliche Empfehlungen

SPRKSCL1102

Dieser Problemcode gilt als veraltet bereits seit Spark Conversion Core 2.3.22

Meldung: Explode wird nicht unterstützt

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.functions.explode-Funktion feststellt, die von Snowpark nicht unterstützt wird.

Szenario

Eingabe

Nachfolgend finden Sie ein Beispiel für die org.apache.spark.sql.functions.explode-Funktion, mit der Sie die konsolidierten Informationen der Array-Felder des Datensatzes erhalten.

    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")))
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1102 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht unterstützt wird.

    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")))
Copy

Empfohlene Korrektur

Da Explode von Snowpark nicht unterstützt wird, kann die flatten-Funktion als Ersatz verwendet werden.

Die folgende Korrektur vereinfacht den dfExplode-Datenframe und führt dann die Abfrage durch, um das Ergebnis in Spark zu replizieren.

    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"))
Copy

Zusätzliche Empfehlungen

SPRKSCL1136

Warnung

Dieser Problemcode ist veraltet seit [Spark Conversion Core 4.3.2](../../../general/release-notes/README. md#spark-conversion-core-version-432)

Meldung: org.apache.spark.sql.functions.min verfügt über eine Problemumgehung, siehe Dokumentation für weitere Informationen

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.functions.min-Funktion feststellt, für die es eine Problemumgehung gibt.

Szenario

Eingabe

Nachfolgend sehen Sie ein Beispiel für die org.apache.spark.sql.functions.min-Funktion, die zunächst mit einem Spaltennamen als Argument und anschließend mit einem Spaltenobjekt verwendet wird.

val df = Seq(1, 3, 10, 1, 3).toDF("value")
val result1 = df.select(min("value"))
val result2 = df.select(min(col("value")))
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1136 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird, aber es eine Problemumgehung gibt.

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")))
Copy

Empfohlene Korrektur

Snowpark verfügt über eine äquivalente min-Funktion, die ein Spaltenobjekt als Argument erhält. Aus diesem Grund wird die Spark-Überladung, die ein Spaltenobjekt als Argument erhält, direkt von Snowpark unterstützt und erfordert keine Änderungen.

Für die Überladung mit einem Zeichenfolgeargument können Sie die Zeichenfolge in ein Spaltenobjekt umwandeln, indem Sie die com.snowflake.snowpark.functions.col-Funktion als Problemumgehung verwenden.

val df = Seq(1, 3, 10, 1, 3).toDF("value")
val result1 = df.select(min(col("value")))
val result2 = df.select(min(col("value")))
Copy

Zusätzliche Empfehlungen

SPRKSCL1167

Meldung: Projektdatei im Eingabeordner nicht gefunden

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA feststellt, dass der Eingabeordner keine Projektkonfigurationsdatei enthält. Die von SMA unterstützten Projektkonfigurationsdateien sind:

  • build.sbt

  • build.gradle

  • pom.xml

Zusätzliche Empfehlungen

  • Fügen Sie eine Konfigurationsprojektdatei in den Eingabeordner ein.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an sma-support@snowflake.com senden oder ein Problem im SMA melden.

SPRKSCL1147

Meldung: org.apache.spark.sql.functions.tanh verfügt über eine Problemumgehung, siehe Dokumentation für weitere Informationen

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.functions.tanh-Funktion feststellt, für die es eine Problemumgehung gibt.

Szenario

Eingabe

Nachfolgend sehen Sie ein Beispiel für die org.apache.spark.sql.functions.tanh-Funktion, die zunächst mit einem Spaltennamen als Argument und dann mit einem Spaltenobjekt verwendet wird.

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")))
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1147 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird, aber es eine Problemumgehung gibt.

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")))
Copy

Empfohlene Korrektur

Snowpark verfügt über eine äquivalente tanh-Funktion, die ein Spaltenobjekt als Argument erhält. Aus diesem Grund wird die Spark-Überladung, die ein Spaltenobjekt als Argument erhält, direkt von Snowpark unterstützt und erfordert keine Änderungen.

Für die Überladung, die ein Zeichenfolgenargument empfängt, können Sie die Zeichenfolge in ein Spaltenobjekt umwandeln, indem Sie die com.snowflake.snowpark.functions.col-Funktion als Problemumgehung verwenden.

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")))
Copy

Zusätzliche Empfehlungen

SPRKSCL1116

Warnung

Dieser Problemcode gilt als veraltet bereits seit Spark Conversion Core Version 2.40.1

Meldung: org.apache.spark.sql.functions.split verfügt über eine Problemumgehung, siehe Dokumentation für weitere Informationen

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der Funktion org.apache.spark.sql.functions.split feststellt, für die es eine Problemumgehung gibt.

Szenario

Eingabe

Nachfolgend finden Sie ein Beispiel für die org.apache.spark.sql.functions.split-Funktion, die diese EWI erzeugt.

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))
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1116 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird, aber es eine Problemumgehung gibt.

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))
Copy

Empfohlene Korrektur

Bei der Spark-Überladung, die zwei Argumente empfängt, können Sie das zweite Argument in ein Spaltenobjekt umwandeln, indem Sie die com.snowflake.snowpark.functions.lit-Funktion als Problemumgehung verwenden.

Die Überladung, die drei Argumente empfängt, wird von Snowpark noch nicht unterstützt und es gibt keine Problemumgehung.

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
Copy

Zusätzliche Empfehlungen

SPRKSCL1122

Meldung: org.apache.spark.sql.functions.corr verfügt über eine Problemumgehung, siehe Dokumentation für weitere Informationen

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.functions.corr-Funktion feststellt, für die es eine Problemumgehung gibt.

Szenario

Eingabe

Nachfolgend sehen Sie ein Beispiel für die org.apache.spark.sql.functions.corr-Funktion, die zunächst mit Spaltennamen als Argumenten und anschließend mit Spaltenobjekten verwendet wird.

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")))
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1122 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird, aber es eine Problemumgehung gibt.

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")))
Copy

Empfohlene Korrektur

Snowpark verfügt über eine äquivalente corr-Funktion, die zwei Spaltenobjekte als Argumente erhält. Aus diesem Grund wird die Spark-Überladung, die Spaltenobjekte als Argumente erhält, direkt von Snowpark unterstützt und erfordert keine Änderungen.

Für die Überladung, die zwei Zeichenfolgenargumente empfängt, können Sie die Zeichenfolgen in Spaltenobjekte umwandeln, indem Sie die Funktion com.snowflake.snowpark.functions.col als Problemumgehung verwenden.

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")))
Copy

Zusätzliche Empfehlungen

SPRKSCL1173

Meldung: SQL eingebetteter Code kann nicht verarbeitet werden.

Kategorie: Warnung.

Beschreibung

Dieses Problem tritt auf, wenn SMA einen SQL-eingebetteten Code erkennt, der nicht verarbeitet werden kann. Dann kann der SQL-eingebettete Code nicht in Snowflake konvertiert werden.

Szenario

Eingabe

Nachfolgend finden Sie ein Beispiel für einen SQL-eingebetteten Code, der nicht verarbeitet werden kann.

spark.sql("CREATE VIEW IF EXISTS My View" + "AS Select * From my Table WHERE date < current_date()")
Copy

Ausgabe

Der SMA fügt dem Ausgabecode das EWI SPRKSCL1173 hinzu, um Sie darauf hinzuweisen, dass der SQL-eingebettete Code nicht verarbeitet werden kann.

/*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()")
Copy

Empfohlene Korrektur

Stellen Sie sicher, dass der SQL-eingebettete Code eine Zeichenfolge ohne Interpolationen, Variablen oder Zeichenfolge-Verkettungen ist.

Zusätzliche Empfehlungen

  • Weitere Informationen über SQL-eingebettet finden Sie hier.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an sma-support@snowflake.com senden oder ein Problem im SMA melden.

SPRKSCL1163

Meldung: Das Element ist kein Literal und kann nicht ausgewertet werden.

Kategorie: Konvertierungsfehler.

Beschreibung

Dieses Problem tritt auf, wenn das aktuelle Verarbeitungselement kein Literal ist, dann kann es nicht von SMA ausgewertet werden.

Szenario

Eingabe

Nachfolgend ein Beispiel, wenn das zu verarbeitende Element kein Literal ist und nicht von SMA ausgewertet werden kann.

val format_type = "csv"
spark.read.format(format_type).load(path)
Copy

Ausgabe

Der SMA fügt dem Ausgabecode das EWI SPRKSCL1163 hinzu, um Sie darauf hinzuweisen, dass der format_type-Parameter kein Literal ist und von SMA nicht ausgewertet werden kann.

/*EWI: SPRKSCL1163 => format_type is not a literal and can't be evaluated*/
val format_type = "csv"
spark.read.format(format_type).load(path)
Copy

Empfohlene Korrektur

  • Vergewissern Sie sich, dass der Wert der Variablen ein gültiger Wert ist, um unerwartete Verhaltensweisen zu vermeiden.

Zusätzliche Empfehlungen

SPRKSCL1132

Meldung: org.apache.spark.sql.functions.grouping_id verfügt über eine Problemumgehung, siehe Dokumentation für weitere Informationen

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.functions.grouping_id-Funktion feststellt, für die es eine Problemumgehung gibt.

Szenario

Eingabe

Nachfolgend sehen Sie ein Beispiel für die org.apache.spark.sql.functions.grouping_id-Funktion, die zunächst mit mehreren Spaltennamen als Argumente und dann mit Spaltenobjekten verwendet wird.

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")))
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1132 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird, aber es eine Problemumgehung gibt.

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")))
Copy

Empfohlene Korrektur

Snowpark verfügt über eine äquivalente grouping_id-Funktion, die mehrere Spaltenobjekte als Argumente erhält. Aus diesem Grund wird die Spark-Überladung, die mehrere Spaltenobjekte als Argumente erhält, direkt von Snowpark unterstützt und erfordert keine Änderungen.

Für die Überladung, die mehrere Zeichenfolgeargumente empfängt, können Sie die Zeichenfolgen in Spaltenobjekte umwandeln, indem Sie die com.snowflake.snowpark.functions.col-Funktion als Problemumgehung verwenden.

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")))
Copy

Zusätzliche Empfehlungen

SPRKSCL1106

Warnung

Dieser Problemcode ist jetzt veraltet

Meldung: Die Writer-Option wird nicht unterstützt.

Kategorie: Konvertierungsfehler.

Beschreibung

Dieses Problem tritt auf, wenn das Tool in der Writer-Anweisung die Verwendung einer von Snowpark nicht unterstützten Option feststellt.

Szenario

Eingabe

Nachfolgend sehen Sie ein Beispiel für die org.apache.spark.sql.DataFrameWriter.option, mit der Sie Optionen zu einer Writer-Anweisung hinzufügen können.

df.write.format("net.snowflake.spark.snowflake").option("dbtable", tablename)
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1106 hinzu, um Sie darauf hinzuweisen, dass die Optionsmethode von Snowpark nicht unterstützt wird.

df.write.saveAsTable(tablename)
/*EWI: SPRKSCL1106 => Writer option is not supported .option("dbtable", tablename)*/
Copy

Empfohlene Korrektur

Es gibt keine empfohlene Korrektur für dieses Szenario

Zusätzliche Empfehlungen

SPRKSCL1157

Meldung: org.apache.spark.sql.functions.kurtosis verfügt über eine Problemumgehung, siehe Dokumentation für weitere Informationen

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.functions.kurtosis-Funktion feststellt, für die es eine Problemumgehung gibt.

Szenario

Eingabe

Nachfolgend sehen Sie ein Beispiel für die org.apache.spark.sql.functions.kurtosis-Funktion, die diese EWI erzeugt. In diesem Beispiel wird die kurtosis-Funktion verwendet, um die Kurtosis (Wölbung) der ausgewählten Spalte zu berechnen.

val df = Seq("1", "2", "3").toDF("elements")
val result1 = kurtosis(col("elements"))
val result2 = kurtosis("elements")
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1157 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird, aber es eine Problemumgehung gibt.

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")
Copy

Empfohlene Korrektur

Snowpark verfügt über eine äquivalente Funktion kurtosis-Funktion, die ein Spaltenobjekt als Argument erhält. Aus diesem Grund wird die Spark-Überladung, die ein Spaltenobjekt als Argument erhält, direkt von Snowpark unterstützt und erfordert keine Änderungen.

Für die Überladung, die ein Zeichenfolgenargument empfängt, können Sie die Zeichenfolge in ein Spaltenobjekt umwandeln, indem Sie die com.snowflake.snowpark.functions.col-Funktion als Problemumgehung verwenden.

val df = Seq("1", "2", "3").toDF("elements")
val result1 = kurtosis(col("elements"))
val result2 = kurtosis(col("elements"))
Copy

Zusätzliche Empfehlungen

SPRKSCL1146

Meldung: org.apache.spark.sql.functions.tan verfügt über eine Problemumgehung, siehe Dokumentation für weitere Informationen

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.functions.tan-Funktion feststellt, für die es eine Problemumgehung gibt.

Szenario

Eingabe

Nachfolgend sehen Sie ein Beispiel für die org.apache.spark.sql.functions.tan-Funktion, die zunächst mit einem Spaltennamen als Argument und anschließend mit einem Spaltenobjekt verwendet wird.

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")))
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1146 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird, aber es eine Problemumgehung gibt.

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")))
Copy

Empfohlene Korrektur

Snowpark verfügt über eine äquivalente tan-Funktion, die ein Spaltenobjekt als Argument erhält. Aus diesem Grund wird die Spark-Überladung, die ein Spaltenobjekt als Argument erhält, direkt von Snowpark unterstützt und erfordert keine Änderungen.

Für die Überladung, die ein Zeichenfolgenargument empfängt, können Sie die Zeichenfolge in ein Spaltenobjekt umwandeln, indem Sie die com.snowflake.snowpark.functions.col-Funktion als Problemumgehung verwenden.

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")))
Copy

Zusätzliche Empfehlungen

SPRKSCL1117

Warnung

Dieser Problemcode ist veraltet seit Spark Conversion Core 2.40.1

Meldung: org.apache.spark.sql.functions.translate verfügt über eine Problemumgehung, siehe Dokumentation für weitere Informationen

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.functions.translate-Funktion feststellt, für die es eine Problemumgehung gibt.

Szenario

Eingabe

Nachfolgend finden Sie ein Beispiel für die org.apache.spark.sql.functions.translate-Funktion, die diese EWI erzeugt. In diesem Beispiel wird die translate-Funktion verwendet, um die Zeichen ‚a‘, ‚e‘ und ‚o‘ in jedem Wort durch ‚1‘, ‚2‘ bzw. ‚3‘ zu ersetzen.

val df = Seq("hello", "world", "scala").toDF("word")
val result = df.withColumn("translated_word", translate(col("word"), "aeo", "123"))
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1117 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird, aber es eine Problemumgehung gibt.

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"))
Copy

Empfohlene Korrektur

Als Problemumgehung können Sie das zweite und dritte Argument mit der com.snowflake.snowpark.functions.lit-Funktion in ein Spaltenobjekt umwandeln.

val df = Seq("hello", "world", "scala").toDF("word")
val result = df.withColumn("translated_word", translate(col("word"), lit("aeo"), lit("123")))
Copy

Zusätzliche Empfehlungen

SPRKSCL1123

Meldung: org.apache.spark.sql.functions.cos verfügt über eine Problemumgehung, siehe Dokumentation für weitere Informationen

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.functions.cos-Funktion feststellt, für die es eine Problemumgehung gibt.

Szenario

Eingabe

Nachfolgend sehen Sie ein Beispiel für die org.apache.spark.sql.functions.cos-Funktion, die zunächst mit einem Spaltennamen als Argument und anschließend mit einem Spaltenobjekt verwendet wird.

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")))
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1123 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird, aber es eine Problemumgehung gibt.

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")))
Copy

Empfohlene Korrektur

Snowpark verfügt über eine äquivalente cos-Funktion, die ein Spaltenobjekt als Argument erhält. Aus diesem Grund wird die Spark-Überladung, die ein Spaltenobjekt als Argument erhält, direkt von Snowpark unterstützt und erfordert keine Änderungen.

Für die Überladung, die ein Zeichenfolgenargument empfängt, können Sie die Zeichenfolge in ein Spaltenobjekt umwandeln, indem Sie die com.snowflake.snowpark.functions.col-Funktion als Problemumgehung verwenden.

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")))
Copy

Zusätzliche Empfehlungen

SPRKSCL1172

Meldung: Snowpark unterstützt nicht StructFiled mit Metadaten-Parameter.

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA feststellt, dass org.apache.spark.sql.types.StructField.apply mit org.apache.spark.sql.types.Metadata als Parameter. Das liegt daran, dass Snowpark den Metadatenparameter nicht unterstützt.

Szenario

Eingabe

Nachfolgend finden Sie ein Beispiel für die org.apache.spark.sql.types.StructField.apply-Funktion, die diese EWI erzeugt. In diesem Beispiel wird die apply-Funktion verwendet, um eine Instanz von StructField zu erzeugen.

val result = StructField("f1", StringType(), True, metadata)
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1172 hinzu, um Sie darauf hinzuweisen, dass der Metadatenparameter von Snowflake nicht unterstützt wird.

/*EWI: SPRKSCL1172 => Snowpark does not support StructFiled with metadata parameter.*/
val result = StructField("f1", StringType(), True, metadata)
Copy

Empfohlene Korrektur

Snowpark hat eine äquivalente com.snowflake.snowpark.types.StructField. apply-Funktion, die drei Parameter erhält. Als Problemumgehung können Sie dann versuchen, das Metadatenargument zu entfernen.

val result = StructField("f1", StringType(), True, metadata)
Copy

Zusätzliche Empfehlungen

SPRKSCL1162

Bemerkung

Dieser Problemcode ist jetzt veraltet

Meldung: Beim Extrahieren der dbc-Dateien ist ein Fehler aufgetreten.

Kategorie: Warnung.

Beschreibung

Dieses Problem tritt auf, wenn eine dbc-Datei nicht extrahiert werden kann. Diese Warnung könnte durch einen oder mehrere der folgenden Gründe verursacht werden: Zu schwer, unzugänglich, schreibgeschützt, usw.

Zusätzliche Empfehlungen

  • Als Problemumgehung können Sie die Größe der Datei überprüfen, wenn sie zu groß ist, um verarbeitet zu werden. Analysieren Sie auch, ob das Tool darauf zugreifen kann, um Zugriffsprobleme zu vermeiden.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an sma-support@snowflake.com senden oder ein Problem im SMA melden.

SPRKSCL1133

Meldung: org.apache.spark.sql.functions.least verfügt über eine Problemumgehung, siehe Dokumentation für weitere Informationen

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.functions.least-Funktion feststellt, für die es eine Problemumgehung gibt.

Szenario

Eingabe

Nachfolgend sehen Sie ein Beispiel für die org.apache.spark.sql.functions.least-Funktion, die zunächst mit mehreren Spaltennamen als Argumente und dann mit Spaltenobjekten verwendet wird.

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")))
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1133 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird, aber es eine Problemumgehung gibt.

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")))
Copy

Empfohlene Korrektur

Snowpark verfügt über eine äquivalente least-Funktion, die mehrere Spaltenobjekte als Argumente erhält. Aus diesem Grund wird die Spark-Überladung, die mehrere Spaltenobjekte als Argumente erhält, direkt von Snowpark unterstützt und erfordert keine Änderungen.

Für die Überladung, die mehrere Zeichenfolgeargumente empfängt, können Sie die Zeichenfolgen in Spaltenobjekte umwandeln, indem Sie die com.snowflake.snowpark.functions.col-Funktion als Problemumgehung verwenden.

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")))
Copy

Zusätzliche Empfehlungen

SPRKSCL1107

Warnung

Dieser Problemcode ist jetzt veraltet

Meldung: Writer-Speichern wird nicht unterstützt.

Kategorie: Konvertierungsfehler.

Beschreibung

Dieses Problem tritt auf, wenn das Tool in der Writer-Anweisung die Verwendung einer Writer-Speichermethode feststellt, die von Snowpark nicht unterstützt wird.

Szenario

Eingabe

Nachfolgend sehen Sie ein Beispiel für die org.apache.spark.sql.DataFrameWriter.save, die zum Speichern des DataFrame-Inhalts verwendet wird.

df.write.format("net.snowflake.spark.snowflake").save()
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1107 hinzu, um Sie darauf hinzuweisen, dass die Speichermethode von Snowpark nicht unterstützt wird.

df.write.saveAsTable(tablename)
/*EWI: SPRKSCL1107 => Writer method is not supported .save()*/
Copy

Empfohlene Korrektur

Es gibt keine empfohlene Korrektur für dieses Szenario

Zusätzliche Empfehlungen

SPRKSCL1156

Meldung: org.apache.spark.sql.functions.degrees verfügt über eine Problemumgehung, siehe Dokumentation für weitere Informationen

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.functions.degrees–Funktion feststellt, für die es eine Problemumgehung gibt.

Szenario

Eingabe

Nachfolgend sehen Sie ein Beispiel für die org.apache.spark.sql.functions.degrees-Funktion, die zunächst mit einem Spaltennamen als Argument und anschließend mit einem Spaltenobjekt verwendet wird.

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")))
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1156 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird, aber es eine Problemumgehung gibt.

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")))
Copy

Empfohlene Korrektur

Snowpark verfügt über eine äquivalente degrees-Funktion, die ein Spaltenobjekt als Argument erhält. Aus diesem Grund wird die Spark-Überladung, die ein Spaltenobjekt als Argument erhält, direkt von Snowpark unterstützt und erfordert keine Änderungen.

Für die Überladung, die ein Zeichenfolgenargument empfängt, können Sie die Zeichenfolge in ein Spaltenobjekt umwandeln, indem Sie die com.snowflake.snowpark.functions.col-Funktion als Problemumgehung verwenden.

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")))
Copy

Zusätzliche Empfehlungen

SPRKSCL1127

Meldung: org.apache.spark.sql.functions.covar_samp verfügt über eine Problemumgehung, siehe Dokumentation für weitere Informationen

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.functions.covar_samp-Funktion feststellt, für die es eine Problemumgehung gibt.

Szenario

Eingabe

Nachfolgend sehen Sie ein Beispiel für die org.apache.spark.sql.functions.covar_samp-Funktion, die zunächst mit Spaltennamen als Argumenten und dann mit Spaltenobjekten verwendet wird.

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"))
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1127 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird, aber es eine Problemumgehung gibt.

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"))
Copy

Empfohlene Korrektur

Snowpark verfügt über eine äquivalente covar_samp-Funktion, die zwei Spaltenobjekte als Argumente erhält. Aus diesem Grund wird die Spark-Überladung, die zwei Spaltenobjekte als Argumente erhält, direkt von Snowpark unterstützt und erfordert keine Änderungen.

Für die Überladung, die zwei Zeichenfolgenargumente empfängt, können Sie die Zeichenfolgen in Spaltenobjekte umwandeln, indem Sie die Funktion com.snowflake.snowpark.functions.col als Problemumgehung verwenden.

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"))
Copy

Zusätzliche Empfehlungen

SPRKSCL1113

Meldung: org.apache.spark.sql.functions.next_day verfügt über eine Problemumgehung, siehe Dokumentation für weitere Informationen

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.functions.next_day-Funktion feststellt, für die es eine Problemumgehung gibt.

Szenario

Eingabe

Nachfolgend sehen Sie ein Beispiel für die Funktion org.apache.spark.sql.functions.next_day, die zunächst mit einer Zeichenfolge als zweitem Argument und dann mit einem Spaltenobjekt verwendet wird.

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")))
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1113 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird, aber es eine Problemumgehung gibt.

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")))
Copy

Empfohlene Korrektur

Snowpark verfügt über eine äquivalente next_day-Funktion, die zwei Spaltenobjekte als Argumente erhält. Aus diesem Grund wird die Spark-Überladung, die zwei Spaltenobjekte als Argumente erhält, direkt von Snowpark unterstützt und erfordert keine Änderungen.

Für die Überladung, die ein Spaltenobjekt und eine Zeichenkette empfängt, können Sie die Zeichenkette in ein Spaltenobjekt konvertieren, indem Sie die com.snowflake.snowpark.functions.lit-Funktion als Problemumgehung verwenden.

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")))
Copy

Zusätzliche Empfehlungen

SPRKSCL1002

Meldung: Dieser Codeabschnitt enthält eine Wiederherstellung aus _ statement _-Parsing-Fehlern

Kategorie: Parsing-Fehler.

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Anweisung im Code einer Datei entdeckt, die nicht korrekt gelesen oder verstanden werden kann. Dies wird als Parsing-Fehler bezeichnet. SMA kann diesen Parsing-Fehler beheben und die Analyse des Codes der Datei fortsetzen. In diesem Fall ist SMA in der Lage, den Code der Datei ohne Fehler zu verarbeiten.

Szenario

Eingabe

Nachfolgend finden Sie ein Beispiel für ungültigen Scala-Code, bei dem sich die SMA erholen kann.

Class myClass {

    def function1() & = { 1 }

    def function2() = { 2 }

    def function3() = { 3 }

}
Copy

Ausgabe

SMA fügt dem Ausgabecode das EWI SPRKSCL1002 hinzu, um Sie darauf hinzuweisen, dass der Code der Datei Parsing-Fehler aufweist. SMA kann diesen Fehler jedoch beheben und die Analyse des Codes der Datei fortsetzen.

class myClass {

    def function1();//EWI: SPRKSCL1002 => Unexpected end of declaration. Failed token: '&' @(3,21).
    & = { 1 }

    def function2() = { 2 }

    def function3() = { 3 }

}
Copy

Empfohlene Korrektur

Da die Meldung den Fehler in der Anweisung lokalisiert, können Sie versuchen, die ungültige Syntax zu identifizieren und sie zu entfernen oder die Anweisung auszukommentieren, um den Parsing-Fehler zu vermeiden.

Class myClass {

    def function1() = { 1 }

    def function2() = { 2 }

    def function3() = { 3 }

}
Copy
Class myClass {

    // def function1() & = { 1 }

    def function2() = { 2 }

    def function3() = { 3 }

}
Copy

Zusätzliche Empfehlungen

  • Prüfen Sie, ob der Code der Datei ein gültiger Scala-Code ist.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an sma-support@snowflake.com senden oder ein Problem im SMA melden.

SPRKSCL1142

Meldung: _ spark element _ ist nicht definiert

Kategorie: Konvertierungsfehler

Beschreibung

Dieses Problem tritt auf, wenn SMA keinen geeigneten Zuordnungsstatus für das angegebene Element ermitteln konnte. Das bedeutet, dass SMA noch nicht weiß, ob dieses Element von Snowpark unterstützt wird oder nicht. Bitte beachten Sie, dass dies ein allgemeiner Fehlercode ist, der von SMA für jedes nicht definierte Element verwendet wird.

Szenario

Eingabe

Nachfolgend finden Sie ein Beispiel für eine Funktion, für die SMA keinen geeigneten Zuordnungsstatus ermitteln konnte und daher diese EWI generierte. In diesem Fall sollten Sie davon ausgehen, dass notDefinedFunction() eine gültige Spark-Funktion ist und der Code ausgeführt wird.

val df = session.range(10)
val result = df.notDefinedFunction()
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1142 hinzu, um Sie darauf hinzuweisen, dass dieses Element nicht definiert ist.

val df = session.range(10)
/*EWI: SPRKSCL1142 => org.apache.spark.sql.DataFrame.notDefinedFunction is not defined*/
val result = df.notDefinedFunction()
Copy

Empfohlene Korrektur

Um zu versuchen, das Problem zu identifizieren, können Sie die folgenden Überprüfungen durchführen:

  • Prüfen Sie, ob es sich um ein gültiges Spark-Element handelt.

  • Prüfen Sie, ob das Element die richtige Syntax hat und richtig geschrieben ist.

  • Prüfen Sie, ob Sie eine Spark-Version verwenden, die von SMA unterstützt wird.

Wenn es sich um ein gültiges Spark-Element handelt, melden Sie bitte über die Option Ein Problem melden der SMA, dass bei diesem Element ein Konvertierungsfehler aufgetreten ist, und fügen Sie alle zusätzlichen Informationen hinzu, die Sie für hilfreich halten.

Bitte beachten Sie, dass, wenn ein Element nicht auf SMA definiert ist, dies nicht unbedingt bedeutet, dass es von Snowpark nicht unterstützt wird. Sie sollten in der Snowpark-Dokumentation nachsehen, ob es ein äquivalentes Element gibt.

Zusätzliche Empfehlungen

SPRKSCL1152

Meldung: org.apache.spark.sql.functions.variance verfügt über eine Problemumgehung, siehe Dokumentation für weitere Informationen

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.functions.variance-Funktion feststellt, für die es eine Problemumgehung gibt.

Szenario

Eingabe

Nachfolgend sehen Sie ein Beispiel für die org.apache.spark.sql.functions.variance-Funktion, die zunächst mit einem Spaltennamen als Argument und anschließend mit einem Spaltenobjekt verwendet wird.

val df = Seq(10, 20, 30, 40, 50).toDF("value")
val result1 = df.select(variance("value"))
val result2 = df.select(variance(col("value")))
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1152 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird, aber es eine Problemumgehung gibt.

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")))
Copy

Empfohlene Korrektur

Snowpark verfügt über eine äquivalente variance-Funktion, die ein Spaltenobjekt als Argument erhält. Aus diesem Grund wird die Spark-Überladung, die ein Spaltenobjekt als Argument erhält, direkt von Snowpark unterstützt und erfordert keine Änderungen.

Für die Überladung, die ein Zeichenfolgenargument empfängt, können Sie die Zeichenfolge in ein Spaltenobjekt umwandeln, indem Sie die com.snowflake.snowpark.functions.col-Funktion als Problemumgehung verwenden.

val df = Seq(10, 20, 30, 40, 50).toDF("value")
val result1 = df.select(variance(col("value")))
val result2 = df.select(variance(col("value")))
Copy

Zusätzliche Empfehlungen

SPRKSCL1103

Dieser Problemcode ist jetzt veraltet

Meldung: SparkBuilder Methode wird nicht unterstützt _ method name _

Kategorie: Konvertierungsfehler

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Methode erkennt, die von Snowflake in der SparkBuilder-Methodenverkettung nicht unterstützt wird. Daher kann es die Migration der Reader-Anweisung beeinträchtigen.

Im Folgenden finden Sie die nicht unterstützten SparkBuilder-Methoden:

  • Master

  • appName

  • enableHiveSupport

  • withExtensions

Szenario

Eingabe

Nachfolgend finden Sie ein Beispiel für eine SparkBuilder-Methodenverkettung mit vielen Methoden, die von Snowflake nicht unterstützt werden.

val spark = SparkSession.builder()
           .master("local")
           .appName("testApp")
           .config("spark.sql.broadcastTimeout", "3600")
           .enableHiveSupport()
           .getOrCreate()
Copy

Ausgabe

Die SMA fügt dem Ausgabecode das EWI SPRKSCL1103 hinzu, um Sie darauf hinzuweisen, dass die Methoden master, appName und enableHiveSupport von Snowpark nicht unterstützt werden. Dies könnte sich auf die Migration der Spark-Sitzungsanweisung auswirken.

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
Copy

Empfohlene Korrektur

Um die Sitzung zu erstellen, müssen Sie die richtige Snowflake Snowpark-Konfiguration hinzufügen.

In diesem Beispiel wird eine configs-Variable verwendet.

    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
Copy

Außerdem wird die Verwendung einer configFile (profile.properties) mit den Verbindungsinformationen empfohlen:

## 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>
Copy

Und mit der Session.builder.configFile kann die Sitzung erstellt werden:

val session = Session.builder.configFile("/path/to/properties/file").create
Copy

Zusätzliche Empfehlungen

SPRKSCL1137

Meldung: org.apache.spark.sql.functions.sin verfügt über eine Problemumgehung, siehe Dokumentation für weitere Informationen

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.functions.sin-Funktion feststellt, für die es eine Problemumgehung gibt.

Szenario

Eingabe

Nachfolgend sehen Sie ein Beispiel für die org.apache.spark.sql.functions.sin-Funktion, die zunächst mit einem Spaltennamen als Argument und anschließend mit einem Spaltenobjekt verwendet wird.

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")))
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1137 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird, aber es eine Problemumgehung gibt.

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")))
Copy

Empfohlene Korrektur

Snowpark verfügt über eine äquivalente sin-Funktion, die ein Spaltenobjekt als Argument erhält. Aus diesem Grund wird die Spark-Überladung, die ein Spaltenobjekt als Argument erhält, direkt von Snowpark unterstützt und erfordert keine Änderungen.

Für die Überladung, die ein Zeichenfolgenargument empfängt, können Sie die Zeichenfolge in ein Spaltenobjekt umwandeln, indem Sie die com.snowflake.snowpark.functions.col-Funktion als Problemumgehung verwenden.

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")))
Copy

Zusätzliche Empfehlungen

SPRKSCL1166

Bemerkung

Dieser Problemcode ist jetzt veraltet

Meldung: org.apache.spark.sql.DataFrameReader.format wird nicht unterstützt.

Kategorie: Warnung.

Beschreibung

Dieses Problem tritt auf, wenn org.apache.spark.sql.DataFrameReader.format ein Argument hat, das von Snowpark nicht unterstützt wird.

Szenarien

Es gibt einige Szenarien, die von der Art des Formats abhängen, das Sie zu laden versuchen. Es kann ein unterstütztes oder nicht unterstütztes Format sein.

Szenario 1

Eingabe

Das Tool analysiert den Typ des Formats, das Sie zu laden versuchen, die unterstützten Formate sind:

  • csv

  • json

  • orc

  • parquet

  • text

Das folgende Beispiel zeigt, wie das Tool die format-Methode transformiert, wenn ein csv-Wert übergeben wird.

spark.read.format("csv").load(path)
Copy

Ausgabe

Das Tool wandelt die format-Methode in einen Aufruf der csv-Methode um, wenn die Ladefunktion einen Parameter hat.

spark.read.csv(path)
Copy

Empfohlene Korrektur

In diesem Fall zeigt das Tool die EWI nicht an, d. h. es ist keine Korrektur erforderlich.

Szenario 2

Eingabe

Das folgende Beispiel zeigt, wie das Tool die format-Methode umwandelt, wenn ein net.snowflake.spark.snowflake-Wert übergeben wird.

spark.read.format("net.snowflake.spark.snowflake").load(path)
Copy

Ausgabe

Das Tool zeigt EWI SPRKSCL1166 an, was darauf hinweist, dass der net.snowflake.spark.snowflake-Wert nicht unterstützt wird.

/*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)
Copy

Empfohlene Korrektur

Für die nicht unterstützten Szenarien gibt es keine spezifische Korrektur, da es von den Dateien abhängt, die zu lesen versucht werden.

Szenario 3

Eingabe

Das folgende Beispiel zeigt, wie das Tool die format-Methode umwandelt, wenn es eine csv übergibt, aber stattdessen eine Variable verwendet.

val myFormat = "csv"
spark.read.format(myFormat).load(path)
Copy

Ausgabe

Da das Tool den Wert der Variable zur Laufzeit nicht ermitteln kann, zeigt es die EWI SPRKSCL1163 an, die angibt, dass der Wert nicht unterstützt wird.

/*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)
Copy

Empfohlene Korrektur

Als Problemumgehung können Sie den Wert der Variablen überprüfen und ihn als Zeichenfolge zum Aufruf von Format hinzufügen.

Zusätzliche Empfehlungen

SPRKSCL1118

Meldung: org.apache.spark.sql.functions.trunc hat eine Problemumgehung, siehe Dokumentation für weitere Informationen

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.functions.trunc-Funktion feststellt, für die es eine Problemumgehung gibt.

Szenario

Eingabe

Nachfolgend finden Sie ein Beispiel für die org.apache.spark.sql.functions.trunc-Funktion, die diese EWI erzeugt.

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"))
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1118 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird, aber es eine Problemumgehung gibt.

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"))
Copy

Empfohlene Korrektur

Als Problemumgehung können Sie das zweite Argument mit der com.snowflake.snowpark.functions.lit-Funktion in ein Spaltenobjekt umwandeln.

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")))
Copy

Zusätzliche Empfehlungen

SPRKSCL1149

Meldung: org.apache.spark.sql.functions.toRadians hat eine Problemumgehung, siehe Dokumentation für weitere Informationen

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.functions.toRadians-Funktion feststellt, für die es eine Problemumgehung gibt.

Szenario

Eingabe

Nachfolgend sehen Sie ein Beispiel für die org.apache.spark.sql.functions.toRadians-Funktion, die zunächst mit einem Spaltennamen als Argument und dann mit einem Spaltenobjekt verwendet wird.

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")))
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1149 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird, aber es eine Problemumgehung gibt.

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")))
Copy

Empfohlene Korrektur

Als Problemumgehung können Sie die radians-Funktion verwenden. Für die Spark-Überladung, die ein Zeichenfolgeargument empfängt, müssen Sie die Zeichenfolge zusätzlich mit der Funktion com.snowflake.snowpark.functions.col in ein Spaltenobjekt umwandeln.

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")))
Copy

Zusätzliche Empfehlungen

SPRKSCL1159

Meldung: org.apache.spark.sql.functions.stddev_samp hat eine Problemumgehung, siehe Dokumentation für weitere Informationen

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.functions.stddev_samp-Funktion feststellt, für die es eine Problemumgehung gibt.

Szenario

Eingabe

Nachfolgend finden Sie ein Beispiel für die org.apache.spark.sql.functions.stddev_samp-Funktion, die diese EWI erzeugt. In diesem Beispiel wird die stddev_samp-Funktion verwendet, um die Stichprobenstandardabweichung der ausgewählten Spalte zu berechnen.

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")
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1159 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird, aber es eine Problemumgehung gibt.

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")
Copy

Empfohlene Korrektur

Snowpark verfügt über eine äquivalente stddev_samp-Funktion, die ein Spaltenobjekt als Argument erhält. Aus diesem Grund wird die Spark-Überladung, die ein Spaltenobjekt als Argument erhält, direkt von Snowpark unterstützt und erfordert keine Änderungen.

Für die Überladung, die ein Zeichenfolgenargument empfängt, können Sie die Zeichenfolge in ein Spaltenobjekt umwandeln, indem Sie die com.snowflake.snowpark.functions.col-Funktion als Problemumgehung verwenden.

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"))
Copy

Zusätzliche Empfehlungen

SPRKSCL1108

Bemerkung

Dieser Problemcode ist bereits veraltet.

Meldung: org.apache.spark.sql.DataFrameReader.format wird nicht unterstützt.

Kategorie: Warnung.

Beschreibung

Dieses Problem tritt auf, wenn org.apache.spark.sql.DataFrameReader.format ein Argument hat, das von Snowpark nicht unterstützt wird.

Szenarien

Es gibt einige Szenarien, die von der Art des Formats abhängen, das Sie zu laden versuchen. Es kann ein unterstütztes oder nicht unterstütztes Format sein.

Szenario 1

Eingabe

Das Tool analysiert den Typ des Formats, das Sie zu laden versuchen, die unterstützten Formate sind:

  • csv

  • json

  • orc

  • parquet

  • text

Das folgende Beispiel zeigt, wie das Tool die format-Methode transformiert, wenn ein csv-Wert übergeben wird.

spark.read.format("csv").load(path)
Copy

Ausgabe

Das Tool wandelt die format-Methode in einen Aufruf der csv-Methode um, wenn die Ladefunktion einen Parameter hat.

spark.read.csv(path)
Copy

Empfohlene Korrektur

In diesem Fall zeigt das Tool die EWI nicht an, d. h. es ist keine Korrektur erforderlich.

Szenario 2

Eingabe

Das folgende Beispiel zeigt, wie das Tool die format-Methode umwandelt, wenn ein net.snowflake.spark.snowflake-Wert übergeben wird.

spark.read.format("net.snowflake.spark.snowflake").load(path)
Copy

Ausgabe

Das Tool zeigt EWI SPRKSCL1108 an, was darauf hinweist, dass der net.snowflake.spark.snowflake-Wert nicht unterstützt wird.

/*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)
Copy

Empfohlene Korrektur

Für die nicht unterstützten Szenarien gibt es keine spezifische Korrektur, da es von den Dateien abhängt, die zu lesen versucht werden.

Szenario 3

Eingabe

Das folgende Beispiel zeigt, wie das Tool die format-Methode umwandelt, wenn es eine csv übergibt, aber stattdessen eine Variable verwendet.

val myFormat = "csv"
spark.read.format(myFormat).load(path)
Copy

Ausgabe

Da das Tool den Wert der Variable zur Laufzeit nicht ermitteln kann, zeigt es die EWI SPRKSCL1163 an, die angibt, dass der Wert nicht unterstützt wird.

/*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)
Copy

Empfohlene Korrektur

Als Problemumgehung können Sie den Wert der Variablen überprüfen und ihn als Zeichenfolge zum Aufruf von Format hinzufügen.

Zusätzliche Empfehlungen

SPRKSCL1128

Meldung: org.apache.spark.sql.functions.exp verfügt über eine Problemumgehung, siehe Dokumentation für weitere Informationen

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.functions.exp-Funktion feststellt, für die es eine Problemumgehung gibt.

Szenario

Eingabe

Nachfolgend sehen Sie ein Beispiel für die org.apache.spark.sql.functions.exp-Funktion, die zunächst mit einem Spaltennamen als Argument und anschließend mit einem Spaltenobjekt verwendet wird.

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")))
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1128 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird, aber es eine Problemumgehung gibt.

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")))
Copy

Empfohlene Korrektur

Snowpark verfügt über eine äquivalente exp-Funktion, die ein Spaltenobjekt als Argument erhält. Aus diesem Grund wird die Spark-Überladung, die ein Spaltenobjekt als Argument erhält, direkt von Snowpark unterstützt und erfordert keine Änderungen.

Für die Überladung, die ein Zeichenfolgenargument empfängt, können Sie die Zeichenfolge in ein Spaltenobjekt umwandeln, indem Sie die com.snowflake.snowpark.functions.col-Funktion als Problemumgehung verwenden.

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")))
Copy

Zusätzliche Empfehlungen

SPRKSCL1169

Meldung: _ Spark element _ fehlt in der Methodenverkettung.

Kategorie: Warnung.

Beschreibung

Dieses Problem tritt auf, wenn SMA feststellt, dass der Aufruf eines Spark-Elements in der Methodenverkettung fehlt. SMA muss dieses Spark-Element kennen, um die Anweisung zu analysieren.

Szenario

Eingabe

Nachfolgend sehen Sie ein Beispiel, bei dem der Aufruf der Ladefunktion in der Methodenverkettung fehlt.

val reader = spark.read.format("json")
val df = reader.load(path)
Copy

Ausgabe

SMA fügt dem Ausgabecode die EWI SPRKSCL1169 hinzu, um Sie darauf hinzuweisen, dass ein Aufruf der Ladefunktion in der Methodenverkettung fehlt und SMA die Anweisung nicht analysieren kann.

/*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)
Copy

Empfohlene Korrektur

Stellen Sie sicher, dass alle Funktionsaufrufe der Methodenverkettung in der gleichen Anweisung stehen.

val reader = spark.read.format("json").load(path)
Copy

Zusätzliche Empfehlungen

SPRKSCL1138

Meldung: org.apache.spark.sql.functions.sinh hat eine Problemumgehung, siehe Dokumentation für weitere Informationen

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.functions.sinh-Funktion feststellt, für die es eine Problemumgehung gibt.

Szenario

Eingabe

Nachfolgend sehen Sie ein Beispiel für die org.apache.spark.sql.functions.sinh-Funktion, die zunächst mit einem Spaltennamen als Argument und anschließend mit einem Spaltenobjekt verwendet wird.

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")))
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1138 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird, aber es eine Problemumgehung gibt.

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")))
Copy

Empfohlene Korrektur

Snowpark verfügt über eine äquivalente sinh-Funktion, die ein Spaltenobjekt als Argument erhält. Aus diesem Grund wird die Spark-Überladung, die ein Spaltenobjekt als Argument erhält, direkt von Snowpark unterstützt und erfordert keine Änderungen.

Für die Überladung, die ein Zeichenfolgenargument empfängt, können Sie die Zeichenfolge in ein Spaltenobjekt umwandeln, indem Sie die com.snowflake.snowpark.functions.col-Funktion als Problemumgehung verwenden.

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")))
Copy

Zusätzliche Empfehlungen

SPRKSCL1129

Meldung: org.apache.spark.sql.functions.floor hat eine Problemumgehung, siehe Dokumentation für weitere Informationen

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.functions.floor-Funktion feststellt, für die es eine Problemumgehung gibt.

Szenario

Eingabe

Nachfolgend sehen Sie ein Beispiel für die org.apache.spark.sql.functions.floor-Funktion, die zunächst mit einem Spaltennamen als Argument, dann mit einem Spaltenobjekt und schließlich mit zwei Spaltenobjekten verwendet wird.

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)))
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1129 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird, aber es eine Problemumgehung gibt.

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)))
Copy

Empfohlene Korrektur

Snowpark verfügt über eine äquivalente floor-Funktion, die ein Spaltenobjekt als Argument erhält. Aus diesem Grund wird die Spark-Überladung, die ein Spaltenobjekt als Argument erhält, direkt von Snowpark unterstützt und erfordert keine Änderungen.

Für die Überladung, die ein Zeichenfolgenargument empfängt, können Sie die Zeichenfolge in ein Spaltenobjekt umwandeln, indem Sie die com.snowflake.snowpark.functions.col-Funktion als Problemumgehung verwenden.

Für die Überladung, die ein Spaltenobjekt und eine Skala empfängt, können Sie die callBuiltin-Funktion verwenden, um die Snowflake Builtin-FLOOR-Funktion aufzurufen. Um sie zu verwenden, sollten Sie die Zeichenfolge „floor“ als erstes Argument, die Spalte als zweites Argument und die Skala als drittes Argument übergeben.

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)))
Copy

Zusätzliche Empfehlungen

SPRKSCL1168

Meldung: _ Spark element _ with argument(s) value(s) _ given arguments _ wird nicht unterstützt.

Kategorie: Warnung.

Beschreibung

Dieses Problem tritt auf, wenn SMA feststellt, dass das Spark-Element mit den angegebenen Parametern nicht unterstützt wird.

Szenario

Eingabe

Nachfolgend finden Sie ein Beispiel für ein Spark-Element, dessen Parameter nicht unterstützt wird.

spark.read.format("text").load(path)
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1168 hinzu, um Sie darauf hinzuweisen, dass das Spark-Element mit dem angegebenen Parameter nicht unterstützt wird.

/*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)
Copy

Empfohlene Korrektur

Für dieses Szenario gibt es keine spezielle Korrektur.

Zusätzliche Empfehlungen

SPRKSCL1139

Meldung: org.apache.spark.sql.functions.sqrt hat eine Problemumgehung, siehe Dokumentation für weitere Informationen

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.functions.sqrt-Funktion feststellt, für die es eine Problemumgehung gibt.

Szenario

Eingabe

Nachfolgend sehen Sie ein Beispiel für die org.apache.spark.sql.functions.sqrt-Funktion, die zunächst mit einem Spaltennamen als Argument und dann mit einem Spaltenobjekt verwendet wird.

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")))
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1139 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird, aber es eine Problemumgehung gibt.

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")))
Copy

Empfohlene Korrektur

Snowpark verfügt über eine äquivalente sqrt-Funktion, die ein Spaltenobjekt als Argument erhält. Aus diesem Grund wird die Spark-Überladung, die ein Spaltenobjekt als Argument erhält, direkt von Snowpark unterstützt und erfordert keine Änderungen.

Für die Überladung, die ein Zeichenfolgenargument empfängt, können Sie die Zeichenfolge in ein Spaltenobjekt umwandeln, indem Sie die com.snowflake.snowpark.functions.col-Funktion als Problemumgehung verwenden.

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")))
Copy

Zusätzliche Empfehlungen

SPRKSCL1119

Meldung: org.apache.spark.sql.Column.endsWith hat eine Problemumgehung, siehe Dokumentation für weitere Informationen

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.Column.endsWith-Funktion feststellt, für die es eine Problemumgehung gibt.

Szenario

Eingabe

Nachfolgend sehen Sie ein Beispiel für die Funktion org.apache.spark.sql.Column.endsWith, die zunächst mit einem Literal-Zeichenfolgeargument und anschließend mit einem Spaltenobjekt-Argument verwendet wird.

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")))
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1119 hinzu, um Sie darauf hinzuweisen, dass diese Funktion nicht direkt von Snowpark unterstützt wird, aber es eine Problemumgehung gibt.

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")))
Copy

Empfohlene Korrektur

Als Problemumgehung können Sie die [com.snowflake.snowpark.functions.endswith](https://docs.snowflake.com/developer-guide/snowpark/reference/scala/com/snowflake/snowpark/functions$.html#endswith(expr:com.snowflake.snowpark.Column,str:com.snowflake.snowpark.Column):com.snowflake.snowpark.Column-Funktion verwenden, wobei das erste Argument die Spalte ist, deren Werte überprüft werden sollen, und das zweite Argument das Suffix, das mit den Spaltenwerten verglichen werden soll. Bitte beachten Sie, dass Sie, wenn das Argument der Spark-Funktion endswith eine Literal-Zeichenfolge ist, diesen mit der Funktion com.snowflake.snowpark.functions.lit in ein Spaltenobjekt umwandeln sollten.

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")))
Copy

Zusätzliche Empfehlungen

SPRKSCL1148

Meldung: org.apache.spark.sql.functions.toDegrees hat eine Problemumgehung, siehe Dokumentation für weitere Informationen

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.functions.toDegrees-Funktion feststellt, für die es eine Problemumgehung gibt.

Szenario

Eingabe

Nachfolgend sehen Sie ein Beispiel für die org.apache.spark.sql.functions.toDegrees-Funktion, die zunächst mit einem Spaltennamen als Argument und dann mit einem Spaltenobjekt verwendet wird.

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")))
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1148 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird, aber es eine Problemumgehung gibt.

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")))
Copy

Empfohlene Korrektur

Als Problemumgehung können Sie die degrees-Funktion verwenden. Für die Spark-Überladung, die ein Zeichenfolgeargument empfängt, müssen Sie die Zeichenfolge zusätzlich mit der Funktion com.snowflake.snowpark.functions.col in ein Spaltenobjekt umwandeln.

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")))
Copy

Zusätzliche Empfehlungen

SPRKSCL1158

Meldung: org.apache.spark.sql.functions.skewness hat eine Problemumgehung, siehe Dokumentation für weitere Informationen

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.functions.skewness-Funktion feststellt, für die es eine Problemumgehung gibt.

Szenario

Eingabe

Nachfolgend finden Sie ein Beispiel für die org.apache.spark.sql.functions.skewness-Funktion, die diese EWI erzeugt. In diesem Beispiel wird die skewness-Funktion verwendet, um die Schiefe der ausgewählten Spalte zu berechnen.

val df = Seq("1", "2", "3").toDF("elements")
val result1 = skewness(col("elements"))
val result2 = skewness("elements")
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1158 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird, aber es eine Problemumgehung gibt.

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")
Copy

Empfohlene Korrektur

Snowpark verfügt über eine äquivalente skew-Funktion, die ein Spaltenobjekt als Argument erhält. Aus diesem Grund wird die Spark-Überladung, die ein Spaltenobjekt als Argument erhält, direkt von Snowpark unterstützt und erfordert keine Änderungen.

Für die Überladung, die ein Zeichenfolgenargument empfängt, können Sie die Zeichenfolge in ein Spaltenobjekt umwandeln, indem Sie die com.snowflake.snowpark.functions.col-Funktion als Problemumgehung verwenden.

val df = Seq("1", "2", "3").toDF("elements")
val result1 = skew(col("elements"))
val result2 = skew(col("elements"))
Copy

Zusätzliche Empfehlungen

SPRKSCL1109

Bemerkung

Dieser Problemcode ist jetzt veraltet

Meldung: Der Parameter ist nicht für org.apache.spark.sql.DataFrameReader.option definiert

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA feststellt, dass der Parameter von org.apache.spark.sql.DataFrameReader. option nicht definiert ist.

Szenario

Eingabe

Nachfolgend finden Sie ein Beispiel für einen nicht definierten Parameter für die org.apache.spark.sql.DataFrameReader.option-Funktion.

spark.read.option("header", True).json(path)
Copy

Ausgabe

SMA fügt dem Ausgabecode das EWI SPRKSCL1109 hinzu, um Sie darauf hinzuweisen, dass der Parameter für die org.apache.spark.sql.DataFrameReader.option-Funktion nicht definiert ist.

/*EWI: SPRKSCL1109 => The parameter header=True is not supported for org.apache.spark.sql.DataFrameReader.option*/
spark.read.option("header", True).json(path)
Copy

Empfohlene Korrektur

Suchen Sie in der Snowpark-Dokumentation nach Reader-Format-Optionen hier, um die definierten Optionen zu identifizieren.

Zusätzliche Empfehlungen

SPRKSCL1114

Meldung: org.apache.spark.sql.functions.repeat hat eine Problemumgehung, siehe Dokumentation für weitere Informationen

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.functions.repeat-Funktion feststellt, für die es eine Problemumgehung gibt.

Szenario

Eingabe

Nachfolgend finden Sie ein Beispiel für die org.apache.spark.sql.functions.repeat-Funktion, die diese EWI erzeugt.

val df = Seq("Hello", "World").toDF("word")
val result = df.withColumn("repeated_word", repeat(col("word"), 3))
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1114 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird, aber es eine Problemumgehung gibt.

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))
Copy

Empfohlene Korrektur

Als Problemumgehung können Sie das zweite Argument mit der com.snowflake.snowpark.functions.lit-Funktion in ein Spaltenobjekt umwandeln.

val df = Seq("Hello", "World").toDF("word")
val result = df.withColumn("repeated_word", repeat(col("word"), lit(3)))
Copy

Zusätzliche Empfehlungen

SPRKSCL1145

Meldung: org.apache.spark.sql.functions.sumDistinct hat eine Problemumgehung, siehe Dokumentation für weitere Informationen

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.functions.sumDistinct-Funktion feststellt, für die es eine Problemumgehung gibt.

Szenario

Eingabe

Nachfolgend sehen Sie ein Beispiel für die org.apache.spark.sql.functions.sumDistinct-Funktion, die zunächst mit einem Spaltennamen als Argument und dann mit einem Spaltenobjekt verwendet wird.

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")))
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1145 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird, aber es eine Problemumgehung gibt.

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")))
Copy

Empfohlene Korrektur

Als Problemumgehung können Sie die sum_distinct–Funktion verwenden. Für die Spark-Überladung, die ein Zeichenfolgeargument empfängt, müssen Sie die Zeichenfolge zusätzlich mit der Funktion com.snowflake.snowpark.functions.col in ein Spaltenobjekt umwandeln.

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")))
Copy

Zusätzliche Empfehlungen

SPRKSCL1171

Meldung: Snowpark unterstützt keine Split-Funktionen mit mehr als zwei Parametern oder mit Regex-Mustern. Siehe Dokumentation für weitere Informationen.

Kategorie: Warnung.

Beschreibung

Dieses Problem tritt auf, wenn SMA feststellt, dass org.apache.spark.sql.functions.split mehr als zwei Parameter hat oder ein Regex-Muster enthält.

Szenarien

Die split-Funktion wird verwendet, um die angegebene Spalte um Übereinstimmungen mit dem angegebenen Muster zu trennen. Diese Spark-Funktion hat drei Überladungen.

Szenario 1

Eingabe

Nachfolgend finden Sie ein Beispiel für die org.apache.spark.sql.functions.split-Funktion, die diese EWI erzeugt. In diesem Beispiel hat die Funktion split zwei Parameter, und das zweite Argument ist eine Zeichenfolge und kein Regex-Muster.

val df = Seq("Snowflake", "Snowpark", "Snow", "Spark").toDF("words")
val result = df.select(split(col("words"), "Snow"))
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1171 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird.

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"))
Copy

Empfohlene Korrektur

Snowpark verfügt über eine äquivalente split-Funktion, die ein Spaltenobjekt als zweites Argument erhält. Aus diesem Grund kann die Spark-Überladung, die ein Zeichenfolgeargument im zweiten Argument erhält, das aber kein Regex-Muster ist, den String in ein Spaltenobjekt konvertieren, indem sie die com.snowflake.snowpark.functions.lit-Funktion als Problemumgehung verwendet.

val df = Seq("Snowflake", "Snowpark", "Snow", "Spark").toDF("words")
val result = df.select(split(col("words"), lit("Snow")))
Copy
Szenario 2

Eingabe

Nachfolgend finden Sie ein Beispiel für die org.apache.spark.sql.functions.split-Funktion, die diese EWI erzeugt. In diesem Beispiel hat die split-Funktion zwei Parameter und das zweite Argument ist ein Regex-Muster.

val df = Seq("Snowflake", "Snowpark", "Snow", "Spark").toDF("words")
val result = df.select(split(col("words"), "^([\\d]+-[\\d]+-[\\d])"))
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1171 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird, da Regex-Muster von Snowflake nicht unterstützt werden.

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])"))
Copy

Empfohlene Korrektur

Da Snowflake keine Regex-Muster unterstützt, versuchen Sie, das Muster durch eine Nicht-Regex-Musterzeichenfolge zu ersetzen.

Szenario 3

Eingabe

Nachfolgend finden Sie ein Beispiel für die org.apache.spark.sql.functions.split-Funktion, die diese EWI erzeugt. In diesem Beispiel hat die split-Funktion mehr als zwei Parameter.

val df = Seq("Snowflake", "Snowpark", "Snow", "Spark").toDF("words")
val result = df.select(split(df("words"), "Snow", 3))
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1171 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird, da Snowflake keine Split-Funktion mit mehr als zwei Parametern hat.

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))
Copy

Empfohlene Korrektur

Da Snowflake keine Split-Funktion mit mehr als zwei Parametern unterstützt, versuchen Sie, die von Snowflake unterstützte Split-Funktion zu verwenden.

Zusätzliche Empfehlungen

SPRKSCL1120

Meldung: org.apache.spark.sql.functions.asin hat eine Problemumgehung, siehe Dokumentation für weitere Informationen

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.functions.asin-Funktion feststellt, für die es eine Problemumgehung gibt.

Szenario

Eingabe

Nachfolgend sehen Sie ein Beispiel für die org.apache.spark.sql.functions.asin-Funktion, die zunächst mit einem Spaltennamen als Argument und anschließend mit einem Spaltenobjekt verwendet wird.

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"))
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1120 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird, aber es eine Problemumgehung gibt.

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"))
Copy

Empfohlene Korrektur

Snowpark verfügt über eine äquivalente asin-Funktion, die ein Spaltenobjekt als Argument erhält. Aus diesem Grund wird die Spark-Überladung, die ein Spaltenobjekt als Argument erhält, direkt von Snowpark unterstützt und erfordert keine Änderungen.

Für die Überladung, die ein Zeichenfolgenargument empfängt, können Sie die Zeichenfolge in ein Spaltenobjekt umwandeln, indem Sie die com.snowflake.snowpark.functions.col-Funktion als Problemumgehung verwenden.

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"))
Copy

Zusätzliche Empfehlungen

SPRKSCL1130

Meldung: org.apache.spark.sql.functions.greatest hat eine Problemumgehung, siehe Dokumentation für weitere Informationen

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.functions.greatest-Funktion feststellt, für die es eine Problemumgehung gibt.

Szenario

Eingabe

Nachfolgend sehen Sie ein Beispiel für die org.apache.spark.sql.functions.greatest-Funktion, die zunächst mit mehreren Spaltennamen als Argumente und dann mit mehreren Spaltenobjekten verwendet wird.

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")))
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1130 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird, aber es eine Problemumgehung gibt.

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")))
Copy

Empfohlene Korrektur

Snowpark verfügt über eine äquivalente greatest-Funktion, die mehrere Spaltenobjekte als Argumente erhält. Aus diesem Grund wird die Spark-Überladung, die Spaltenobjekte als Argumente erhält, direkt von Snowpark unterstützt und erfordert keine Änderungen.

Für die Überladung, die mehrere Zeichenfolgeargumente empfängt, können Sie die Zeichenfolgen in Spaltenobjekte umwandeln, indem Sie die com.snowflake.snowpark.functions.col-Funktion als Problemumgehung verwenden.

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")))
Copy

Zusätzliche Empfehlungen


Beschreibung: >- Snowpark und Snowpark-Erweiterungen wurden nicht zur Projektkonfigurationsdatei hinzugefügt.


SPRKSCL1161

Meldung: Abhängigkeiten können nicht hinzugefügt werden.

Kategorie: Konvertierungsfehler.

Beschreibung

Dieses Problem tritt auf, wenn SMA in der Projektkonfigurationsdatei eine Spark-Version erkennt, die von SMA nicht unterstützt wird. Daher konnte SMA die Abhängigkeiten von Snowpark- und Snowpark-Erweiterungen nicht zur entsprechenden Projektkonfigurationsdatei hinzufügen. Wenn die Snowpark-Abhängigkeiten nicht hinzugefügt werden, wird der migrierte Code nicht kompiliert.

Szenarien

Es gibt drei mögliche Szenarien: sbt, gradle und pom.xml. Die SMA versucht, die Projektkonfigurationsdatei zu verarbeiten, indem sie Spark-Abhängigkeiten entfernt und Abhängigkeiten von Snowpark- und Snowpark-Erweiterungen hinzufügt.

Szenario 1

Eingabe

Nachfolgend finden Sie ein Beispiel für den Abschnitt dependencies einer sbt-Projektkonfigurationsdatei.

...
libraryDependencies += "org.apache.spark" % "spark-core_2.13" % "3.5.3"
libraryDependencies += "org.apache.spark" % "spark-sql_2.13" % "3.5.3"
...
Copy

Ausgabe

Die SMA fügt die EWI SPRKSCL1161 zum Probleminventar hinzu, da die Spark-Version nicht unterstützt wird und die Ausgabe gleich bleibt.

...
libraryDependencies += "org.apache.spark" % "spark-core_2.13" % "3.5.3"
libraryDependencies += "org.apache.spark" % "spark-sql_2.13" % "3.5.3"
...
Copy

Empfohlene Korrektur

Entfernen Sie manuell die Spark-Abhängigkeiten und fügen Sie die Abhängigkeiten von Snowpark und Snowpark-Erweiterungen zur sbt-Projektkonfigurationsdatei hinzu.

...
libraryDependencies += "com.snowflake" % "snowpark" % "1.14.0"
libraryDependencies += "net.mobilize.snowpark-extensions" % "snowparkextensions" % "0.0.18"
...
Copy

Stellen Sie sicher, dass Sie die Snowpark-Version verwenden, die den Anforderungen Ihres Projekts am besten entspricht.

Szenario 2

Eingabe

Nachfolgend finden Sie ein Beispiel für den Abschnitt dependencies einer gradle-Projektkonfigurationsdatei.

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'
    ...
}
Copy

Ausgabe

Die SMA fügt die EWI SPRKSCL1161 zum Probleminventar hinzu, da die Spark-Version nicht unterstützt wird und die Ausgabe gleich bleibt.

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'
    ...
}
Copy

Empfohlene Korrektur

Entfernen Sie manuell die Spark-Abhängigkeiten und fügen Sie die Abhängigkeiten von Snowpark und Snowpark-Erweiterungen zur gradle-Projektkonfigurationsdatei hinzu.

dependencies {
    implementation 'com.snowflake:snowpark:1.14.2'
    implementation 'net.mobilize.snowpark-extensions:snowparkextensions:0.0.18'
    ...
}
Copy

Stellen Sie sicher, dass die Version der Abhängigkeiten den Anforderungen Ihres Projekts entspricht.

Szenario 3

Eingabe

Nachfolgend finden Sie ein Beispiel für den Abschnitt dependencies einer pom.xml- Projektkonfigurationsdatei.

<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>
Copy

Ausgabe

Die SMA fügt die EWI SPRKSCL1161 zum Probleminventar hinzu, da die Spark-Version nicht unterstützt wird und die Ausgabe gleich bleibt.

<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>
Copy

Empfohlene Korrektur

Entfernen Sie manuell die Spark-Abhängigkeiten und fügen Sie die Abhängigkeiten von Snowpark und Snowpark-Erweiterungen zur gradle-Projektkonfigurationsdatei hinzu.

<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>
Copy

Stellen Sie sicher, dass die Version der Abhängigkeiten den Anforderungen Ihres Projekts entspricht.

Zusätzliche Empfehlungen

  • Stellen Sie sicher, dass „input“ eine Projektkonfigurationsdatei hat:

    • build.sbt

    • build.gradle

    • pom.xml

  • Die von SMA unterstützte Spark-Version ist 2.12:3.1.2

  • Die neueste Snowpark-Version können Sie hier einsehen.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an sma-support@snowflake.com senden oder ein Problem im SMA melden.

SPRKSCL1155

Warnung

Dieser Problemcode gilt als veraltet bereits seit [Spark Conversion Core Version 4.3.2](../../../general/release-notes/README. md#spark-conversion-core-version-432)

Meldung: org.apache.spark.sql.functions.countDistinct hat eine Problemumgehung, siehe Dokumentation für weitere Informationen

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.functions.countDistinct-Funktion feststellt, für die es eine Problemumgehung gibt.

Szenario

Eingabe

Nachfolgend sehen Sie ein Beispiel für die org.apache.spark.sql.functions.countDistinct-Funktion, die zunächst mit Spaltennamen als Argumenten und dann mit Spaltenobjekten verwendet wird.

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")))
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1155 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird, aber es eine Problemumgehung gibt.

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")))
Copy

Empfohlene Korrektur

Als Problemumgehung können Sie die count_distinct-Funktion verwenden. Für die Spark-Überladung, die Zeichenfolgeargumente empfängt, müssen Sie die Zeichenfolgen zusätzlich mit der com.snowflake.snowpark.functions.col-Funktion in Spaltenobjekte umwandeln.

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")))
Copy

Zusätzliche Empfehlungen

SPRKSCL1104

Dieser Problemcode ist jetzt veraltet

Meldung: Die Spark-Session-Builder-Option wird nicht unterstützt.

Kategorie: Konvertierungsfehler.

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.SparkSession.Builder.config-Funktion feststellt, die eine Option der Spark-Sitzung setzt und von Snowpark nicht unterstützt wird.

Szenario

Eingabe

Nachfolgend finden Sie ein Beispiel für die org.apache.spark.sql.SparkSession.Builder.config-Funktion, mit der Sie eine Option in der Spark-Sitzung festlegen können.

val spark = SparkSession.builder()
           .master("local")
           .appName("testApp")
           .config("spark.sql.broadcastTimeout", "3600")
           .getOrCreate()
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1104 hinzu, um Sie darauf hinzuweisen, dass die config-Methode von Snowpark nicht unterstützt wird. In diesem Fall ist es nicht möglich, Optionen in der Spark-Sitzung über die config-Funktion einzustellen, was sich auf die Migration der Spark-Sitzungsanweisung auswirken kann.

val spark = Session.builder.configFile("connection.properties")
/*EWI: SPRKSCL1104 => SparkBuilder Option is not supported .config("spark.sql.broadcastTimeout", "3600")*/
.create()
Copy

Empfohlene Korrektur

Um die Sitzung zu erstellen, müssen Sie die richtige Snowflake Snowpark-Konfiguration hinzufügen.

In diesem Beispiel wird eine configs-Variable verwendet.

    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
Copy

Außerdem wird die Verwendung einer configFile (profile.properties) mit den Verbindungsinformationen empfohlen:

## 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>
Copy

Und mit der Session.builder.configFile kann die Sitzung erstellt werden:

val session = Session.builder.configFile("/path/to/properties/file").create
Copy

Zusätzliche Empfehlungen

SPRKSCL1124

Meldung: org.apache.spark.sql.functions.cosh hat eine Problemumgehung, siehe Dokumentation für weitere Informationen

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.functions.cosh-Funktion feststellt, für die es eine Problemumgehung gibt.

Szenario

Eingabe

Nachfolgend sehen Sie ein Beispiel für die org.apache.spark.sql.functions.cosh-Funktion, die zunächst mit einem Spaltennamen als Argument und anschließend mit einem Spaltenobjekt verwendet wird.

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")))
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1124 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird, aber es eine Problemumgehung gibt.

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")))
Copy

Empfohlene Korrektur

Snowpark verfügt über eine äquivalente cosh-Funktion, die ein Spaltenobjekt als Argument erhält. Aus diesem Grund wird die Spark-Überladung, die ein Spaltenobjekt als Argument erhält, direkt von Snowpark unterstützt und erfordert keine Änderungen.

Für die Überladung, die ein Zeichenfolgenargument empfängt, können Sie die Zeichenfolge in ein Spaltenobjekt umwandeln, indem Sie die com.snowflake.snowpark.functions.col-Funktion als Problemumgehung verwenden.

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")))
Copy

Zusätzliche Empfehlungen

SPRKSCL1175

Meldung: Die Zwei-Parameter-udf-Funktion wird in Snowpark nicht unterstützt. Sie sollte in eine Ein-Parameter-udf-Funktion umgewandelt werden. Bitte lesen Sie in der Dokumentation nach, wie Sie den Code manuell ändern können, damit er in Snowpark funktioniert.

Kategorie: Konvertierungsfehler.

Beschreibung

Dieses Problem tritt auf, wenn SMA die Verwendung der Zwei-Parameter-Funktion org.apache.spark.sql.functions.udf im Quellcode erkennt, weil Snowpark nicht über eine äquivalente Zwei-Parameter-udf-Funktion verfügt und der Ausgabecode dann möglicherweise nicht kompiliert wird.

Szenario

Eingabe

Nachfolgend finden Sie ein Beispiel für die org.apache.spark.sql.functions.udf-Funktion, die diese EWI erzeugt. In diesem Beispiel hat die udf-Funktion zwei Parameter.

val myFuncUdf = udf(new UDF1[String, Integer] {
  override def call(s: String): Integer = s.length()
}, IntegerType)
Copy

Ausgabe

Die SMA fügt dem Ausgabecode das EWI SPRKSCL1175 hinzu, um Sie darauf hinzuweisen, dass die udf-Funktion nicht unterstützt wird, da sie zwei Parameter hat.

/*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)
Copy

Empfohlene Korrektur

Snowpark unterstützt nur die Ein-Parameter-udf-Funktion (ohne den Parameter für den Rückgabetyp). Daher sollten Sie Ihre Zwei-Parameter-udf-Funktion in eine Ein-Parameter-udf-Funktion umwandeln, damit sie in Snowpark funktioniert.

Für den oben erwähnten Beispielcode müssten Sie ihn zum Beispiel manuell in diesen umwandeln:

val myFuncUdf = udf((s: String) => s.length())
Copy

Bitte beachten Sie, dass es bei der Erstellung von udf in Snowpark einige Beschränkungen gibt, die möglicherweise zusätzliche manuelle Änderungen an Ihrem Code erfordern. Bitte prüfen Sie diese anderen Empfehlungen [hier](../../issue-codes-by-source/spark-scala/README. md#additional-recommendations) im Zusammenhang mit der Erstellung von Ein-Parameter-udf-Funktionen in Snowpark für weitere Details.

Zusätzliche Empfehlungen

SPRKSCL1001

Meldung: Dieser Codeabschnitt hat Parsing-Fehler. Der Parsing-Fehler wurde gefunden in: Zeile _ line number , column column number _. Beim Versuch, das _ statement _ zu parsen. Diese Datei wurde nicht konvertiert, daher wird erwartet, dass sie noch Referenzen auf die Spark-API enthält.

Kategorie: Parsing-Fehler.

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Anweisung im Code einer Datei entdeckt, die nicht korrekt gelesen oder verstanden werden kann, es wird als Parsing-Fehler bezeichnet. Außerdem tritt dieses Problem auf, wenn eine Datei einen oder mehrere Parsing-Fehler aufweist.

Szenario

Eingabe

Nachfolgend finden Sie ein Beispiel für ungültigen Scala-Code.

/#/(%$"$%

Class myClass {

    def function1() = { 1 }

}
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1001 hinzu, um Sie darauf hinzuweisen, dass der Code der Datei Parsing-Fehler aufweist. Daher ist SMA nicht in der Lage, eine Datei mit diesem Fehler zu verarbeiten.

// **********************************************************************************************************************
// 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 }

}
Copy

Empfohlene Korrektur

Da die Meldung die Fehleranweisung genau angibt, können Sie versuchen, die ungültige Syntax zu identifizieren und sie zu entfernen oder die Anweisung auszukommentieren, um den Parsing-Fehler zu vermeiden.

Class myClass {

    def function1() = { 1 }

}
Copy
// /#/(%$"$%

Class myClass {

    def function1() = { 1 }

}
Copy

Zusätzliche Empfehlungen

  • Prüfen Sie, ob der Code der Datei ein gültiger Scala-Code ist.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an sma-support@snowflake.com senden oder ein Problem im SMA melden.

SPRKSCL1141

Meldung: org.apache.spark.sql.functions.stddev_pop hat eine Problemumgehung, siehe Dokumentation für weitere Informationen

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.functions.stddev_pop-Funktion feststellt, für die es eine Problemumgehung gibt.

Szenario

Nachfolgend sehen Sie ein Beispiel für die org.apache.spark.sql.functions.stddev_pop-Funktion, die zunächst mit einem Spaltennamen als Argument und dann mit einem Spaltenobjekt verwendet wird.

Eingabe

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")))
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1141 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird, aber es eine Problemumgehung gibt.

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")))
Copy

Empfohlene Korrektur

Snowpark verfügt über eine äquivalente stddev_pop-Funktion, die ein Spaltenobjekt als Argument erhält. Aus diesem Grund wird die Spark-Überladung, die ein Spaltenobjekt als Argument erhält, direkt von Snowpark unterstützt und erfordert keine Änderungen.

Für die Überladung, die ein Zeichenfolgenargument empfängt, können Sie die Zeichenfolge in ein Spaltenobjekt umwandeln, indem Sie die com.snowflake.snowpark.functions.col-Funktion als Problemumgehung verwenden.

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")))
Copy

Zusätzliche Empfehlungen

SPRKSCL1110

Bemerkung

Dieser Problemcode ist jetzt veraltet

Meldung: Reader-Methode wird nicht unterstützt _ method name _.

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Methode erkennt, die von Snowflake in der DataFrameReader-Methodenverkettung nicht unterstützt wird. Dann könnte sich dies auf die Migration der Reader-Anweisung auswirken.

Szenario

Eingabe

Nachfolgend sehen Sie ein Beispiel für eine DataFrameReader-Methodenverkettung, bei der die Lastmethode nicht von Snowflake unterstützt wird.

spark.read.
    format("net.snowflake.spark.snowflake").
    option("query", s"select * from $tablename")
    load()
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1110 hinzu, um Sie darauf hinzuweisen, dass die Lademethode von Snowpark nicht unterstützt wird. Dann könnte sich dies auf die Migration der Reader-Anweisung auswirken.

session.sql(s"select * from $tablename")
/*EWI: SPRKSCL1110 => Reader method not supported .load()*/
Copy

Empfohlene Korrektur

Lesen Sie die Snowpark-Dokumentation für den Reader hier, um die von Snowflake unterstützten Methoden kennenzulernen.

Zusätzliche Empfehlungen

SPRKSCL1100

Dieser Problemcode gilt als veraltet bereits seit Spark Conversion Core 2.3.22

Meldung: Neupartitionierung wird nicht unterstützt.

Kategorie: Parsing-Fehler.

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.DataFrame.repartition-Funktion feststellt, die von Snowpark nicht unterstützt wird. Snowflake verwaltet den Speicher und die Workload auf den Clustern, so dass eine Neupartitionierung nicht erforderlich ist.

Szenario

Eingabe

Nachfolgend finden Sie ein Beispiel für die org.apache.spark.sql.DataFrame.repartition-Funktion, die verwendet wird, um eine neue DataFrame zurückzugeben, die durch die angegebenen Partitionierungsausdrücke partitioniert wurde.

    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)
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1100 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht unterstützt wird.

    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)
Copy

Empfohlene Korrektur

Da Snowflake den Speicher und die Workload auf den Clustern verwaltet, ist eine Neupartitionierung nicht erforderlich. Das bedeutet, dass die Verwendung von repartition vor der Verknüpfung überhaupt nicht erforderlich ist.

    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)
Copy

Zusätzliche Empfehlungen

  • Das Snowflake Architekturhandbuch gibt Ihnen einen Einblick in die Snowflake-Speicherverwaltung.

  • Die Snowpark Datenframe-Referenz könnte nützlich sein, wenn es darum geht, ein bestimmtes Szenario anzupassen, ohne dass eine Neupartitionierung erforderlich ist.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an sma-support@snowflake.com senden oder ein Problem im SMA melden.

SPRKSCL1151

Meldung: org.apache.spark.sql.functions.var_samp hat eine Problemumgehung, siehe Dokumentation für weitere Informationen

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.functions.var_samp-Funktion feststellt, für die es eine Problemumgehung gibt.

Szenario

Eingabe

Nachfolgend sehen Sie ein Beispiel für die org.apache.spark.sql.functions.var_samp-Funktion, die zunächst mit einem Spaltennamen als Argument und dann mit einem Spaltenobjekt verwendet wird.

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")))
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1151 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird, aber es eine Problemumgehung gibt.

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")))
Copy

Empfohlene Korrektur

Snowpark verfügt über eine äquivalente var_samp-Funktion, die ein Spaltenobjekt als Argument erhält. Aus diesem Grund wird die Spark-Überladung, die ein Spaltenobjekt als Argument erhält, direkt von Snowpark unterstützt und erfordert keine Änderungen.

Für die Überladung, die ein Zeichenfolgenargument empfängt, können Sie die Zeichenfolge in ein Spaltenobjekt umwandeln, indem Sie die com.snowflake.snowpark.functions.col-Funktion als Problemumgehung verwenden.

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")))
Copy

Zusätzliche Empfehlungen


Beschreibung: >- Das Format des Readers auf DataFrameReader-Methodenverkettung ist nicht eines der von Snowpark definierten.


SPRKSCL1165

Meldung: Reader-Format auf DataFrameReader-Methodenverkettung kann nicht definiert werden

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA feststellt, dass das Format des Readers in der DataFrameReader-Methodenverkettung nicht zu den folgenden von Snowpark unterstützten Formaten gehört: avro, csv, json, orc, parquet und xml. Daher kann SMA nicht feststellen, ob Einstellungsoptionen definiert sind oder nicht.

Szenario

Eingabe

Unten sehen Sie ein Beispiel für eine DataFrameReader-Methodenverkettung, bei der SMA das Format des Readers bestimmen kann.

spark.read.format("net.snowflake.spark.snowflake")
                 .option("query", s"select * from $tableName")
                 .load()
Copy

Ausgabe

Der SMA fügt dem Ausgabecode das EWI SPRKSCL1165 hinzu, um Sie darauf hinzuweisen, dass das Format des Readers nicht in der gebenden DataFrameReader-Methodenverkettung bestimmt werden kann.

/*EWI: SPRKSCL1165 => Reader format on DataFrameReader method chaining can't be defined*/
spark.read.option("query", s"select * from $tableName")
                 .load()
Copy

Empfohlene Korrektur

In der Snowpark-Dokumentation finden Sie hier weitere Informationen zum Reader-Format.

Zusätzliche Empfehlungen

SPRKSCL1134

Meldung: org.apache.spark.sql.functions.log bietet eine Problemumgehung, siehe Dokumentation für weitere Informationen

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.functions.log-Funktion feststellt, für die es eine Problemumgehung gibt.

Szenario

Eingabe

Nachfolgend finden Sie ein Beispiel für die org.apache.spark.sql.functions.log-Funktion, die diese EWI erzeugt.

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")))
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1134 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird, aber es eine Problemumgehung gibt.

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")))
Copy

Empfohlene Korrektur

Im Folgenden finden Sie die verschiedenen Umgehungsmöglichkeiten für alle Überladungen der log-Funktion.

1. def log(base: Double, columnName: String): Spalte

Sie können die Basis mit der com.snowflake.snowpark.functions.lit-Funktion in ein Spaltenobjekt umwandeln und den Spaltennamen mit der com.snowflake.snowpark.functions.col-Funktion in ein Spaltenobjekt umwandeln.

val result1 = df.withColumn("log_value", log(lit(10), col("value")))
Copy

2. def log(base: Double, a: Column): Spalte

Sie können die Basis in ein Spaltenobjekt umwandeln, indem Sie die com.snowflake.snowpark.functions.lit-Funktion verwenden.

val result2 = df.withColumn("log_value", log(lit(10), col("value")))
Copy

3.def log(columnNam: String): Spalte

Sie können lit(Math.E) als erstes Argument übergeben und den Spaltennamen mit der com.snowflake.snowpark.functions.col-Funktion in ein Spaltenobjekt umwandeln und dieses als zweites Argument übergeben.

val result3 = df.withColumn("log_value", log(lit(Math.E), col("value")))
Copy

4. def log(e: Column): Spalte

Sie können lit(Math.E) als erstes Argument und das Spaltenobjekt als zweites Argument übergeben.

val result4 = df.withColumn("log_value", log(lit(Math.E), col("value")))
Copy

Zusätzliche Empfehlungen

SPRKSCL1125

Warnung

Dieser Fehlercode ist veraltet seit Spark Conversion Core 2.9.0

Meldung: org.apache.spark.sql.functions.count hat eine Problemumgehung, siehe Dokumentation für weitere Informationen

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.functions.count-Funktion feststellt, für die es eine Problemumgehung gibt.

Szenario

Eingabe

Nachfolgend sehen Sie ein Beispiel für die org.apache.spark.sql.functions.count-Funktion, die zunächst mit einem Spaltennamen als Argument und anschließend mit einem Spaltenobjekt verwendet wird.

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"))
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1125 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird, aber es eine Problemumgehung gibt.

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"))
Copy

Empfohlene Korrektur

Snowpark verfügt über eine äquivalente count-Funktion, die ein Spaltenobjekt als Argument erhält. Aus diesem Grund wird die Spark-Überladung, die ein Spaltenobjekt als Argument erhält, direkt von Snowpark unterstützt und erfordert keine Änderungen.

Für die Überladung, die ein Zeichenfolgenargument empfängt, können Sie die Zeichenfolge in ein Spaltenobjekt umwandeln, indem Sie die com.snowflake.snowpark.functions.col-Funktion als Problemumgehung verwenden.

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"))
Copy

Zusätzliche Empfehlungen

SPRKSCL1174

Meldung: Die Ein-Parameter-Funktion udf wird in Snowpark unterstützt, erfordert aber möglicherweise einen manuellen Eingriff. Bitte lesen Sie in der Dokumentation nach, wie Sie den Code manuell ändern können, damit er in Snowpark funktioniert.

Kategorie: Warnung.

Beschreibung

Dieses Problem tritt auf, wenn SMA die Verwendung der Ein-Parameter-org.apache.spark.sql.functions.udf-Funktion im Code erkennt. Dann ist möglicherweise ein manueller Eingriff erforderlich.

Snowpark API bietet eine äquivalente com.snowflake.snowpark.functions.udf-Funktion, mit der Sie eine benutzerdefinierte Funktion aus einem Lambda oder einer Funktion in Scala erstellen können. Es gibt jedoch einige Beschränkungen bei der Erstellung von udf in Snowpark, die es erforderlich machen können, dass Sie einige manuelle Änderungen an Ihrem Code vornehmen müssen, damit er richtig funktioniert.

Szenarien

Die Snowpark udf-Funktion sollte in einer Vielzahl von Fällen wie vorgesehen funktionieren, ohne dass ein manuelles Eingreifen erforderlich ist. Es gibt jedoch einige Szenarien, in denen Sie Ihren Code manuell ändern müssen, damit er in Snowpark funktioniert. Einige dieser Szenarien sind unten aufgeführt:

Szenario 1

Eingabe

Nachfolgend sehen Sie ein Beispiel für die Erstellung von UDFs in einem Objekt mit der Eigenschaft „App Trait“.

Die Scala-App-Eigenschaft vereinfacht die Erstellung ausführbarer Programme, indem sie eine main-Methode bereitstellt, die den Code innerhalb der Objektdefinition automatisch ausführt. Die Erweiterung von App verzögert die Initialisierung der Felder, bis die main-Methode ausgeführt wird, was sich auf die UDFs-Definitionen auswirken kann, wenn diese auf initialisierten Feldern beruhen. Das bedeutet, dass, wenn ein App-Objekt erweitert und die udf ein Objektfeld referenziert, die udf-Definition, die in Snowflake hochgeladen wird, den initialisierten Wert des Feldes nicht enthält. Dies kann dazu führen, dass null Werte von der udf zurückgegeben werden.

Im folgenden Code zum Beispiel wird die Variable myValue in der udf-Definition zu null aufgelöst:

object Main extends App {
  ...
  val myValue = 10
  val myUdf = udf((x: Int) => x + myValue) // myValue in the `udf` definition will resolve to null
  ...
}
Copy

Ausgabe

Die SMA fügt dem Ausgabecode das EWI SPRKSCL1174 hinzu, um Sie darauf hinzuweisen, dass die Ein-Parameter-udf-Funktion in Snowpark unterstützt wird, aber einen manuellen Eingriff erfordert.

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
  ...
}
Copy

Empfohlene Korrektur

Um dieses Problem zu vermeiden, empfiehlt es sich, App nicht zu erweitern und eine eigene main- Methode für Ihren Code zu implementieren. Dadurch wird sichergestellt, dass die Objektfelder initialisiert werden, bevor udf-Definitionen erstellt und zu Snowflake hochgeladen werden.

object Main {
  ...
  def main(args: Array[String]): Unit = {
    val myValue = 10
    val myUdf = udf((x: Int) => x + myValue)
  }
  ...
}
Copy

Weitere Einzelheiten zu diesem Thema finden Sie unter Vorbehalt bei der Erstellung von UDFs in einem Objekt mit der Eigenschaft „App Trait“ .

Szenario 2

Eingabe

Nachfolgend sehen Sie ein Beispiel für die Erstellung von UDFs in Jupyter Notebooks.

def myFunc(s: String): String = {
  ...
}

val myFuncUdf = udf((x: String) => myFunc(x))
df1.select(myFuncUdf(col("name"))).show()
Copy

Ausgabe

Die SMA fügt dem Ausgabecode das EWI SPRKSCL1174 hinzu, um Sie darauf hinzuweisen, dass die Ein-Parameter-udf-Funktion in Snowpark unterstützt wird, aber einen manuellen Eingriff erfordert.

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()
Copy

Empfohlene Korrektur

Um eine udf in einem Jupyter Notebook zu erstellen, sollten Sie die Implementierung Ihrer Funktion in einer Klasse definieren, die Serializable erweitert. Sie sollten ihn zum Beispiel manuell in diesen umwandeln:

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()
Copy

Weitere Einzelheiten zur Erstellung von UDFs in Jupyter Notebooks finden Sie unter Erstellen von UDFs in Jupyter Notebooks.

Zusätzliche Empfehlungen

SPRKSCL1000

Meldung: Die Spark-Core-Version des Quellprojekts ist _ version number _, die von Snowpark unterstützte Spark-Core-Version ist 2.12:3.1.2, so dass es funktionale Unterschiede zwischen den vorhandenen Zuordnungen geben kann

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Version des spark-core erkennt, die von SMA nicht unterstützt wird. Daher kann es funktionale Unterschiede zwischen den vorhandenen Zuordnungen geben und die Ausgabe könnte ein unerwartetes Verhalten aufweisen.

Zusätzliche Empfehlungen

  • Die von SMA unterstützte Spark-Core-Version ist 2.12:3.1.2. Ziehen Sie in Erwägung, die Version Ihres Quellcodes zu ändern.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an sma-support@snowflake.com senden oder ein Problem im SMA melden.

SPRKSCL1140

Meldung: org.apache.spark.sql.functions.stddev hat eine Problemumgehung, siehe Dokumentation für weitere Informationen

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.functions.stddev-Funktion feststellt, für die es eine Problemumgehung gibt.

Szenario

Eingabe

Nachfolgend sehen Sie ein Beispiel für die org.apache.spark.sql.functions.stddev-Funktion, die zunächst mit einem Spaltennamen als Argument und dann mit einem Spaltenobjekt verwendet wird.

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")))
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1140 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird, aber es eine Problemumgehung gibt.

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")))
Copy

Empfohlene Korrektur

Snowpark verfügt über eine äquivalente stddev-Funktion, die ein Spaltenobjekt als Argument erhält. Aus diesem Grund wird die Spark-Überladung, die ein Spaltenobjekt als Argument erhält, direkt von Snowpark unterstützt und erfordert keine Änderungen.

Für die Überladung, die ein Zeichenfolgenargument empfängt, können Sie die Zeichenfolge in ein Spaltenobjekt umwandeln, indem Sie die com.snowflake.snowpark.functions.col-Funktion als Problemumgehung verwenden.

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")))
Copy

Zusätzliche Empfehlungen

SPRKSCL1111

Bemerkung

Dieser Problemcode ist jetzt veraltet

Meldung: CreateDecimalType wird nicht unterstützt.

Kategorie: Konvertierungsfehler.

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.types.DataTypes.CreateDecimalType-Funktion feststellt.

Szenario

Eingabe

Im Folgenden finden Sie ein Beispiel für die Verwendung der org.apache.spark.sql.types.DataTypes.CreateDecimalType-Funktion.

var result = DataTypes.createDecimalType(18, 8)
Copy

Ausgabe

Die SMA fügt dem Ausgabecode das EWI SPRKSCL1111 hinzu, um Sie darauf hinzuweisen, dass die CreateDecimalType-Funktion von Snowpark nicht unterstützt wird.

/*EWI: SPRKSCL1111 => CreateDecimalType is not supported*/
var result = createDecimalType(18, 8)
Copy

Empfohlene Korrektur

Es gibt noch keine empfohlene Korrektur.

Meldung: Die Spark-Session-Builder-Option wird nicht unterstützt.

Kategorie: Konvertierungsfehler.

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.SparkSession.Builder.config-Funktion feststellt, die eine Option der Spark-Sitzung setzt und von Snowpark nicht unterstützt wird.

Szenario

Eingabe

Nachfolgend finden Sie ein Beispiel für die org.apache.spark.sql.SparkSession.Builder.config-Funktion, mit der Sie eine Option in der Spark-Sitzung festlegen können.

val spark = SparkSession.builder()
           .master("local")
           .appName("testApp")
           .config("spark.sql.broadcastTimeout", "3600")
           .getOrCreate()
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1104 hinzu, um Sie darauf hinzuweisen, dass die config-Methode von Snowpark nicht unterstützt wird. In diesem Fall ist es nicht möglich, Optionen in der Spark-Sitzung über die config-Funktion einzustellen, was sich auf die Migration der Spark-Sitzungsanweisung auswirken kann.

val spark = Session.builder.configFile("connection.properties")
/*EWI: SPRKSCL1104 => SparkBuilder Option is not supported .config("spark.sql.broadcastTimeout", "3600")*/
.create()
Copy

Empfohlene Korrektur

Um die Sitzung zu erstellen, müssen Sie die richtige Snowflake Snowpark-Konfiguration hinzufügen.

In diesem Beispiel wird eine configs-Variable verwendet.

    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
Copy

Außerdem wird die Verwendung einer configFile (profile.properties) mit den Verbindungsinformationen empfohlen:

## 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>
Copy

Und mit der Session.builder.configFile kann die Sitzung erstellt werden:

val session = Session.builder.configFile("/path/to/properties/file").create
Copy

Zusätzliche Empfehlungen

SPRKSCL1101

Dieser Problemcode gilt als veraltet bereits seit Spark Conversion Core 2.3.22

Nachricht: Broadcast wird nicht unterstützt

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.functions.broadcast-Funktion feststellt, die von Snowpark nicht unterstützt wird. Diese Funktion wird nicht unterstützt, da Snowflake keine Broadcast-Variablen unterstützt.

Szenario

Eingabe

Nachfolgend finden Sie ein Beispiel für die org.apache.spark.sql.functions.broadcast-Funktion, mit der Sie ein Broadcast-Objekt erstellen, das auf jedem Spark-Cluster verwendet wird:

    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")
    )
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1101 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht unterstützt wird.

    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")
    )
Copy

Empfohlene Korrektur

Da Snowflake den Speicher und die Workload auf den Clustern verwaltet, sind Broadcast-Objekte nicht anwendbar. Das bedeutet, dass der Einsatz von Broadcasting möglicherweise gar nicht erforderlich ist, aber jeder Fall sollte weiter analysiert werden.

Die empfohlene Vorgehensweise besteht darin, einen Spark-Datenframe durch einen regulären Snowpark-Datenframe zu ersetzen oder eine Datenframe-Methode wie Join zu verwenden.

Bei der vorgeschlagenen Eingabe besteht die Korrektur darin, die Verknüpfung so anzupassen, dass der collegeDF-Datenframe direkt verwendet wird, ohne dass eine Übertragung für den Datenframe verwendet wird.

    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()
Copy

Zusätzliche Empfehlungen

SPRKSCL1150

Meldung: org.apache.spark.sql.functions.var_pop verfügt über eine Problemumgehung, siehe Dokumentation für weitere Informationen

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.functions.var_pop–Funktion feststellt, für die es eine Problemumgehung gibt.

Szenario

Eingabe

Nachfolgend sehen Sie ein Beispiel für die org.apache.spark.sql.functions.var_pop-Funktion, die zunächst mit einem Spaltennamen als Argument und dann mit einem Spaltenobjekt verwendet wird.

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")))
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1150 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird, aber es eine Problemumgehung gibt.

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")))
Copy

Empfohlene Korrektur

Snowpark hat eine äquivalente var_pop-Funktion, die ein Spaltenobjekt als Argument erhält. Aus diesem Grund wird die Spark-Überladung, die ein Spaltenobjekt als Argument erhält, direkt von Snowpark unterstützt und erfordert keine Änderungen.

Für die Überladung, die ein Zeichenfolgenargument empfängt, können Sie die Zeichenfolge in ein Spaltenobjekt umwandeln, indem Sie die com.snowflake.snowpark.functions.col-Funktion als Problemumgehung verwenden.

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")))
Copy

Zusätzliche Empfehlungen


Beschreibung: >- Der Parameter der org.apache.spark.sql.DataFrameReader.option-Funktion ist nicht definiert.


SPRKSCL1164

Bemerkung

Dieser Problemcode ist jetzt veraltet

Meldung: Der Parameter ist nicht für org.apache.spark.sql.DataFrameReader.option definiert

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA feststellt, dass der Parameter von org.apache.spark.sql.DataFrameReader. option nicht definiert ist.

Szenario

Eingabe

Nachfolgend finden Sie ein Beispiel für einen nicht definierten Parameter für die org.apache.spark.sql.DataFrameReader.option-Funktion.

spark.read.option("header", True).json(path)
Copy

Ausgabe

SMA fügt dem Ausgabecode das EWI SPRKSCL1164 hinzu, um Sie darauf hinzuweisen, dass der Parameter für die org.apache.spark.sql.DataFrameReader.option-Funktion nicht definiert ist.

/*EWI: SPRKSCL1164 => The parameter header=True is not supported for org.apache.spark.sql.DataFrameReader.option*/
spark.read.option("header", True).json(path)
Copy

Empfohlene Korrektur

Suchen Sie in der Snowpark-Dokumentation nach Reader-Format-Optionen hier, um die definierten Optionen zu identifizieren.

Zusätzliche Empfehlungen

SPRKSCL1135

Warnung

Dieser Problemcode ist veraltet seit [Spark Conversion Core 4.3.2](../../../general/release-notes/README. md#spark-conversion-core-version-432)

Meldung: org.apache.spark.sql.functions.mean verfügt über eine Problemumgehung, siehe Dokumentation für weitere Informationen

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der Funktion org.apache.spark.sql.functions.mean feststellt, für die es eine Problemumgehung gibt.

Szenario

Eingabe

Nachfolgend sehen Sie ein Beispiel für die org.apache.spark.sql.functions.mean-Funktion, die zunächst mit einem Spaltennamen als Argument und anschließend mit einem Spaltenobjekt verwendet wird.

val df = Seq(1, 3, 10, 1, 3).toDF("value")
val result1 = df.select(mean("value"))
val result2 = df.select(mean(col("value")))
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1135 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird, aber es eine Problemumgehung gibt.

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")))
Copy

Empfohlene Korrektur

Snowpark verfügt über eine äquivalente mean-Funktion, die ein Spaltenobjekt als Argument erhält. Aus diesem Grund wird die Spark-Überladung, die ein Spaltenobjekt als Argument erhält, direkt von Snowpark unterstützt und erfordert keine Änderungen.

Für die Überladung, die ein Zeichenfolgenargument empfängt, können Sie die Zeichenfolge in ein Spaltenobjekt umwandeln, indem Sie die com.snowflake.snowpark.functions.col-Funktion als Problemumgehung verwenden.

val df = Seq(1, 3, 10, 1, 3).toDF("value")
val result1 = df.select(mean(col("value")))
val result2 = df.select(mean(col("value")))
Copy

Zusätzliche Empfehlungen

SPRKSCL1115

Warnung

Dieser Problemcode ist veraltet bereits seit Spark Conversion Core Version 4.6.0

Meldung: org.apache.spark.sql.functions.round verfügt über eine Problemumgehung, siehe Dokumentation für weitere Informationen

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.functions.round-Funktion feststellt, für die es eine Problemumgehung gibt.

Szenario

Eingabe

Nachfolgend finden Sie ein Beispiel für die org.apache.spark.sql.functions.round-Funktion, die diese EWI erzeugt.

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))
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1115 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird, aber es eine Problemumgehung gibt.

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))
Copy

Empfohlene Korrektur

Snowpark verfügt über eine äquivalente round-Funktion, die ein Spaltenobjekt als Argument erhält. Aus diesem Grund wird die Spark-Überladung, die ein Spaltenobjekt als Argument erhält, direkt von Snowpark unterstützt und erfordert keine Änderungen.

Für die Überladung, die ein Spaltenobjekt und eine Skala empfängt, können Sie die Skala in ein Spaltenobjekt umwandeln, indem Sie die com.snowflake.snowpark.functions.lit–Funktion als Problemumgehung verwenden.

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)))
Copy

Zusätzliche Empfehlungen

SPRKSCL1144

Meldung: Die Symboltabelle konnte nicht geladen werden

Kategorie: Parsing-Fehler

Beschreibung

Dieses Problem tritt auf, wenn ein kritischer Fehler bei der Ausführung von SMA auftritt. Da die Symboltabelle nicht geladen werden kann, kann SMA den Bewertungs- oder Konvertierungsprozess nicht starten.

Zusätzliche Empfehlungen

  • Es ist unwahrscheinlich, dass es sich um einen Fehler im Quellcode selbst handelt, sondern eher um einen Fehler bei der Verarbeitung des Quellcodes durch SMA. Die beste Lösung wäre, ein Problem in der SMA zu melden.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an sma-support@snowflake.com senden oder ein Problem im SMA melden.

SPRKSCL1170

Bemerkung

Dieser Problemcode ist jetzt veraltet

Meldung: sparkConfig member key wird nicht mit plattformspezifischem Schlüssel unterstützt.

Kategorie: Konvertierungsfehler

Beschreibung

Wenn Sie eine ältere Version verwenden, führen Sie ein Upgrade auf die neueste Version aus.

Zusätzliche Empfehlungen

  • Aktualisieren Sie Ihre Anwendung auf die neueste Version.

  • Wenn Sie weitere Unterstützung benötigen, können Sie uns eine E-Mail an sma-support@snowflake.com senden oder ein Problem im SMA melden.

SPRKSCL1121

Meldung: org.apache.spark.sql.functions.atan verfügt über eine Problemumgehung, siehe Dokumentation für weitere Informationen

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.functions.atan-Funktion feststellt, für die es eine Problemumgehung gibt.

Szenario

Eingabe

Nachfolgend sehen Sie ein Beispiel für die org.apache.spark.sql.functions.atan-Funktion, die zunächst mit einem Spaltennamen als Argument und anschließend mit einem Spaltenobjekt verwendet wird.

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")))
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1121 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird, aber es eine Problemumgehung gibt.

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")))
Copy

Empfohlene Korrektur

Snowpark verfügt über eine äquivalente atan-Funktion, die ein Spaltenobjekt als Argument erhält. Aus diesem Grund wird die Spark-Überladung, die ein Spaltenobjekt als Argument erhält, direkt von Snowpark unterstützt und erfordert keine Änderungen.

Für die Überladung, die ein Zeichenfolgenargument empfängt, können Sie die Zeichenfolge in ein Spaltenobjekt umwandeln, indem Sie die com.snowflake.snowpark.functions.col-Funktion als Problemumgehung verwenden.

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")))
Copy

Zusätzliche Empfehlungen

SPRKSCL1131

Meldung: org.apache.spark.sql.functions.grouping hat eine Problemumgehung, siehe Dokumentation für weitere Informationen

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.functions.grouping-Funktion feststellt, für die es eine Problemumgehung gibt.

Szenario

Eingabe

Nachfolgend sehen Sie ein Beispiel für die org.apache.spark.sql.functions.grouping-Funktion, die zunächst mit einem Spaltennamen als Argument und anschließend mit einem Spaltenobjekt verwendet wird.

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"))
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1131 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird, aber es eine Problemumgehung gibt.

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"))
Copy

Empfohlene Korrektur

Snowpark verfügt über eine äquivalente Funktion grouping-Funktion, die ein Spaltenobjekt als Argument erhält. Aus diesem Grund wird die Spark-Überladung, die ein Spaltenobjekt als Argument erhält, direkt von Snowpark unterstützt und erfordert keine Änderungen.

Für die Überladung, die ein Zeichenfolgenargument empfängt, können Sie die Zeichenfolge in ein Spaltenobjekt umwandeln, indem Sie die com.snowflake.snowpark.functions.col-Funktion als Problemumgehung verwenden.

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"))
Copy

Zusätzliche Empfehlungen

SPRKSCL1160

Bemerkung

Dieser Problemcode gilt als veraltet bereits seit Spark Conversion Core 4.1.0

Meldung: org.apache.spark.sql.functions.sum verfügt über eine Problemumgehung, siehe Dokumentation für weitere Informationen

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.functions.sum-Funktion feststellt, für die es eine Problemumgehung gibt.

Szenario

Eingabe

Nachfolgend sehen Sie ein Beispiel für die Funktion org.apache.spark.sql.functions.sum, die diese EWI erzeugt. In diesem Beispiel wird die sum-Funktion verwendet, um die Summe der ausgewählten Spalte zu berechnen.

val df = Seq("1", "2", "3", "4", "5").toDF("elements")
val result1 = sum(col("elements"))
val result2 = sum("elements")
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1160 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird, aber es eine Problemumgehung gibt.

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")
Copy

Empfohlene Korrektur

Snowpark verfügt über eine äquivalente sum-Funktion, die ein Spaltenobjekt als Argument erhält. Aus diesem Grund wird die Spark-Überladung, die ein Spaltenobjekt als Argument erhält, direkt von Snowpark unterstützt und erfordert keine Änderungen.

Für die Überladung, die ein Zeichenfolgenargument empfängt, können Sie die Zeichenfolge in ein Spaltenobjekt umwandeln, indem Sie die com.snowflake.snowpark.functions.col-Funktion als Problemumgehung verwenden.

val df = Seq("1", "2", "3", "4", "5").toDF("elements")
val result1 = sum(col("elements"))
val result2 = sum(col("elements"))
Copy

Zusätzliche Empfehlungen

SPRKSCL1154

Meldung: org.apache.spark.sql.functions.ceil hat eine Problemumgehung, siehe Dokumentation für weitere Informationen

Kategorie: Warnung

Beschreibung

Dieses Problem tritt auf, wenn SMA eine Verwendung der org.apache.spark.sql.functions.ceil-Funktion feststellt, für die es eine Problemumgehung gibt.

Szenario

Eingabe

Nachfolgend sehen Sie ein Beispiel für die org.apache.spark.sql.functions.ceil-Funktion, die zunächst mit einem Spaltennamen als Argument, dann mit einem Spaltenobjekt und schließlich mit einem Spaltenobjekt und einer Skala verwendet wird.

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)))
Copy

Ausgabe

Die SMA fügt dem Ausgabecode die EWI SPRKSCL1154 hinzu, um Sie darauf hinzuweisen, dass diese Funktion von Snowpark nicht vollständig unterstützt wird, aber es eine Problemumgehung gibt.

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)))
Copy

Empfohlene Korrektur

Snowpark verfügt über eine äquivalente ceil-Funktion, die ein Spaltenobjekt als Argument erhält. Aus diesem Grund wird die Spark-Überladung, die ein Spaltenobjekt als Argument erhält, direkt von Snowpark unterstützt und erfordert keine Änderungen.

Für die Überladung, die ein Zeichenfolgenargument empfängt, können Sie die Zeichenfolge in ein Spaltenobjekt umwandeln, indem Sie die com.snowflake.snowpark.functions.col-Funktion als Problemumgehung verwenden.

Für die Überladung, die ein Spaltenobjekt und eine Skala empfängt, können Sie die callBuiltin-Funktion verwenden, um die Snowflake Builtin-CEIL-Funktion aufzurufen. Um sie zu verwenden, sollten Sie die „ceil“-Zeichenfolge als erstes Argument, die Spalte als zweites Argument und die Skala als drittes Argument übergeben.

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)))
Copy

Zusätzliche Empfehlungen

SPRKSCL1105

Dieser Problemcode ist jetzt veraltet

Meldung: Der Wert des Writer-Formats wird nicht unterstützt.

Kategorie: Konvertierungsfehler

Beschreibung

Dieses Problem tritt auf, wenn org.apache.spark.sql.DataFrameWriter.format ein Argument hat, das von Snowpark nicht unterstützt wird.

Szenarien

Es gibt einige Szenarien, die von der Art des Formats abhängen, das Sie zu speichern versuchen. Es kann ein unterstütztes oder nicht unterstütztes Format sein.

Szenario 1

Eingabe

Das Tool analysiert den Typ des Formats, das Sie zu speichern versuchen. Die unterstützten Formate sind:

  • csv

  • json

  • orc

  • parquet

  • text

    dfWrite.write.format("csv").save(path)
Copy

Ausgabe

Das Tool wandelt die format-Methode in einen csv-Methodeaufruf um, wenn die save-Funktion einen Parameter hat.

    dfWrite.write.csv(path)
Copy

Empfohlene Korrektur

In diesem Fall zeigt das Tool die EWI nicht an, d. h. es ist keine Korrektur erforderlich.

Szenario 2

Eingabe

Das folgende Beispiel zeigt, wie das Tool die format-Methode umwandelt, wenn ein net.snowflake.spark.snowflake-Wert übergeben wird.

dfWrite.write.format("net.snowflake.spark.snowflake").save(path)
Copy

Ausgabe

Das Tool zeigt EWI SPRKSCL1105 an, was darauf hinweist, dass der net.snowflake.spark.snowflake-Wert nicht unterstützt wird.

/*EWI: SPRKSCL1105 => Writer format value is not supported .format("net.snowflake.spark.snowflake")*/
dfWrite.write.format("net.snowflake.spark.snowflake").save(path)
Copy

Empfohlene Korrektur

Für die nicht unterstützten Szenarien gibt es keine spezifische Korrektur, da es von den Dateien abhängt, die zu lesen versucht werden.

Szenario 3

Eingabe

Das folgende Beispiel zeigt, wie das Tool die format-Methode umwandelt, wenn es eine csv übergibt, aber stattdessen eine Variable verwendet.

val myFormat = "csv"
dfWrite.write.format(myFormat).save(path)
Copy

Ausgabe

Da das Tool den Wert der Variable zur Laufzeit nicht ermitteln kann, zeigt es die EWI SPRKSCL1163 an, die angibt, dass der Wert nicht unterstützt wird.

val myFormat = "csv"
/*EWI: SPRKSCL1163 => format_type is not a literal and can't be evaluated*/
dfWrite.write.format(myFormat).load(path)
Copy

Empfohlene Korrektur

Als Problemumgehung können Sie den Wert der Variablen überprüfen und ihn als Zeichenfolge zum Aufruf von Format hinzufügen.

Zusätzliche Empfehlungen