2016-11-17 37 views
0

我对pyspark/bigdata有点新,所以这可能是一个坏主意,但我有大约一百万个CSV文件,每个都与一些元数据相关联。我想要一个带有所有元数据字段列的pyspark数据框,而且还需要一个列,其中的条目是与每组元数据关联的(全部)CSV文件。你可以在pyspark中有一列数据框吗?

我现在不在工作,但我几乎记得准确的代码。我已经尝试了玩具例如像

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 

,然后如果你做

outer_schema = StructType([ 
    StructField("A", IntegerType(), True), 
    StructField("B", IntegerType(), True) 
]) 

outer_spark_df = sqlctx.createDataFrame(outer_pandas_df, schema=outer_schema) 

那么结果如预期火花数据帧。但如果你现在做

inner_pandas_df = pd.DataFrame.from_dict({"W":["X","Y","Z"]}) 
outer_pandas_df["C"] = [inner_pandas_df, inner_pandas_df, inner_pandas_df] 

而做出这样

inner_schema = StructType([ 
    StructField("W", StringType(), True) 
]) 

outer_schema = StructType([ 
    StructField("A", IntegerType(), True), 
    StructField("B", IntegerType(), True), 
    StructField("W", ArrayType(inner_schema), True) 
]) 

架构那么这个失败:

sqlctx.createDataFrame(outer_pandas_df, schema=outer_schema) 

与对数组类型不接受大熊猫dataframes相关的错误。我没有确切的错误。

是我想要做的可能吗?

回答

0

Spark不支持嵌套数据框。为什么你想要一个包含整个CSV的列在内存中不断存储?在我看来,如果你需要的话,你没有成功地将数据提取到其他列。

相关问题