2016-11-17 4 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) 

할 경우 다음 결과는 예상대로 스파크 dataframe이다. 그러나 지금 당신은

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

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

같은 스키마가 다음이 실패

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

을 그리고 만들 경우 :

sqlctx.createDataFrame(outer_pandas_df, schema=outer_schema) 

을 팬더 dataframes을 수락하지 ArrayType 관련된 오류와 함께. 정확한 오류가 없습니다.

내가 할 수있는 일이 가능합니까?

답변

0

Spark는 중첩 된 데이터 프레임을 지원하지 않습니다. 항상 전체 CSV가 포함 된 열을 메모리에 지속적으로 저장하려면 어떻게해야합니까? 필요한 경우 다른 열로 데이터를 성공적으로 추출하지 못하는 것 같습니다.