apache-spark – 如何在Spark本地模式下配置Executor

简而言之

我想配置我的应用程序使用lz4压缩而不是snappy,我做的是:

session = SparkSession.builder()
        .master(SPARK_MASTER) //local[1]
        .appName(SPARK_APP_NAME)
        .config("spark.io.compression.codec", "org.apache.spark.io.LZ4CompressionCodec")
        .getOrCreate();

但是看一下控制台输出,它仍然在执行器中使用snappy

org.apache.parquet.hadoop.codec.CodecConfig: Compression: SNAPPY

[Executor task launch worker-0] compress.CodecPool (CodecPool.java:getCompressor(153)) - Got brand-new compressor [.snappy]

根据this post,我在这里做的只是配置驱动程序,而不是执行程序.帖子上的解决方案是更改spark-defaults.conf文件,但我在本地模式下运行spark,我在任何地方都没有该文件.

更多细节:

我需要以本地模式运行应用程序(用于单元测试).测试在我的机器上本地工作正常,但是当我将测试提交给构建引擎(RHEL5_64)时,我得到了错误

snappy-1.0.5-libsnappyjava.so: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.9' not found

我做了一些研究,似乎最简单的解决方法是使用lz4而不是snappy用于编解码器,所以我尝试上面的解决方案.

我已经被困在这个问题上几个小时了,感谢任何帮助,谢谢.

最佳答案

what I did here only configure the driver, but not the executor.

在本地模式下,只有一个JVM承载驱动程序和执行程序线程.

the spark-defaults.conf file, but I’m running spark in local mode, I don’t have that file anywhere.

模式与此无关.本地模式下的Spark使用相同的配置文件.如果您转到存储Spark二进制文件的目录,您应该看到conf目录:

spark-2.2.0-bin-hadoop2.7 $ls
bin  conf  data  examples  jars  LICENSE  licenses  NOTICE  python  R  README.md  RELEASE  sbin  yarn

在这个目录中有一堆模板文件:

spark-2.2.0-bin-hadoop2.7 $ls conf 
docker.properties.template  log4j.properties.template    slaves.template               spark-env.sh.template

fairscheduler.xml.template metrics.properties.template spark-defaults.conf.template

如果要将配置选项copy spark-defaults.conf.template设置为spark-defaults.conf并根据您的要求进行编辑.

点赞