2016-02-06 10 views
12

df[100, c("column")]の代わりにscalaスパークデータフレームがありますか?スパークデータフレームの列から特定の行を選択したい。上記R同等のコードで 例えば100th行がスパークデータフレームから特定の行を取得

+2

可能な重複をコーディングする必要がhttp://stackoverflow.com/questions/35221033/ read-specific-lines-sparkcontextから) –

+0

これはDataFramesと[sparkContextから特定の行を読み込む方法]です(http://stackoverflow.com/questions/35221033/how-to-read-specific -lines-from-sparkcontext)はRDDに関するものです –

答えて

9

まず、あなたがDataFramesを使用すると、典型的手続き方法でそれらにアクセスすることができないことを意味し、分配され、最初の分析を行う必要があることを理解しなければなりません。しかし、Scalaについて質問していますが、Pyspark Documentationを読むことをお勧めします。他のドキュメントより多くの例があるためです。

しかし、私の説明を続けると、のAPIのいくつかのメソッドを使用すると、すべてDataFrameには属性としてRDDが1つあります。私の例を参照してください、私は2番目のレコードを取る方法に注意してください。

df = sqlContext.createDataFrame([("a", 1), ("b", 2), ("c", 3)], ["letter", "name"]) 
myIndex = 1 
values = (df.rdd.zipWithIndex() 
      .filter(lambda ((l, v), i): i == myIndex) 
      .map(lambda ((l,v), i): (l, v)) 
      .collect()) 

print(values[0]) 
# (u'b', 2) 

うまくいけば、誰かが少ないステップで別の解決策を提供してくれることを望みます。

1

これは私がScalaで同じように達成した方法です。 ([sparkContextから特定の行を読み込む方法]私はそれが有効な回答よりも効率的であるかどうかわからないのですが、それは以下の

val parquetFileDF = sqlContext.read.parquet("myParquetFule.parquet") 

val myRow7th = parquetFileDF.rdd.take(7).last 
+0

データがクラスタリングされるノードの数に応じて出力が変化しますか? – bshelt141

関連する問題