programing

스칼라 스파크의 엑셀(xls,xlsx) 파일에서 데이터 프레임을 구성하는 방법은 무엇입니까?

projobs 2023. 6. 23. 23:50
반응형

스칼라 스파크의 엑셀(xls,xlsx) 파일에서 데이터 프레임을 구성하는 방법은 무엇입니까?

나는 큰 것을 가지고 있습니다.Excel(xlsx and xls)의 시트가 .RDD또는Dataframe그것이 다른 것들과 연결될 수 있도록.dataframe나중에. Apache POI를 사용하여 저장하려고 생각했습니다.CSV 리고읽습다니그다니▁and를 읽으세요.csvdataframe하지만 이 과정에서 도움이 될 수 있는 라이브러리나 API가 있다면 쉬울 것입니다.어떤 도움이든 대단히 감사합니다.

은 당의문대해사것입다니용는하은결책을 사용하는 것입니다.Spark Excel프로젝트에 대한 종속성.

스파크 엑셀은 유연성이 있습니다.options가지고 놀 수 있는.

는 다음코읽테습다니했스트도록를드▁에서 읽기 위해 다음 코드를 테스트했습니다.excel 다니합환으로 합니다.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)

당신은 줄다니있을 줄 수 .sheetname~하듯이optionExcel 시트에 여러 시트가 있는 경우

.option("sheetName", "Sheet2")

도움이 되길 바랍니다.

다음은 전체 옵션 집합과 함께 Excel에서 읽고 쓰는 읽기 및 쓰기 예제입니다.

크리알리틱스의 소스 스파크-엑셀

Scala API Spark 2.0+:

Excel 파일에서 데이터 프레임 만들기

    import org.apache.spark.sql._

val spark: SparkSession = ???
val df = spark.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 파일에 데이터 프레임 쓰기

    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")

참고: sheet1 또는 sheet2 대신 이름을 사용할 수도 있습니다.의 예에서 Daily는 시트 이름입니다.

  • 스파크 쉘에서 사용하고 싶다면,

는 스파크에 할 수 패키지입니다.--packages들어 셸을 할 때 시키려면:예를 들어 스파크 셸을 시작할 때 포함하려면 다음과 같이 하십시오.

    $SPARK_HOME/bin/spark-shell --packages com.crealytics:spark-excel_2.11:0.13.1

  • 종속성을 추가해야 합니다(Maven 등의 경우).
groupId: com.crealytics
artifactId: spark-excel_2.11
version: 0.13.1

추가 읽기: 여러 엑셀 시트로 집계한 후 엑셀 파일에 쓰는 방법에 대한 내 기사(Apache Spark, Scala를 사용하여 Excel 시트로 단순 보고하는 방법?)를 참조하십시오.

팁: 이 방법은 특히 엑셀에 샘플 데이터가 있는 엑셀 시트를 넣을 수 있는 메이븐 테스트 사례를 작성할 때 매우 유용합니다.src/main/resources하면 단위 케이스 수 . 이 에는 "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""를 생성합니다.DataFrame엑셀 시트에서...

  • 고려할 수 있는 또 다른 옵션은 스파크-하둡 오피스-ds입니다.

Hadoop Office 라이브러리용 Spark 데이터 소스입니다.이 스파크 데이터 소스는 스파크 2.0.1 이상을 가정합니다.그러나 Hadoop Office 라이브러리는 Spark 1.x에서 직접 사용할 수도 있습니다. 현재 이 데이터 소스는 다음과 같은 형식의 Hadoop Office 라이브러리를 지원합니다.

Excel 데이터 원본 형식:org.zuinnote.spark.office.Excel이전 Excel(.xls) 및 새 Excel(.xls) 로드 및 저장 이 데이터 소스는 Spark-packages.org 및 Maven Central에서 사용할 수 있습니다.

또는 암호화된 Excel 문서 및 링크된 워크북을 지원하는 Hadoop Office 라이브러리(https://github.com/ZuInnoTe/hadoopoffice/wiki), 를 사용할 수 있습니다.물론 스파크도 지원됩니다.

나는 com.crealytics.spark.excel-0.11 버전 jar를 사용했고 spark-Java에서도 마찬가지일 것입니다. javaSparkContext를 SparkContext로 변경하기만 하면 됩니다.

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");

이것이 도움이 되기를 바랍니다.

val df_excel= spark.read.
                   format("com.crealytics.spark.excel").
                   option("useHeader", "true").
                   option("treatEmptyValuesAsNulls", "false").
                   option("inferSchema", "false"). 
                   option("addColorColumns", "false").load(file_path)

display(df_excel)

언급URL : https://stackoverflow.com/questions/44196741/how-to-construct-dataframe-from-a-excel-xls-xlsx-file-in-scala-spark

반응형