[SCALA] 어떻게 스칼라 스파크에서 엑셀 (XLS, XLSX) 파일에서 Dataframe을 구성하는?
SCALA어떻게 스칼라 스파크에서 엑셀 (XLS, XLSX) 파일에서 Dataframe을 구성하는?
나는 큰 엑셀 (XLSX 및 XLS) 여러 시트 파일을 가지고 있고 나중에 다른 dataframe에 가입 할 수 있도록 내가 RDD 또는 Dataframe로 변환 할 필요가있다. 나는 CSV로 아파치 POI를 사용하고 저장을 생각하고 dataframe에 CSV를 읽었습니다. 어떤 라이브러리 나 API를이 있다면 그러나이 과정에서 캔 도움이 쉬울 것이다. 어떤 도움을 매우 높이 평가된다.
해결법
-
==============================
1.문제에 대한 해결책은 프로젝트에서 스파크 엑셀 의존성을 사용하는 것입니다.
문제에 대한 해결책은 프로젝트에서 스파크 엑셀 의존성을 사용하는 것입니다.
스파크 엑셀로 재생하는 유연한 옵션이 있습니다.
나는 엑셀 읽고 dataframe로 변환하려면 다음 코드를 테스트 한 그냥 완벽하게 작동
def readExcel(file: String): DataFrame = sqlContext.read .format("com.crealytics.spark.excel") .option("location", file) .option("useHeader", "true") .option("treatEmptyValuesAsNulls", "true") .option("inferSchema", "true") .option("addColorColumns", "False") .load() val data = readExcel("path to your excel file") data.show(false)
엑셀 시트를 여러 장있는 경우 당신은 옵션으로 시트 이름을 제공 할 수 있습니다
.option("sheetName", "Sheet2")
나는 그것의 도움을 바란다
-
==============================
2.여기에 읽기 및 쓰기 예제 옵션의 전체 세트로 엑셀로에서 읽기 및 쓰기에 ...
여기에 읽기 및 쓰기 예제 옵션의 전체 세트로 엑셀로에서 읽기 및 쓰기에 ...
crealytics에서 소스 스파크 엑셀
스칼라 API 스파크 2.0 이상 :
Excel 파일에서 DataFrame 만들기
import org.apache.spark.sql.SQLContext val sqlContext = new SQLContext(sc) val df = sqlContext.read .format("com.crealytics.spark.excel") .option("sheetName", "Daily") // Required .option("useHeader", "true") // Required .option("treatEmptyValuesAsNulls", "false") // Optional, default: true .option("inferSchema", "false") // Optional, default: false .option("addColorColumns", "true") // Optional, default: false .option("startColumn", 0) // Optional, default: 0 .option("endColumn", 99) // Optional, default: Int.MaxValue .option("timestampFormat", "MM-dd-yyyy HH:mm:ss") // Optional, default: yyyy-mm-dd hh:mm:ss[.fffffffff] .option("maxRowsInMemory", 20) // Optional, default None. If set, uses a streaming reader which can help with big files .option("excerptSize", 10) // Optional, default: 10. If set and if schema inferred, number of rows to infer schema from .schema(myCustomSchema) // Optional, default: Either inferred schema, or all columns are Strings .load("Worktime.xlsx")
Excel 파일에 DataFrame 쓰기
df.write .format("com.crealytics.spark.excel") .option("sheetName", "Daily") .option("useHeader", "true") .option("dateFormat", "yy-mmm-d") // Optional, default: yy-m-d h:mm .option("timestampFormat", "mm-dd-yyyy hh:mm:ss") // Optional, default: yyyy-mm-dd hh:mm:ss.000 .mode("overwrite") .save("Worktime2.xlsx")
이 패키지는 명령 줄 옵션을 --packages 사용하여 불꽃을 추가 할 수 있습니다. 스파크 쉘을 시작할 때 예를 들어, 포함하는 :
$SPARK_HOME/bin/spark-shell --packages com.crealytics:spark-excel_2.11:0.9.8
-
==============================
3.또는, 다른 기능 사이에, 또한 암호화 된 엑셀 문서와 연결된 통합 문서를 지원하는 HadoopOffice 라이브러리 (https://github.com/ZuInnoTe/hadoopoffice/wiki)를 사용할 수 있습니다. 물론 불꽃도 지원됩니다.
또는, 다른 기능 사이에, 또한 암호화 된 엑셀 문서와 연결된 통합 문서를 지원하는 HadoopOffice 라이브러리 (https://github.com/ZuInnoTe/hadoopoffice/wiki)를 사용할 수 있습니다. 물론 불꽃도 지원됩니다.
-
==============================
4.내가 com.crealytics.spark.excel - 0.11 버전 항아리를 사용하고 스파크 자바에서 만든, 그냥 SparkContext에 javaSparkContext을 변경할 필요도 스칼라에서 동일하다.
내가 com.crealytics.spark.excel - 0.11 버전 항아리를 사용하고 스파크 자바에서 만든, 그냥 SparkContext에 javaSparkContext을 변경할 필요도 스칼라에서 동일하다.
tempTable = new SQLContext(javaSparkContxt).read() .format("com.crealytics.spark.excel") .option("sheetName", "sheet1") .option("useHeader", "false") // Required .option("treatEmptyValuesAsNulls","false") // Optional, default: true .option("inferSchema", "false") //Optional, default: false .option("addColorColumns", "false") //Required .option("timestampFormat", "MM-dd-yyyy HH:mm:ss") // Optional, default: yyyy-mm-dd hh:mm:ss[.fffffffff] .schema(schema) .schema(schema) .load("hdfs://localhost:8020/user/tester/my.xlsx");
from https://stackoverflow.com/questions/44196741/how-to-construct-dataframe-from-a-excel-xls-xlsx-file-in-scala-spark by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 어떻게 쌍 RDD에서 최대 값을 찾는 방법은? (0) | 2019.11.12 |
---|---|
[SCALA] 스칼라에서 "반환"문의 목적? (0) | 2019.11.12 |
[SCALA] 스칼라에서 foldLeft를 사용하여 카레 함수에 인수리스트를 적용 (0) | 2019.11.12 |
[SCALA] 어떻게 스칼라 스파크에서 RDD를 정렬하려면? (0) | 2019.11.12 |
[SCALA] "알 수없는 유물. scalatest 아니 해결 또는 인덱싱 "오류 (0) | 2019.11.12 |