View a markdown version of this page

Erstellen eines ML-Eingabekanals in AWS Clean Rooms ML - AWS Clean Rooms

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Erstellen eines ML-Eingabekanals in AWS Clean Rooms ML

Voraussetzungen:

  • Und AWS-Konto mit Zugriff auf AWS Clean Rooms

  • Eine Zusammenarbeit, die dort eingerichtet AWS Clean Rooms wurde, wo Sie den ML-Eingabekanal erstellen möchten

  • Berechtigungen zum Abfragen von Daten und zum Erstellen von ML-Eingabekanälen in der Kollaboration.

  • (Optional) Ein vorhandener Modellalgorithmus, der dem ML-Eingabekanal zugeordnet werden soll, oder Berechtigungen zum Erstellen eines neuen

  • (Optional) Tabellen mit Analyseregeln, die für das angegebene Modell ausgeführt werden können.

  • (Optional) Eine vorhandene SQL-Abfrage oder Analysevorlage, die zum Generieren des Datensatzes verwendet werden soll

  • (Optional) Eine vorhandene Servicerolle mit entsprechenden Berechtigungen oder Berechtigungen zum Erstellen einer neuen Servicerolle

  • (Optional) Ein benutzerdefinierter AWS KMS Schlüssel, wenn Sie Ihren eigenen Verschlüsselungsschlüssel verwenden möchten

  • Entsprechende Berechtigungen zum Erstellen und Verwalten von ML-Modellen in der Zusammenarbeit

Ein ML-Eingabekanal ist ein Datensatz, der aus einer bestimmten Datenabfrage erstellt wird. Mitglieder, die Daten abfragen können, können ihre Daten für Training und Inferenz vorbereiten, indem sie einen ML-Eingabekanal erstellen. Durch die Erstellung eines ML-Eingabekanals können diese Daten in verschiedenen Trainingsmodellen innerhalb derselben Zusammenarbeit verwendet werden. Sie sollten separate ML-Eingangskanäle für Training und Inferenz erstellen.

Um einen ML-Eingabekanal zu erstellen, müssen Sie die SQL-Abfrage angeben, die zum Abfragen der Eingabedaten und zum Erstellen des ML-Eingabekanals verwendet wird. Die Ergebnisse dieser Abfrage werden niemals mit einem Mitglied geteilt und verbleiben innerhalb der Grenzen von Clean Rooms ML. Die Referenz Amazon Resource Name (ARN) wird in den nächsten Schritten verwendet, um ein Modell zu trainieren oder Inferenzen durchzuführen.

Console
Um einen ML-Eingangskanal (Konsole) zu erstellen
  1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die AWS Clean Rooms Konsole unter https://console.aws.amazon.com/cleanrooms.

  2. Wählen Sie im linken Navigationsbereich Kollaborationen aus.

  3. Wählen Sie auf der Seite Kollaborationen die Kollaboration aus, für die Sie einen ML-Eingabekanal erstellen möchten.

  4. Nachdem die Kollaboration geöffnet wurde, wählen Sie den Tab ML-Modelle.

  5. Wählen Sie unter Benutzerdefinierte ML-Modelle im Abschnitt ML-Eingabekanäle die Option ML-Eingabekanal erstellen aus.

  6. Gehen Sie auf der Seite „ML-Eingabekanal erstellen“ für Details zum ML-Eingabekanal wie folgt vor:

    1. Geben Sie unter Name einen eindeutigen Namen für Ihren Kanal ein.

    2. (Optional) Gib unter Beschreibung eine Beschreibung deines Kanals ein.

    3. Wählen Sie unter Zugeordneter Modellalgorithmus den zu verwendenden Algorithmus aus.

      Wählen Sie „Modellalgorithmus zuordnen“, um einen neuen hinzuzufügen.

  7. Wählen Sie für Datensatz eine Methode zum Generieren des Trainingsdatensatzes aus:

    • Wählen Sie SQL-Abfrage, um die Ergebnisse einer SQL-Abfrage als Trainingsdatensatz zu verwenden.

      Wenn Sie eine SQL-Abfrage ausgewählt haben, geben Sie Ihre Abfrage in das SQL-Abfragefeld ein.

      (Optional) Um eine Abfrage zu importieren, die Sie kürzlich verwendet haben, wählen Sie Aus aktuellen Abfragen importieren.

    • Wählen Sie Analysevorlage, um die Ergebnisse einer Analysevorlage als Trainingsdatensatz zu verwenden.

      Warnung

      Die Generierung synthetischer Daten schützt davor, individuelle Merkmale abzuleiten, unabhängig davon, ob bestimmte Personen im ursprünglichen Datensatz vorhanden sind oder Lernattribute dieser Personen vorhanden sind. Sie verhindert jedoch nicht, dass literale Werte aus dem ursprünglichen Datensatz, einschließlich personenbezogener Daten (PII), im synthetischen Datensatz erscheinen.

      Wir empfehlen, Werte im Eingabedatensatz zu vermeiden, die nur einer betroffenen Person zugeordnet sind, da diese eine betroffene Person möglicherweise erneut identifizieren. Wenn beispielsweise nur ein Benutzer in einer Postleitzahl lebt, würde das Vorhandensein dieser Postleitzahl im synthetischen Datensatz bestätigen, dass dieser Benutzer im ursprünglichen Datensatz war. Techniken wie das Kürzen hochgenauer Werte oder das Ersetzen ungewöhnlicher Kataloge durch andere können verwendet werden, um dieses Risiko zu mindern. Diese Transformationen können Teil der Abfrage sein, die zur Erstellung des ML-Eingabekanals verwendet wird.

    1. Wenn keine Tabellen verknüpft sind, wählen Sie Tabelle zuordnen, um Tabellen mit einer Analyseregel hinzuzufügen, die für das angegebene Modell ausgeführt werden kann.

    2. Wählen Sie den Worker-Typ aus, der beim Erstellen dieses Datenkanals verwendet werden soll. Der Standard-Worker-Typ ist CR.1X. Geben Sie die Anzahl der zu verwendenden Arbeitskräfte an. Die Standardanzahl der Arbeiter ist 16. So geben Sie Spark-Eigenschaften an:

      1. Erweitern Sie Spark-Eigenschaften.

      2. Wählen Sie Spark-Eigenschaften hinzufügen.

      3. Wählen Sie im Dialogfeld mit den Spark-Eigenschaften einen Eigenschaftsnamen aus der Dropdownliste aus und geben Sie einen Wert ein.

      Die folgenden Tabellen enthalten eine Definition für jede Eigenschaft.

      Weitere Informationen zu Spark-Eigenschaften finden Sie unter Spark-Eigenschaften in der Apache Spark-Dokumentation.

      Anmerkung

      Sie können maximal 50 Spark-Eigenschaften konfigurieren. Jeder Eigenschaftswert kann bis zu 500 Zeichen lang sein.

      Eigenschaftenname Description Standardwert

      spark.task.maxFailures

      Steuert, wie oft eine Aufgabe hintereinander fehlschlagen kann, bevor der Job fehlschlägt. Erfordert einen Wert, der größer oder gleich 1 ist. Die Anzahl der zulässigen Wiederholungen entspricht diesem Wert minus 1. Die Anzahl der Fehler wird zurückgesetzt, wenn ein Versuch erfolgreich ist. Fehler bei verschiedenen Aufgaben summieren sich nicht bis zu diesem Limit.

      4

      spark.sql.files.max PartitionBytes

      Legt die maximale Anzahl von Byte fest, die beim Lesen aus dateibasierten Quellen wie Parquet, JSON und ORC in eine einzelne Partition gepackt werden sollen.

      128 MB

      spark.hadoop.fs.s3.max versucht es erneut

      Legt die maximale Anzahl von Wiederholungsversuchen für Amazon S3-Dateioperationen fest.

      (Keine)

      spark.network.timeout

      Legt das Standard-Timeout für alle Netzwerkinteraktionen fest. Überschreibt die folgenden Timeout-Einstellungen, wenn sie nicht konfiguriert sind:

      • spark.storage.block ManagerHeartbeatTimeoutMs

      • Zeitlimit für spark.shuffle.io.Connection

      • spark.rpc.askTimeout

      • spark.rpc.lookupTimeout

      120 Sekunden

      spark.rdd.com drücken

      Gibt an, ob serialisierte RDD-Partitionen mit spark.io.compression.codec komprimiert werden sollen. Gilt für StorageLevel.MEMORY _ONLY_SER in Java und Scala oder _ONLY in Python. StorageLevel.MEMORY Reduziert den Speicherplatz, erfordert jedoch zusätzliche CPU-Verarbeitungszeit.

      false

      spark.shuffle.spill.compress

      Gibt an, ob Shuffle-Spill-Daten mithilfe von spark.io.compression.codec komprimiert werden sollen.

      true

      spark.shuffle.compress

      Gibt an, ob Map-Ausgabedateien komprimiert werden sollen. Bei der Komprimierung wird spark.io.compression.codec verwendet.

      true

      spark.shuffle.service.index.cache.size

      Legt das Limit für die Cachegröße in Byte fest, sofern nicht anders angegeben.

      100 m

      spark.shuffle.io.max versucht es erneut

      Legt die maximale Anzahl von Wiederholungen für Abrufe fest, die aufgrund von Ausnahmen fehlschlagen. IO-related

      3

      spark.shuffle.io.RetryWait

      Legt die Wartezeit zwischen erneuten Abrufversuchen fest. Die maximale Verzögerung, die durch einen erneuten Versuch verursacht wird, beträgt standardmäßig 15 Sekunden und wird als MaxRetries * RetryWait berechnet.

      5 s

      Zeitüberschreitung bei spark.shuffle.io.connection

      Legt fest, dass das Timeout für hergestellte Verbindungen zwischen Shuffle-Servern und Clients als inaktiv markiert und geschlossen wird, wenn immer noch Abrufanfragen ausstehen, aber kein Verkehr auf dem Kanal vorhanden ist.

      (Wert von spark.network.timeout)

      spark.driver.max ResultSize

      Legt die Gesamtgrößenbeschränkung der serialisierten Ergebnisse aller Partitionen für jede Spark-Aktion in Byte fest. Sollte mindestens 1M oder 0 für unbegrenzt sein.

      1 g

      spark.memory.fraction

      Legt den Bruchteil von (Heap-Speicherplatz — 300 MB) fest, der für die Ausführung und Speicherung verwendet wird. Je niedriger dieser Wert ist, desto häufiger kommt es zu Verschüttungen und zum Löschen zwischengespeicherter Daten. Es wird empfohlen, diesen Wert auf dem Standardwert zu belassen.

      0.6

      spark.scheduler.mode

      Legt den Planungsmodus zwischen Aufträgen fest, die an dasselbe übergeben werden. SparkContext Kann auf FAIR gesetzt werden, um fair zu teilen, anstatt Jobs nacheinander in die Warteschlange zu stellen. Unterstützte Werte: FAIR, FIFO.

      FIFO

      spark.sql.adaptive.advisory PartitionSizeInBytes

      Legt die Zielgröße in Byte für Shuffle-Partitionen während der adaptiven Optimierung fest, wenn spark.sql.adaptive.enabled den Wert true hat. Steuert die Partitionsgröße, wenn kleine Partitionen zusammengeführt oder schiefe Partitionen aufgeteilt werden.

      (Wert von spark.sql.adaptive.shuffle.target) PostShuffleInputSize

      spark.sql.adaptive.auto BroadcastJoinThreshold

      Legt die maximale Tabellengröße in Byte für die Übertragung an Worker-Knoten bei Joins fest. Gilt nur im adaptiven Framework. Verwendet denselben Standardwert wie BroadcastJoinThreshold spark.sql.auto. Auf -1 setzen, um die Übertragung zu deaktivieren.

      (Keine)

      spark.sql.adaptive.coalesce Partitions.enabled

      Gibt an, ob zusammenhängende Shuffle-Partitionen auf der Grundlage von spark.sql.adaptive.advisory zusammengeführt werden sollen, um die Aufgabengröße zu optimieren. PartitionSizeInBytes Erfordert, dass spark.sql.adaptive.enabled den Wert true hat.

      true

      spark.sql.adaptive.coalesce Partitions.initialPartitionNum

      Definiert die anfängliche Anzahl von Shuffle-Partitionen vor dem Zusammenführen. Erfordert, dass sowohl spark.sql.adaptive.enabled als auch spark.sql.adaptive.coalesce den Wert true haben. Partitions.enabled Standardmäßig wird der Wert von spark.sql.shuffle.partitions verwendet.

      (Keine)

      spark.sql.adaptive.coalesce Partitions.minPartitionSize

      Legt die Mindestgröße für zusammengefügte Shuffle-Partitionen fest, um zu verhindern, dass Partitionen während der adaptiven Optimierung zu klein werden.

      1 MB

      spark.sql.adaptive.coalesce Partitions.parallelismFirst

      Gibt an, ob die Partitionsgrößen während der Partitionszusammenführung auf der Grundlage der Cluster-Parallelität statt auf spark.sql.adaptive.advisory berechnet werden sollen. PartitionSizeInBytes Generiert kleinere Partitionsgrößen als die konfigurierte Zielgröße, um die Parallelität zu maximieren. Wir empfehlen, diesen Wert bei stark ausgelasteten Clustern auf falsch zu setzen, um die Ressourcenauslastung zu verbessern, indem übermäßig kleine Aufgaben vermieden werden.

      true

      spark.sql.adaptive.enabled

      Gibt an, ob die adaptive Abfrageausführung aktiviert werden soll, um Abfragepläne während der Abfrageausführung auf der Grundlage genauer Laufzeitstatistiken erneut zu optimieren.

      true

      spark.sql.adaptive.force OptimizeSkewedJoin

      Gibt an, ob die Aktivierung erzwungen werden soll, auch wenn dadurch ein zusätzlicher Shuffle eingeführt OptimizeSkewedJoin wird.

      false

      spark.sql.adaptive.local ShuffleReader.enabled

      Gibt an, ob lokale Shuffle-Reader verwendet werden sollen, wenn eine Shuffle-Partitionierung nicht erforderlich ist, z. B. nach der Konvertierung von Sort-Merge-Joins in Broadcast-Hash-Joins. Erfordert, dass spark.sql.adaptive.enabled den Wert true hat.

      true

      spark.sql.adaptive.max ShuffledHashJoinLocalMapThreshold

      Legt die maximale Partitionsgröße in Byte für die Erstellung lokaler Hash-Maps fest. Priorisiert gemischte Hash-Joins gegenüber Sort-Merge-Joins, wenn:

      • Dieser Wert entspricht oder übersteigt spark.sql.adaptive.advisory PartitionSizeInBytes

      • Alle Partitionsgrößen liegen innerhalb dieser Grenze

      Überschreibt die Einstellung SortMergeJoin spark.sql.join.prefer.

      0 Byte

      spark.sql.adaptive.optimize SkewsInRebalancePartitions.enabled

      Gibt an, ob schiefe Shuffle-Partitionen optimiert werden sollen, indem sie auf der Grundlage von spark.sql.adaptive.advisory in kleinere Partitionen aufgeteilt werden. PartitionSizeInBytes Erfordert, dass spark.sql.adaptive.enabled den Wert true hat.

      true

      spark.sql.adaptive.rebalance PartitionsSmallPartitionFactor

      Definiert den Größenschwellenfaktor für das Zusammenführen von Partitionen beim Teilen. Partitionen, die kleiner als dieser Faktor sind, multipliziert mit spark.sql.adaptive.advisory, werden zusammengeführtPartitionSizeInBytes .

      0.2

      spark.sql.adaptive.skew Join.enabled

      Gibt an, ob Datenverzerrungen bei gemischten Verknüpfungen behandelt werden sollen, indem schiefe Partitionen aufgeteilt und optional repliziert werden. Gilt für Sort-Merge- und Shuffled-Hash-Joins. Erfordert, dass spark.sql.adaptive.enabled den Wert true hat.

      true

      spark.sql.adaptive.skew Join.skewedPartitionFactor

      Bestimmt den Größenfaktor, der den Partitionsversatz bestimmt. Eine Partition ist schief, wenn ihre Größe beide überschreitet:

      • Dieser Faktor multipliziert mit der mittleren Partitionsgröße

      • Der Wert von spark.sql.adaptive.skew Join.skewedPartitionThresholdInBytes

      5

      spark.sql.adaptive.skew Join.skewedPartitionThresholdInBytes

      Legt den Größenschwellenwert in Byte zur Identifizierung schiefer Partitionen fest. Eine Partition ist schief, wenn ihre Größe beide überschreitet:

      • Dieser Schwellenwert

      • Die mittlere Partitionsgröße multipliziert mit spark.sql.adaptive.skew Join.skewedPartitionFactor

      Wir empfehlen, diesen Wert größer als spark.sql.adaptive.advisory einzustellen. PartitionSizeInBytes

      256 MB

      spark.sql.broadcast-Timeout

      Steuert den Timeout-Zeitraum in Sekunden für die Broadcast-Operationen bei Broadcast-Joins.

      300 Sekunden

      spark.sql.cbo.enabled

      Gibt an, ob die kostenbasierte Optimierung (CBO) für die Schätzung von Planstatistiken aktiviert werden soll.

      false

      spark.sql.cbo.join Reorder.dp.star.filter

      Gibt an, ob bei der kostenbasierten Join-Enumeration eine Star-Join-Filterheuristik angewendet werden soll.

      false

      spark.sql.cbo.join Reorder.dp.threshold

      Legt die maximale Anzahl verbundener Knoten fest, die im dynamischen Programmieralgorithmus zulässig sind.

      12

      spark.sql.cbo.join Reorder.enabled

      Gibt an, ob die Neuanordnung von Verknüpfungen in der kostenbasierten Optimierung (CBO) aktiviert werden soll.

      false

      spark.sql.cbo.plan Stats.enabled

      Gibt an, ob bei der Generierung des logischen Plans Zeilenanzahl und Spaltenstatistiken aus dem Katalog abgerufen werden sollen.

      false

      spark.sql.cbo.star SchemaDetection

      Gibt an, ob die Neuordnung von Joins auf der Grundlage der Sternschemaerkennung aktiviert werden soll.

      false

      spark.sql.files.max PartitionNum

      Legt die maximale Zielanzahl geteilter Dateipartitionen für dateibasierte Quellen (Parquet, JSON und ORC) fest. Skaliert Partitionen neu, wenn die anfängliche Anzahl diesen Wert überschreitet. Dies ist ein empfohlenes Ziel, kein garantiertes Limit.

      (Keine)

      spark.sql.files.max RecordsPerFile

      Legt die maximale Anzahl von Datensätzen fest, die in eine einzelne Datei geschrieben werden sollen. Bei einem Wert von Null oder einem negativen Wert gilt kein Limit.

      0

      spark.sql.files.min PartitionNum

      Legt die Mindestanzahl geteilter Dateipartitionen für dateibasierte Quellen (Parquet, JSON und ORC) fest. Die Standardeinstellung ist spark.sql.leaf. NodeDefaultParallelism Dies ist ein empfohlenes Ziel, kein garantiertes Limit.

      (Keine)

      spark.sql.in MemoryColumnarStorage.batchSize

      Steuert die Batchgröße für das spaltenförmige Caching. Eine Erhöhung der Größe verbessert die Speicherauslastung und Komprimierung, erhöht jedoch das Risiko von Fehlern aufgrund unzureichenden Speichers.

      10000

      spark.sql.in MemoryColumnarStorage.compressed

      Gibt an, ob auf der Grundlage von Datenstatistiken automatisch Komprimierungscodecs für Spalten ausgewählt werden sollen.

      true

      spark.sql.in MemoryColumnarStorage.enableVectorizedReader

      Gibt an, ob vektorisiertes Lesen für das spaltenförmige Caching aktiviert werden soll.

      true

      spark.sql.legacy.allow HashOnMapType

      Gibt an, ob Hashoperationen für Datenstrukturen vom Kartentyp zulässig sind. Diese Legacy-Einstellung gewährleistet die Kompatibilität mit der Verarbeitung von Kartentypen älterer Spark-Versionen.

      (Keine)

      spark.sql.legacy.allow NegativeScaleOfDecimal

      Gibt an, ob negative Skalenwerte in Dezimaltypdefinitionen zulässig sind. Diese alte Einstellung gewährleistet die Kompatibilität mit älteren Spark-Versionen, die negative Dezimalskalen unterstützten.

      (Keine)

      spark.sql.legacy.cast ComplexTypesToString.enabled

      Gibt an, ob veraltetes Verhalten für die Umwandlung komplexer Typen in Zeichenketten aktiviert werden soll. Behält die Kompatibilität mit den Typkonvertierungsregeln älterer Spark-Versionen bei.

      (Keine)

      spark.sql.legacy.char VarcharAsString

      Gibt an, ob CHAR- und VARCHAR-Typen als STRING-Typen behandelt werden sollen. Diese Legacy-Einstellung bietet Kompatibilität mit der Behandlung von String-Typen älterer Spark-Versionen.

      (Keine)

      spark.sql.legacy.create EmptyCollectionUsingStringType

      Gibt an, ob leere Sammlungen mithilfe von Elementen vom Typ Zeichenfolge erstellt werden sollen. Diese ältere Einstellung gewährleistet die Kompatibilität mit dem Sammlungsinitialisierungsverhalten älterer Spark-Versionen.

      (Keine)

      spark.sql.legacy.exponent LiteralAsDecimal.enabled

      Gibt an, ob exponentielle Literale als Dezimaltypen interpretiert werden sollen. Diese ältere Einstellung gewährleistet die Kompatibilität mit der numerischen Literalverarbeitung älterer Spark-Versionen.

      (Keine)

      spark.sql.legacy.json.allow EmptyString.enabled

      Gibt an, ob bei der JSON-Verarbeitung leere Zeichenfolgen zulässig sind. Diese Legacy-Einstellung gewährleistet die Kompatibilität mit dem JSON-Parsing-Verhalten älterer Spark-Versionen.

      (Keine)

      spark.sql.legacy.parquet.int96 RebaseModeInRead

      Gibt an, ob beim Lesen von Parquet-Dateien der ältere INT96-Timestamp-Rebase-Modus verwendet werden soll. Diese Legacy-Einstellung gewährleistet die Kompatibilität mit der Zeitstempelverarbeitung älterer Spark-Versionen.

      (Keine)

      spark.sql.legacy.time ParserPolicy

      Steuert das Verhalten bei der Zeitanalyse aus Gründen der Abwärtskompatibilität. Diese Legacy-Einstellung bestimmt, wie Zeitstempel und Datumsangaben anhand von Zeichenketten analysiert werden.

      (Keine)

      spark.sql.legacy.type Coercion.datetimeToString.enabled

      Gibt an, ob beim Konvertieren von Datetime-Werten in Zeichenfolgen das erzwungene Verhalten älterer Typen aktiviert werden soll. Behält die Kompatibilität mit den Datetime-Konvertierungsregeln älterer Spark-Versionen bei.

      (Keine)

      spark.sql.max SinglePartitionBytes

      Legt die maximale Partitionsgröße in Byte fest. Der Planer führt Shuffle-Operationen für größere Partitionen ein, um die Parallelität zu verbessern.

      128 m

      spark.sql.metadatacacheTTL Sekunden

      Steuert die Gültigkeitsdauer (TTL) für Metadaten-Caches. Gilt für Partitionsdatei-Metadaten und Sitzungskatalog-Caches. Erfordert:

      • Ein positiver Wert größer als Null

      • spark.sql.CatalogImplementation ist auf hive gesetzt

      • PartitionFileCacheSize spark.sql.hive.filesource größer als Null

      • spark.sql.hive.manage auf true gesetzt FilesourcePartitions

      -1000 ms

      spark.sql.optimizer.collapse ProjectAlwaysInline

      Gibt an, ob benachbarte Projektionen und Inline-Ausdrücke ausgeblendet werden sollen, auch wenn dies zu Duplikaten führt.

      false

      spark.sql.optimizer.dynamic PartitionPruning.enabled

      Gibt an, ob Prädikate für Partitionsspalten generiert werden sollen, die als Join-Schlüssel verwendet werden.

      true

      spark.sql.optimizer.enable CsvExpressionOptimization

      Gibt an, ob CSV-Ausdrücke im SQL-Optimierer optimiert werden sollen, indem unnötige Spalten aus from_csv-Vorgängen entfernt werden.

      true

      spark.sql.optimizer.enable JsonExpressionOptimization

      Gibt an, ob JSON-Ausdrücke im SQL-Optimierer wie folgt optimiert werden sollen:

      • Überflüssige Spalten aus from_json-Operationen entfernen

      • Vereinfachung der Kombinationen from_json und to_json

      • Optimierung von named_struct-Operationen

      true

      spark.sql.optimizer.excludedRules

      Definiert zu deaktivierende Optimizer-Regeln, die durch kommagetrennte Regelnamen gekennzeichnet sind. Einige Regeln können nicht deaktiviert werden, da sie für die Richtigkeit erforderlich sind. Der Optimierer protokolliert, welche Regeln erfolgreich deaktiviert wurden.

      (Keine)

      spark.sql.optimizer.runtime.bloom Filter.applicationSideScanSizeThreshold

      Legt die minimale aggregierte Scangröße in Byte fest, die erforderlich ist, um einen Bloom-Filter auf der Anwendungsseite einzufügen.

      10 GB

      spark.sql.optimizer.runtime.bloom Filter.creationSideThreshold

      Definiert den maximalen Größenschwellenwert für das Einfügen eines Bloom-Filters auf der Erstellungsseite.

      10 MB

      spark.sql.optimizer.runtime.bloom Filter.enabled

      Gibt an, ob ein Bloom-Filter eingefügt werden soll, um Shuffle-Daten zu reduzieren, wenn eine Seite eines Shuffle-Joins ein selektives Prädikat hat.

      true

      spark.sql.optimizer.runtime.bloom Filter.expectedNumItems

      Definiert die Standardanzahl der erwarteten Elemente im Runtime-Bloom-Filter.

      1000000

      spark.sql.optimizer.runtime.bloom Filter.maxNumBits

      Legt die maximale Anzahl von Bits fest, die im Runtime-Bloom-Filter zulässig sind.

      67108864

      spark.sql.optimizer.runtime.bloom Filter.maxNumItems

      Legt die maximale Anzahl erwarteter Elemente fest, die im Bloom-Laufzeitfilter zulässig sind.

      4000000

      spark.sql.optimizer.runtime.bloom Filter.numBits

      Definiert die Standardanzahl der Bits, die im Runtime-Bloom-Filter verwendet werden.

      8388608

      spark.sql.optimizer.runtime.row LevelOperationGroupFilter.enabled

      Gibt an, ob die Runtime-Gruppenfilterung für Operationen auf Zeilenebene aktiviert werden soll. Ermöglicht Datenquellen Folgendes:

      • Bereinigen Sie ganze Datengruppen (wie Dateien oder Partitionen) mithilfe von Datenquellenfiltern

      • Führen Sie Laufzeitabfragen aus, um übereinstimmende Datensätze zu identifizieren

      • Verwerfen Sie unnötige Gruppen, um teure Umschreibungen zu vermeiden

      Einschränkungen:

      • Nicht alle Ausdrücke können in Datenquellenfilter konvertiert werden

      • Für einige Ausdrücke ist eine Spark-Auswertung erforderlich (z. B. Unterabfragen)

      true

      spark.sql.optimizer.runtime Filter.number.threshold

      Legt die Gesamtzahl der injizierten Laufzeitfilter (nicht DPP) fest. Dies dient dazu, Treiber-OOMs mit zu vielen Bloom-Filtern zu verhindern.

      10

      spark.sql.optimizer.runtime Filter.semiJoinReduction.enabled

      Gibt an, ob ein Semi-Join eingefügt werden soll, um Shuffle-Daten zu reduzieren, wenn eine Seite eines Shuffle-Joins ein selektives Prädikat hat.

      false

      spark.sql.parquet.aggregatePushdown

      Gibt an, ob Aggregate zur Optimierung nach Parquet übertragen werden sollen. Unterstützt:

      • MIN und MAX für die Typen Boolean, Integer, Float und Datum

      • COUNT für alle Datentypen

      Löst eine Ausnahme aus, wenn Statistiken in einer Fußzeile einer Parquet-Datei fehlen.

      false

      spark.sql.parquet.columnar ReaderBatchSize

      Steuert die Anzahl der Zeilen in jedem vektorisierten Parquet-Reader-Batch. Wählen Sie einen Wert, der den Leistungsaufwand und die Speicherauslastung ausbalanciert, um Fehler aufgrund unzureichenden Speichers zu vermeiden.

      4096

      spark.sql.parquet.enable VectorizedReader

      Gibt an, ob die vektorisierte Parquet-Decodierung aktiviert werden soll.

      true

      spark.sql.shuffle.partitions

      Legt die Standardanzahl von Partitionen für das Mischen von Daten bei Verknüpfungen oder Aggregationen fest. Kann nicht zwischen Neustarts strukturierter Streaming-Abfragen von derselben Checkpoint-Position aus geändert werden.

      200

      spark.sql.shuffled HashJoinFactor

      Definiert den Multiplikationsfaktor, der zur Bestimmung der Eignung für Shuffle-Hash-Joins verwendet wird. Ein Shuffle-Hash-Join wird ausgewählt, wenn die Größe der Small-Side-Daten multipliziert mit diesem Faktor kleiner ist als die Large-Side-Datengröße.

      3

      spark.sql.sources.parallel PartitionDiscovery.threshold

      Legt die maximale Anzahl von Pfaden für die treiberseitige Dateiliste mit dateibasierten Quellen (Parquet, JSON und ORC) fest. Wenn diese Grenze bei der Partitionserkennung überschritten wird, werden die Dateien in einem separaten verteilten Spark-Job aufgelistet.

      32

      spark.sql.statistics.histogram.enabled

      Gibt an, ob bei der Berechnung der Spaltenstatistiken Histogramme gleicher Höhe generiert werden sollen, um die Schätzgenauigkeit zu verbessern. Erfordert einen zusätzlichen Tabellenscan, der über den für grundlegende Spaltenstatistiken erforderlichen hinausgeht.

      false

      spark.dynamic Allocation.executorIdleTimeout

      Legt die Dauer fest, für die ein Executor inaktiv sein muss, bevor er entfernt wird, wenn die dynamische Zuordnung aktiviert ist.

      60 Sekunden

      spark.dynamic Allocation.schedulerBacklogTimeout

      Legt die Dauer fest, für die ausstehende Aufgaben im Rückstand sein müssen, bevor neue Executoren angefordert werden, wenn die dynamische Zuweisung aktiviert ist.

      1s

      spark.dynamic Allocation.sustainedSchedulerBacklogTimeout

      Wie spark.dynamicAllocation.schedulerBacklogTimeout, wird aber nur für nachfolgende Executor-Anfragen verwendet.

      (Wert von spark.dynamic) Allocation.schedulerBacklogTimeout

      spark.scheduler.min RegisteredResourcesRatio

      Legt das Mindestverhältnis registrierter Ressourcen (registrierte Ressourcen/Gesamtzahl der erwarteten Ressourcen) fest, auf das gewartet werden muss, bevor die Planung beginnt. Wird als Double-Wert zwischen 0,0 und 1,0 angegeben. Unabhängig davon, ob das Mindestverhältnis an Ressourcen erreicht wurde, wird die maximale Wartezeit vor Beginn der Planung von RegisteredResourcesWaitingTime spark.scheduler.max gesteuert.

      0.8

      spark.scheduler.max RegisteredResourcesWaitingTime

      Legt die maximale Wartezeit fest, bis Ressourcen registriert sind, bevor die Planung beginnt.

      30 Sekunden

      spark.sql.hive.metastore PartitionPruningFallbackOnException

      Gibt an, ob auf das Abrufen aller Partitionen aus dem Hive-Metastore zurückgegriffen und auf der Seite des Spark-Clients eine Partitionsbereinigung durchgeführt werden soll, wenn der Metastore aus aufgerufen wird. MetaException

      false

      spark.sql.cross Join.enabled

      Gibt an, ob Abfragen zulässig sind, die ein kartesisches Produkt ohne explizite CROSS JOIN-Syntax enthalten.

      true

      spark.sql.analyzer.maxIterations

      Legt die maximale Anzahl von Iterationen fest, die der Abfrageanalysator ausführt, bevor er aufgibt. Höhere Werte ermöglichen es dem Analyzer, sehr große oder tief verschachtelte Abfragen zu verarbeiten.

      100

      spark.sql.dataprefetch.filescan.max ParallelismPerTask

      Legt die maximale Anzahl von Dateisplits fest, die beim Scannen von Dateien gleichzeitig für jede Aufgabe vorab abgerufen werden sollen.

      4

      spark.sql.iceberg.data-prefetch.enabled

      Gibt an, ob beim Lesen von Tabellen die Optimierung von Daten vor dem Abrufen aktiviert werden soll. Iceberg

      true

      spark.sql.legacy.null ValueWrittenAsQuotedEmptyStringCsv

      Gibt an, ob das alte Verhalten beim Schreiben von Nullen als leere Zeichenfolgen in Anführungszeichen in der CSV-Ausgabe wiederhergestellt werden soll. Wenn der Wert falsch ist, schreibt Spark Nullen als leere Zeichenfolgen ohne Anführungszeichen.

      false

      spark.max RemoteBlockSizeFetchToMem

      Legt den Größenschwellenwert fest, ab dem Spark entfernte Blöcke auf die Festplatte statt in den Speicher abruft. Dadurch wird vermieden, dass eine einzelne große Anfrage zu viel Speicher verbraucht.

      200m

      spark.emr-serverless.allocation.batch.size

      Legt die Anzahl der Executoren fest, die in jeder Runde der Executor-Zuweisung gleichzeitig angefordert werden sollen.

      20

      Eigenschaftenname Description Standardwert

      spark.sql.auto BroadcastJoinThreshold

      Legt die maximale Tabellengröße in Byte für die Übertragung an Worker-Knoten bei Joins fest. Auf -1 setzen, um das Senden zu deaktivieren.

      10 MB (-1 für CR.4X mit 32 Arbeitern)

      spark.dynamic Allocation.enabled

      Gibt an, ob die dynamische Ressourcenzuweisung verwendet werden soll, bei der die Anzahl der bei dieser Anwendung registrierten Executoren je nach Arbeitslast hoch- und herunterskaliert wird.

      true

      spark.files.fetch Failure.unRegisterOutputOnHost

      Gibt an, ob die Registrierung aller Map-Ausgaben auf einem Host aufgehoben werden soll, wenn ein Abruffehler auftritt. Wenn der Wert falsch ist, hebt Spark nur die Registrierung der Ausgaben des jeweiligen Executors auf, der ausgefallen ist, wodurch unnötige Neuberechnungen der Stufen vermieden werden.

      false

      spark.io.compression.codec

      Legt den Codec fest, der zum Komprimieren interner Daten wie RDD-Partitionen, Ereignisprotokolle, Broadcast-Variablen und Shuffle-Ausgaben verwendet wird. Unterstützte Werte: lz4, snappy, zstd, gzip.

      snappy

      spark.sql.session.timezone

      Definiert die Sitzungszeitzone für die Behandlung von Zeitstempeln in Zeichenfolgenliteralen und die Konvertierung von Java-Objekten. Akzeptiert:

      • Region-based IDs im area/city Format (wie America/Los _Angeles)

      • Zonenversätze im HH:mm:ss Format (+/-) HH, (+/-) HH:mm oder (+/-) (z. B. -08 oder + 01:00)

      • UTC oder Z als Aliase für + 00:00

      UTC

    3. Geben Sie für Datenspeicherung in Tagen die Anzahl der Tage ein, an denen die Daten aufbewahrt werden sollen.

    4. Wählen Sie für das Ergebnisformat entweder CSV oder Parquet als das Datenformat, das der ML-Eingabekanal verwenden soll.

  8. Wählen Sie für Servicezugriff den Namen der vorhandenen Servicerolle, der für den Zugriff auf diese Tabelle verwendet werden soll, oder wählen Sie Neue Servicerolle erstellen und verwenden.

  9. Wählen Sie für Verschlüsselung das Verschlüsselungsgeheimnis mit einem benutzerdefinierten KMS-Schlüssel aus, um Ihren eigenen KMS-Schlüssel und zugehörige Informationen anzugeben. Andernfalls verwaltet Clean Rooms ML die Verschlüsselung.

  10. (Optional) Wählen Sie für Compute Payer das Kollaborationsmitglied aus, das die Kosten für die Abfrageberechnung bezahlt.

    Anmerkung

    Wenn es in der Zusammenarbeit nur einen Zahler für Query Compute gibt, wird standardmäßig dieser Zahler verwendet.

  11. (Optional) Wählen Sie als Zahler für synthetische Datengenerierung das Kollaborationsmitglied aus, das die Kosten für die Generierung synthetischer Daten bezahlt.

    Anmerkung

    Diese Option wird angezeigt, wenn der ML-Eingabekanal eine Analysevorlage verwendet, die für die synthetische Datenausgabe konfiguriert ist. Wenn in der Zusammenarbeit nur ein Zahler für die Generierung synthetischer Daten in Frage kommt, wird standardmäßig dieser Zahler verwendet.

  12. Wählen Sie ML-Eingabekanal erstellen.

    Die Erstellung des ML-Eingabekanals dauert einige Minuten. Eine Liste der ML-Eingangskanäle finden Sie auf der Registerkarte ML-Modelle.

Anmerkung

Nachdem der ML-Eingabekanal erstellt wurde, können Sie ihn nicht mehr bearbeiten.

API

Um einen ML-Eingabekanal (API) zu erstellen

Führen Sie den folgenden Code mit Ihren spezifischen Parametern aus:

import boto3 acr_client = boto3.client('cleanroomsml') acr_client.create_ml_input_channel( name="ml_input_channel_name", membershipIdentifier='membership_id', configuredModelAlgorithmAssociations=[configured_model_algorithm_association_arn], retentionInDays=1, inputChannel={ "dataSource": { "protectedQueryInputParameters": { "sqlParameters": { "queryString": "select * from table", "computeConfiguration": { "worker": { "type": "CR.1X", "number": 16, "properties": { "spark": { "spark configuration key": "spark configuration value", } } } }, "resultFormat": "PARQUET" } } }, "roleArn": "arn:aws:iam::111122223333:role/role_name" } ) channel_arn = resp['ML Input Channel ARN']