首页 文章

你能在pyspark中拥有一列数据帧吗?

提问于
浏览
0

我对pyspark / bigdata有点新意,所以这可能是一个坏主意,但我有大约一百万个单独的CSV文件,每个文件都与一些元数据相关联 . 我想要一个包含所有元数据字段列的pyspark数据框,但也有一个列,其条目是与每组元数据相关联的(整个)CSV文件 .

我现在不在工作,但我记得几乎确切的代码 . 我尝试了类似的玩具示例

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)

与ArrayType相关的错误不接受pandas数据帧 . 我没有确切的错误 .

我正在尝试做什么?

1 回答

  • 0

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

相关问题