2016-06-02 3 views
2

키가 테이블의 열 이름과 일치하는 곳에 파이썬 사전 키 값 쌍 목록이 있으므로 다음 목록을 사용하여 pyspark 데이터 프레임으로 변환하는 방법을 나열하십시오. 두 col arg1 arg2?표준 파이썬 키 값 사전 목록을 pyspark 데이터 프레임으로 변환

[{"arg1": "", "arg2": ""},{"arg1": "", "arg2": ""},{"arg1": "", "arg2": ""}] 

어떻게하면 다음과 같은 구문을 사용할 수 있습니까?

sc.parallelize([{"arg1": "", "arg2": ""},{"arg1": "", "arg2": ""},{"arg1": "", "arg2": ""}]).toDF() 

새로운 방법 : 위의 코드 (...)

+0

"..."대신 질문을 편집하여 "arg1"및 "arg2"가 어디로 가야하는지 알려주십시오. – betterworld

+0

@betterworld ok do 수행 방법 – stackit

답변

13

오래된 방법으로 ARG1의 ARG2을 배치

df = sc.parallelize([ 
    ... 
]).toDF 

from pyspark.sql import Row 
from collections import OrderedDict 

def convert_to_row(d: dict) -> Row: 
    return Row(**OrderedDict(sorted(d.items()))) 

sc.parallelize([{"arg1": "", "arg2": ""},{"arg1": "", "arg2": ""},{"arg1": "", "arg2": ""}]) \ 
    .map(convert_to_row) \ 
    .toDF() 
+0

감사합니다. 관련 질문에 대답 해주십시오 : http : //stackoverflow.com/questions/37584185/how-to-reduce-multiple-json-tables-stored-in-a-column rdd-to-a-single-rd – stackit

+2

이 스칼라가 아닌가요? def convert_to_row (d : dict) -> 행 : – rado

+0

좋습니다. 나는 다만 질문이있다, 왜 "분류 된"? – Andre85

0

나는 수정했다 Spark 2.0을 실행하는 Python 2.7에서 나를 위해 작동하도록 대답을 받았다.

from collections import OrderedDict 
from pyspark.sql import SparkSession, Row 

spark = (SparkSession 
     .builder 
     .getOrCreate() 
    ) 

schema = StructType([ 
    StructField('arg1', StringType(), True), 
    StructField('arg2', StringType(), True) 
]) 

dta = [{"arg1": "", "arg2": ""}, {"arg1": "", "arg2": ""}] 

dtaRDD = spark.sparkContext.parallelize(dta) \ 
    .map(lambda x: Row(**OrderedDict(sorted(x.items())))) 

dtaDF = spark.createDataFrame(dtaRdd, schema) 
관련 문제