복붙노트

[HADOOP] Spark에서 ORC 속성을 구성 할 수 없습니다.

HADOOP

Spark에서 ORC 속성을 구성 할 수 없습니다.

Spark 1.6 (Cloudera 5.8.2)을 사용 중이며 아래의 ORC 속성을 구성하는 방법을 시도했습니다. 그러나 출력에는 영향을 미치지 않습니다.

아래 코드는 제가 시도한 것입니다.

 DataFrame dataframe =
                hiveContext.createDataFrame(rowData, schema);
dataframe.write().format("orc").options(new HashMap(){
            {

                put("orc.compress","SNAPPY");
                put("hive.exec.orc.default.compress","SNAPPY");

                put("orc.compress.size","524288");
                put("hive.exec.orc.default.buffer.size","524288");


                put("hive.exec.orc.compression.strategy", "COMPRESSION");

            }
        }).save("spark_orc_output");

이 외에도 hive-site.xml 및 hiveContext 객체에도 이러한 속성을 설정해 보았습니다.

hive --orcfiledump on output은 구성이 적용되지 않았 음을 확인합니다. Orcfiledump 스 니펫은 아래에 있습니다.

Compression: ZLIB
Compression size: 262144

해결법

  1. ==============================

    1.여기서 두 가지 다른 오류를 만들고 있습니다. 나는 너를 비난하지 않는다. 나 거기 가봤 어...

    여기서 두 가지 다른 오류를 만들고 있습니다. 나는 너를 비난하지 않는다. 나 거기 가봤 어...

    이슈 # 1 orc.compress이고 나머지는 Spark DataFrameWriter 옵션이 아닙니다. 그것들은 HiveContext 객체를 생성하기 전에 정의되어야하는 Hive 구성 속성입니다 ...

    sc.getConf.get ( "orc.compress", "") // Hadoop conf에 의존합니다. sc.stop val scAlt = 새로운 org.apache.spark.SparkContext ((새로운 org.apache.spark.SparkConf) .set ( "orc.compress", "snappy")) scAlt.getConf.get ( "orc.compress", "") // 이제 Snappy가됩니다. val hiveContextAlt = 새로운 org.apache.spark.sql.SQLContext (scAlt)

    [편집] 스파크 2.x와 스크립트가 될 것입니다 ... spark.sparkContext.getConf.get ( "orc.compress", "") // Hadoop conf에 의존합니다. spark.close sparkAlt = org.apache.spark.sql.SparkSession.builder (). config ( "orc.compress", "snappy"). getOrCreate () sparkAlt.sparkContext.getConf.get ( "orc.compress", "") // 이제 Snappy가됩니다.

    이슈 # 2 Spark은 ORC (및 마루, JSON, CSV 등) 용 자체 SerDe 라이브러리를 사용하므로 표준 Hadoop / Hive 속성을 따를 필요가 없습니다.

    마루에 대한 일부 Spark 특유의 속성이 있으며 잘 문서화되어 있습니다. 다만, hiveContext를 작성 (또는 재 작성)하기 전에, 이러한 프롭퍼티를 설정할 필요가 있습니다.

    ORC 및 다른 형식의 경우 형식 별 DataFrameWriter 옵션을 사용해야합니다. 최신 JavaDoc 인용하기 ...

    Spark 2에서는 기본 압축 코덱이 변경되었습니다. 그 전에 그것은 zlib이었다.

    그래서 당신이 설정할 수있는 유일한 것은 압축 코덱입니다.

    dataframe.write().format("orc").option("compression","snappy").save("wtf")
    
  2. from https://stackoverflow.com/questions/41756775/unable-to-configure-orc-properties-in-spark by cc-by-sa and MIT license