2016-02-06 2 views
12

Есть ли альтернатива для df[100, c("column")] в кадрах данных искры Scala. Я хочу выбрать конкретную строку из столбца кадра данных искры. , например 100th строка выше R эквивалентный кодполучить конкретный ряд из искрового информационного кадра

+2

Возможные дубликат [Как читать отдельные строки из sparkContext] (http://stackoverflow.com/questions/35221033/ как для чтения-specific-lines-from-sparkcontext) –

+0

Речь идет о DataFrames и [Как читать определенные строки из sparkContext] (http://stackoverflow.com/questions/35221033/how-to-read-specific -lines-from-sparkcontext) относится к RDD –

ответ

9

Во-первых, вы должны понимать, что DataFrames распределены, это означает, что вы не можете получить доступ к ним в типичном процедурного образом, вы должны сделать анализ первым. Хотя, вы спрашиваете о Scala Я предлагаю вам прочитать Pyspark Documentation, потому что в нем есть больше примеров, чем любая другая документация.

Однако, продолжая с моим объяснением, я бы использовал некоторые методы API RDD, потому что все DataFrame s имеют один атрибут RDD. Пожалуйста, см. Мой пример ниже, и обратите внимание на то, как я беру 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

Так я и добился того же в Скале. Я не уверен, если это более эффективно, чем действительный ответ, но он требует меньше кодирования

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

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

Будет ли выход изменяться в зависимости от того, сколько узлов объединяет данные? – bshelt141

Смежные вопросы