2016-02-06 21 views
12

Có bất kỳ phương án thay thế nào cho df[100, c("column")] trong khung dữ liệu tia lửa. Tôi muốn chọn hàng cụ thể từ một cột của khung dữ liệu tia lửa. ví dụ 100th hàng trong mã tương đương trên Rnhận hàng cụ thể từ khung dữ liệu tia lửa

+2

Có thể trùng lặp của [Cách đọc các dòng cụ thể từ sparkContext] (http://stackoverflow.com/questions/35221033/ làm thế nào để đọc-cụ thể-dòng-từ-sparkcontext) –

+0

Đây là về DataFrames, và [Làm thế nào để đọc các dòng cụ thể từ sparkContext] (http://stackoverflow.com/questions/35221033/how-to-read-specific -lines-from-sparkcontext) là về RDDs –

Trả lời

9

Trước hết, bạn phải hiểu rằng DataFrames được phân phối, có nghĩa là bạn không thể truy cập chúng trong một điển hình thủ tục cách nào, bạn phải làm một phân tích đầu tiên. Mặc dù, bạn đang hỏi về Scala Tôi khuyên bạn nên đọc Pyspark Documentation, vì nó có nhiều ví dụ hơn bất kỳ tài liệu nào khác.

Tuy nhiên, tiếp tục với giải thích của mình, tôi sẽ sử dụng một số phương pháp của API RDD khiến tất cả DataFrame có một thuộc tính RDD. Xin vui lòng, xem ví dụ của tôi dưới đây, và thông báo như thế nào tôi lấy kỷ lục thứ 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) 

Hy vọng rằng, ai đó đưa ra giải pháp khác với ít bước hơn.

1

Đây là cách tôi đạt được điều tương tự trong Scala. Tôi không chắc liệu nó có hiệu quả hơn câu trả lời hợp lệ hay không, nhưng yêu cầu ít mã hóa hơn

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

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

Thay đổi đầu ra có phụ thuộc vào số lượng các nút mà dữ liệu được nhóm lại không? – bshelt141

Các vấn đề liên quan