스파크 데이터 프레임 처리에는 스키마 지식이 필요합니다. 유연하고 알 수없는 스키마를 가진 데이터 소스로 작업 할 때, Spark이 데이터로 무엇을 할 수 있기 전에, 스키마를 발견해야합니다. 이것은 load()
입니다. data
스키마를 발견하기위한 목적으로 만 데이터를 조사합니다. data
에서 작업을 수행하면 (예 : collect()
) Spark에서 실제로 처리하기 위해 데이터를 읽습니다.
load()
을 근본적으로 빠르게하는 유일한 방법은 스키마를 직접 제공하여 스키마 검색의 필요성을 없애는 것입니다. 여기에 예제가 the library documentation에서 가져옵니다 :
import org.apache.spark.sql.types._
val schemaMongo = StructType(StructField("name", StringType, true) :: StructField("age", IntegerType, true) :: Nil)
val df = sqlContext.read.schema(schemaMongo).format("com.stratio.datasource.mongodb").options(Map("host" -> "localhost:27017", "database" -> "highschool", "collection" -> "students")).load
당신은 1.0
기본보다 작은 값으로 schema_samplingRatio
구성 매개 변수를 설정하여 컬렉션의 문서의 일부를 샘플링하여 약간의 이득을 얻을 수 있습니다. 그러나 Mongo에는 샘플링이 내장되어 있지 않기 때문에 잠재적으로 많은 데이터에 액세스 할 수 있습니다.
출처
2016-06-11 18:17:42
Sim