2016-11-25 1 views

답변

0

the scaladocs 한 번 봐 - 당신이 얻을 필요가 의미, 여기 RDD[Row]을 권 해드립니다. makeRDD으로 가장 쉬워야합니다. 에 해당하는 스키마가 필요합니다. 어느 것이 가능합니까 directly pull from it입니다.

... 처음에 Array[Row]을 얻었습니까?

0

당신은 그렇게하고 싶지 않아 :

그냥 limit API를 사용하여 전체 dataFrame의 서브 파트를합니다.

예 : 아직도 당신은 지금 당신이 적절하게 표시 할 수 있습니다 명시 적으로 DataFrame에 배열 [행]을, 당신은 따라서

scala> val value=d.take(1) 
value: Array[org.apache.spark.sql.Row] = Array([1,3]) 

scala> val asTuple=value.map(a=>(a.getInt(0),a.getInt(1))) 
asTuple: Array[(Int, Int)] = Array((1,3)) 

scala> sc.parallelize(asTuple).toDF 
res6: org.apache.spark.sql.DataFrame = [_1: int, _2: int] 

과 같은 것을 할 수있는 변환 할 경우

scala> val d=sc.parallelize(Seq((1,3),(2,4))).toDF 
d: org.apache.spark.sql.DataFrame = [_1: int, _2: int] 

scala> d.show 
+---+---+ 
| _1| _2| 
+---+---+ 
| 1| 3| 
| 2| 4| 
+---+---+ 


scala> d.limit(1) 
res1: org.apache.spark.sql.Dataset[org.apache.spark.sql.Row] = [_1: int, _2: int] 

scala> d.limit(1).show 
+---+---+ 
| _1| _2| 
+---+---+ 
| 1| 3| 
+---+---+ 

!

0

답 : df1은 테스트 용 - val df1 = sc.parallelize(List("a", 1")).toDF("text", "y")의 DataFrame [텍스트 : 문자열, y : int]입니다.

한 행의 경우
val dfFromArray = sparkContext.parallelize(arr).map(row => (row.getString(0), row.getInt(1))) 
    .toDF("text", "y"); 

실행할 수 있습니다 :

val schema = StructType(
    StructField("text", StringType, false) :: 
    StructField("y", IntegerType, false) :: Nil) 
val arr = df1.head(3); // Array[Row] 
val dfFromArray = sqlContext.createDataFrame(sparkContext.parallelize(arr), schema); 

또한 병렬화 된 배열을지도하고 모든 행을 시전 할 수

val dfFromArray = sparkContext.parallelize(Seq(row)).map(row => (row.getString(0), row.getInt(1))) 
    .toDF("text", "y"); 
스파크 2.0 사용 SparkSession에서

대신는 SqlContext을 .

+1

왜 downvote? 질문에 대한 100 % 답변, 테스트 및 작동 –

+0

동의 함, 나는 이것이 받아 들여진 응답이어야한다고 생각합니다. – belka

+0

@BelkacemLahouel 감사합니다 :) 도움이된다고 표명 해 주시면 감사하겠습니다. :) –

0

List<Row>이있는 경우 spark.createDataFrame(List<Row> rows, StructType schema)을 사용하여 dataframe 또는 dataset<Row>을 직접 생성하는 데 사용할 수 있습니다. 스파크가있는 곳 2.x의 스파크 세션 2.

관련 문제