2016-08-03 15 views
0

Wie verknüpfe ich zwei Datenrahmen A und B, die unterschiedliche Spalten enthalten und Nullen für Spalten erhalten, die in den Datenrahmen A und B nicht üblich sind?Verbinden von zwei Tabellen mit unterschiedlicher Spaltenanzahl in Spark

kann ich, dass Funken sehen unionAll diese Aktion nicht unterstützt und wirft folgende Fehler

org.apache.spark.sql.AnalysisException: Union can only be performed on tables with the same number of columns, but the left table has 11 columns and the right has 10;

Spark-Version: 1.6.1

+1

ich weiß nicht von irgendwelchen DBMS wher Diese Abfrage würde mit verschiedenen Spaltenstrukturen in den unionierten Tabellen funktionieren. – Siyual

+0

@ Siyual Danke für die Eingabe. Korrigiert entsprechend – Omley

Antwort

0

Rewrite Ihre Abfrage, damit es alle Spalten festgelegt und mit null as missing_field für Spalte zu kompensieren Sie haben nicht

SELECT field1, field2, field3 FROM A UNION ALL SELECT field1, field2, null as field3 FROM B 
+0

Gibt es einen automatisierten Weg, auf dem ich die Inspektion von Spalten einzeln vermeiden kann, um nicht übliche Spalten zu identifizieren? – Omley

+0

Sie könnten versuchen, * aus einer Union wählen Sie alle *, Null als Feld3 von B, aber ich bin mir nicht sicher, ob das in Ihrer Konfiguration funktionieren würde. – Anton

Verwandte Themen