[SCALA] 어떻게 CSV 파일에서 스키마를 만들고 파일에 해당 스키마 저장 / 유지하기 위해?
SCALA어떻게 CSV 파일에서 스키마를 만들고 파일에 해당 스키마 저장 / 유지하기 위해?
나는 10 열 CSV 파일이 있습니다. 반 문자열 절반은 정수이다.
스칼라 코드는 무엇입니까 :
지금까지이있다 :
import org.apache.spark.sql.SQLContext
val sqlContext = new SQLContext(sc)
val df = sqlContext.read
.format("com.databricks.spark.csv")
.option("header", "true") // Use first line of all files as header
.option("inferSchema", "true") // Automatically infer data types
.load("cars.csv")
그리고 그 스키마를 저장하기위한 최적의 파일 형식은 무엇입니까? 그것은 JSON인가?
목표는 - 내가 파일에서 대신 즉석에서 그것을 다시 만드는 한 번만 스키마와 다음에 부하를 만들려고합니다.
감사.
해결법
-
==============================
1.JSON은 자연 선택 때문에 데이터 형식 API는 필요한 모든 유틸리티를 제공 :
JSON은 자연 선택 때문에 데이터 형식 API는 필요한 모든 유틸리티를 제공 :
import org.apache.spark.sql.types._ import scala.util.Try val df = Seq((1L, "foo", 3.0)).toDF("id", "x1", "x2") val serializedSchema: String = df.schema.json def loadSchema(s: String): Option[StructType] = Try(DataType.fromJson(s)).toOption.flatMap { case s: StructType => Some(s) case _ => None } loadSchema(serializedSchema)
이 파일이 쓰기, 또는 스파크 RDD를 해킹 표준 스칼라 방법을 사용 할 수 있습니다 요구 사항에 따라 :
val schemaPath: String = ??? sc.parallelize(Seq(serializedSchema), 1).saveAsTextFile(schemaPath) val loadedSchema: Option[StructType] = sc.textFile(schemaPath) .map(loadSchema) // Load .collect.headOption.flatten // Make sure we don't fail if there is no data
파이썬 동등한를 들어 PySpark에서 JSON 스키마 구조를 정의하는 구성 파일을 참조하십시오
from https://stackoverflow.com/questions/42004245/how-to-create-a-schema-from-csv-file-and-persist-save-that-schema-to-a-file by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 자바에서 scala.None 액세스 (0) | 2019.11.18 |
---|---|
[SCALA] 불꽃의 모든 열 / 행 전체를 처리 UDF (0) | 2019.11.18 |
[SCALA] 스파크 열 문자열 다른 열 (행)에 존재하는 경우 대체 (0) | 2019.11.18 |
[SCALA] 스칼라 단일 메소드 인터페이스 구현 (0) | 2019.11.17 |
[SCALA] 매개 변수 값 스칼라 - 스파크 동적으로 호출 GROUPBY 및 AGG (0) | 2019.11.17 |