2016-05-16 11 views
2

私はPython Sparkを初めて使用しています。私は火花データフレーム& JSONオブジェクトの下に持ってSpark RDDのスキーマ定義

df = sqlContext.read.load("result.json", format="json") 

JSONオブジェクト:

df.collect() 

[Row(Dorothy=[u'CA', u'F', u'1910', u'220'], Frances=[u'CA', u'F', u'1910', u'134'], Helen=[u'CA', u'F', u'1910', u'239'], Margaret=[u'CA', u'F', u'1910', u'163'], Mary=[u'CA', u'F', u'1910', u'295'])] 

私はエラーの下に、私はエラーを取得しています上記の値

df.select(Row("Name" =["State","Gender","Year","Count"])).write.save("result.json",format = 'json') 

にフィールド名を割り当てよう。あなたは既にスキーマを持つJSONドキュメントをロードした後datafrmae

Py4JError: An error occurred while calling z:org.apache.spark.sql.functions.col. Trace:py4j.Py4JException: Method col([class java.util.ArrayList]) does not exist 

答えて

1

上のスキーマを定義する方法に助けてもらえ、あなたがdf.printSchema()を行うことができますので、行クラスを使用する必要はありません。

だからあなたはあなたが例えば名前付き引数としてそのキーと値のペアを渡す行クラスを使用する場合

df.select(df['State'], df['Gender'], df['Year'], df['Count']) 

または

df.select('State', 'Gender', 'Year', 'Count') 

ような何かを行うことができるはず

rows = [Row(name='John', age=10)]

そのたとえば行のリストとデータフレームを構築するために使用

df = sqlContext.createDataFrame(rows)

関連する問題