2016-11-17 4 views
0

これは悪い考えかもしれないので、pyspark/bigdataに少し新しかったですが、私は約100万個の個別の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) 

パンダのデータフレームを受け付けないのArrayTypeに関連するエラーで。私は正確なエラーはありません。

私がしようとしていることは可能ですか?

答えて

0

スパークはネストされたデータフレームをサポートしていません。とにかく、CSV全体を含む列を常にメモリに常時格納する必要があるのはなぜですか?必要があれば、他の列にデータを正常に抽出できていないようです。

関連する問題