저는 Spark 1.6.1을 사용하고 있으며 저는 Spark 세계에서 여전히 아주 새롭습니다. 파일을 ORC 형식으로 저장하는 중입니다.성능 향상 저장 Spark ORC
비교적 큰 텍스트 파일 (8GB)을 ORC로 구문 분석하려고합니다. 일반적으로 파일은 매우 넓습니다 (예 : 200 개 이상의 열).
열 유형은 기본 : Int, String, Date입니다. 모든 줄을 구문 분석 한 다음 persist()를 수행하고 파일에 저장하십시오.
val schema = StructType(
myTableColumns.map(
c => StructField(
//Field descriptions ~200 fields
)))
val rowRDD = rddProcessedLines.map(line => {
Row.fromSeq(line)
})
val fileSchemaRDD = hiveContext.createDataFrame(rowRDD, schema)
fileSchemaRDD.registerTempTable("output_table_name")
fileSchemaRDD.write.orc("output_folder")
문제는 성능이 매우 좋지입니다 : 여기
기본 코드입니다. 같은 텍스트 파일에서 관계형 데이터베이스로 가져 오는 것이 더 나쁩니다.나는 Snappy와 LZF 압축기 사이를 전환하려했으나별로 이득을 얻지 못했습니다. 노드와 코어 수에 대한 메모리 크기가 더 좋았습니다. 그런 다음 압축을 위해 버퍼 크기 등을 변경하기 시작했습니다. 많은 수의 열에 대해 성능이 크게 떨어지는 것을 알았습니다. 누군가 어디를 봐야할까요? 누군가가 ORC 파일 저장 최적화에 대한 유용한 주제를 지적 할 수 있습니까?
어디에서 스파크로 성능이 향상됩니까? 나는 1. 압축을 풀 필요가있다. 2. 어떻게 든 64 개의 덩어리로 분리하십시오 (내부 구조가 지속되어야 함을 명심하십시오). 3. 모든 것을 HDFS에 복사하십시오. 데이터베이스 'COPY'또는 가져 오기가 느려지는지 의심 스럽습니다. – user677571
그것은 마법 응용 프로그램이 아닙니다. 클러스터의 전체 용량을 정말로 사용하려면 확실히 파일 분할을 처리해야합니다. 그렇지 않으면 나머지를 사용하지 않고 단일 실행 프로그램을 오버로드합니다. – Nakul