Ich bin ein wenig neu in pyspark/bigdata, also könnte dies eine schlechte Idee sein, aber ich habe etwa eine Million einzelne CSV-Dateien jeweils mit einigen Metadaten verbunden. Ich möchte einen Pyspark-Datenrahmen mit Spalten für alle Metadatenfelder, aber auch mit einer Spalte, deren Einträge die (vollständigen) CSV-Dateien sind, die jedem Satz von Metadaten zugeordnet sind.Können Sie eine Spalte von Datenrahmen in pyspark haben?
Ich bin gerade nicht bei der Arbeit, aber ich erinnere mich fast an den genauen Code. Ich habe ein Spielzeug Beispiel etwas versucht, wie
outer_pandas_df = pd.DataFrame.from_dict({"A":[1,2,3],"B":[4,5,6]})
## A B
## 0 1 4
## 1 2 5
## 2 3 6
Und dann, wenn Sie
outer_schema = StructType([
StructField("A", IntegerType(), True),
StructField("B", IntegerType(), True)
])
outer_spark_df = sqlctx.createDataFrame(outer_pandas_df, schema=outer_schema)
tun dann ist das Ergebnis ein Funke Datenrahmen, wie erwartet. Aber jetzt, wenn Sie tun
inner_pandas_df = pd.DataFrame.from_dict({"W":["X","Y","Z"]})
outer_pandas_df["C"] = [inner_pandas_df, inner_pandas_df, inner_pandas_df]
Und machen das Schema wie
inner_schema = StructType([
StructField("W", StringType(), True)
])
outer_schema = StructType([
StructField("A", IntegerType(), True),
StructField("B", IntegerType(), True),
StructField("W", ArrayType(inner_schema), True)
])
dann dies fehlschlägt:
sqlctx.createDataFrame(outer_pandas_df, schema=outer_schema)
mit einem Fehler im Zusammenhang mit arraytype nicht Pandas Datenrahmen zu akzeptieren. Ich habe nicht den genauen Fehler.
Was versuche ich zu tun?