2016-10-06 3 views
0

저는 Spark와 Python에 대해 매우 익숙합니다. 그래서 이것은 아마도 더 많은 경험이있는 사람에게 분명 할 것입니다.lit()를 사용하여 Spark에서 새로운 열 만들기

하나의 열을 수동으로 만들고 모든 값이 's'인 다른 열을 만들고 싶습니다. 내가 취하는 과정에서는 lit() 함수를 사용하는 것이 좋습니다. 그러나, 나는 삶의 방식을 생각할 수 없다. 이 코드는이 오류를 제공합니다 : "형식 오류를 '열'객체가 호출되지 않습니다."

wordsDF = sqlContext.createDataFrame([('cat',), ('elephant',), ('rat',), ('rat',), ('cat',)], ['word']) 
wordsDF.show() 
from pyspark.sql.functions import lit, concat 
pluralDF = ([(wordsDF.word.lit(),'s',)], ['words', 's']) 
pluralDF.show() 

가 (나는 확실히 내가 바로 그것을 가지고 만드는 결과를 표시하기 위해 쇼 기능을 사용 나는 단지 실행하는 경우 라인 1, 2, 그것은 동물의 내 목록을 보여 주지만, 4 호선, 5 실패)

힌트와 교사에 의해 주어진 코드는이 (4 호선)를위한 것입니다.

pluralDF = wordsDF.<FILL IN> 

어떤 도움 대단히 감사합니다. 감사!

답변

0

udf으로 적용 할 함수를 정의해야한다고 생각합니다.

뭔가처럼은 다음과 같습니다 당신은 DataFrame의 방법 selectconcat 기능을 함께 할도 수

from pyspark.sql.functions import udf 
def toPlural(singularStr): 
    singularStr + "s" 

wordsDF.withColumn("pluralNames", toPlural(wordsDF.col("_1"))).show() 
1

.

pluralDF = wordsDF.select("*", concat(df['word'], lit('s')).alias("plural")) 
관련 문제