Как настроить Executor в локальном режиме Spark

Короче говоря

Я хочу настроить свое приложение для использования сжатия lz4 вместо мгновенного, что я сделал:

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]

Согласно это сообщение, то, что я сделал здесь, только настроил драйвер, но не исполнителя. Решение в посте состоит в том, чтобы изменить файл 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 для кодека, поэтому я пробую вышеуказанное решение.

Я застрял в этой проблеме в течение нескольких часов, любая помощь приветствуется, спасибо.


person Ning Lin    schedule 08.09.2017    source источник


Ответы (2)


то, что я сделал здесь, только настроил драйвер, но не экзекьютор.

В режиме local есть только одна JVM, в которой размещаются потоки драйвера и исполнителя.

файл spark-defaults.conf, но я запускаю spark в локальном режиме, у меня нигде нет этого файла.

Режим тут не причем. Spark в режиме local использует те же файлы конфигурации. Если вы перейдете в каталог, в котором хранятся двоичные файлы 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

Если вы хотите установить параметр конфигурации, скопируйте spark-defaults.conf.template в spark-defaults.conf и отредактируйте его в соответствии с вашими требованиями.

person Alper t. Turker    schedule 08.09.2017

Публикуя здесь свое решение, @user8371915 ответил на вопрос, но не решил мою проблему, потому что в моем случае я не могу изменить файлы свойств.

В итоге я добавляю еще одну конфигурацию

session = SparkSession.builder()
        .master(SPARK_MASTER) //local[1]
        .appName(SPARK_APP_NAME)
        .config("spark.io.compression.codec", "org.apache.spark.io.LZ4CompressionCodec")
        .config("spark.sql.parquet.compression.codec", "uncompressed")
        .getOrCreate();
person Ning Lin    schedule 13.09.2017