Saya menginstal Spark menggunakan panduan AWS EC2 dan saya dapat meluncurkan program dengan baik menggunakan bin/pyspark
script untuk sampai ke percikan percikan dan juga dapat melakukan Quick Start quide berhasil.
Namun, saya tidak bisa selama hidup saya mencari cara untuk menghentikan semua INFO
logging verbose setelah setiap perintah.
Saya telah mencoba hampir setiap skenario yang mungkin dalam kode di bawah ini (mengomentari, mengatur ke OFF) dalam log4j.properties
file saya di conf
folder di mana saya meluncurkan aplikasi dari serta pada setiap node dan tidak ada yang melakukan apa-apa. Saya masih mendapatkan INFO
pencetakan laporan logging setelah mengeksekusi setiap pernyataan.
Saya sangat bingung dengan bagaimana ini seharusnya bekerja.
#Set everything to be logged to the console log4j.rootCategory=INFO, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n
# Settings to quiet third party logs that are too verbose
log4j.logger.org.eclipse.jetty=WARN
log4j.logger.org.apache.spark.repl.SparkIMain$exprTyper=INFO
log4j.logger.org.apache.spark.repl.SparkILoop$SparkILoopInterpreter=INFO
Ini classpath penuh saya ketika saya menggunakan SPARK_PRINT_LAUNCH_COMMAND
:
Spark Command: /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home/bin/java -cp: /root/spark-1.0.1-bin-hadoop2/conf: /root/spark-1.0.1 -bin-hadoop2 / conf: /root/spark-1.0.1-bin-hadoop2/lib/spark-assembly-1.0.1-hadoop2.2.0.jar: /root/spark-1.0.1-bin-hadoop2/lib /datanucleus-api-jdo-3.2.1.jar:/root/spark-1.0.1-bin-hadoop2/lib/datanucleus-core-3.2.2.jar:/root/spark-1.0.1-bin-hadoop2 /lib/datanucleus-rdbms-3.2.1.jar -XX: MaxPermSize = 128m -Djava.library.path = -Xms512m -Xmx512m org.apache.spark.deploy.SparkSubmit spark-shell --class org.apache.spark. repl. Utama
isi dari spark-env.sh
:
#!/usr/bin/env bash
# This file is sourced when running various Spark programs.
# Copy it as spark-env.sh and edit that to configure Spark for your site.
# Options read when launching programs locally with
# ./bin/run-example or ./bin/spark-submit
# - HADOOP_CONF_DIR, to point Spark towards Hadoop configuration files
# - SPARK_LOCAL_IP, to set the IP address Spark binds to on this node
# - SPARK_PUBLIC_DNS, to set the public dns name of the driver program
# - SPARK_CLASSPATH=/root/spark-1.0.1-bin-hadoop2/conf/
# Options read by executors and drivers running inside the cluster
# - SPARK_LOCAL_IP, to set the IP address Spark binds to on this node
# - SPARK_PUBLIC_DNS, to set the public DNS name of the driver program
# - SPARK_CLASSPATH, default classpath entries to append
# - SPARK_LOCAL_DIRS, storage directories to use on this node for shuffle and RDD data
# - MESOS_NATIVE_LIBRARY, to point to your libmesos.so if you use Mesos
# Options read in YARN client mode
# - HADOOP_CONF_DIR, to point Spark towards Hadoop configuration files
# - SPARK_EXECUTOR_INSTANCES, Number of workers to start (Default: 2)
# - SPARK_EXECUTOR_CORES, Number of cores for the workers (Default: 1).
# - SPARK_EXECUTOR_MEMORY, Memory per Worker (e.g. 1000M, 2G) (Default: 1G)
# - SPARK_DRIVER_MEMORY, Memory for Master (e.g. 1000M, 2G) (Default: 512 Mb)
# - SPARK_YARN_APP_NAME, The name of your application (Default: Spark)
# - SPARK_YARN_QUEUE, The hadoop queue to use for allocation requests (Default: ‘default’)
# - SPARK_YARN_DIST_FILES, Comma separated list of files to be distributed with the job.
# - SPARK_YARN_DIST_ARCHIVES, Comma separated list of archives to be distributed with the job.
# Options for the daemons used in the standalone deploy mode:
# - SPARK_MASTER_IP, to bind the master to a different IP address or hostname
# - SPARK_MASTER_PORT / SPARK_MASTER_WEBUI_PORT, to use non-default ports for the master
# - SPARK_MASTER_OPTS, to set config properties only for the master (e.g. "-Dx=y")
# - SPARK_WORKER_CORES, to set the number of cores to use on this machine
# - SPARK_WORKER_MEMORY, to set how much total memory workers have to give executors (e.g. 1000m, 2g)
# - SPARK_WORKER_PORT / SPARK_WORKER_WEBUI_PORT, to use non-default ports for the worker
# - SPARK_WORKER_INSTANCES, to set the number of worker processes per node
# - SPARK_WORKER_DIR, to set the working directory of worker processes
# - SPARK_WORKER_OPTS, to set config properties only for the worker (e.g. "-Dx=y")
# - SPARK_HISTORY_OPTS, to set config properties only for the history server (e.g. "-Dx=y")
# - SPARK_DAEMON_JAVA_OPTS, to set config properties for all daemons (e.g. "-Dx=y")
# - SPARK_PUBLIC_DNS, to set the public dns name of the master or workers
export SPARK_SUBMIT_CLASSPATH="$FWDIR/conf"
Jawaban:
Cukup jalankan perintah ini di direktori percikan:
Edit log4j.properties:
Ganti di baris pertama:
oleh:
Simpan dan mulai ulang shell Anda. Ini berfungsi untuk saya untuk Spark 1.1.0 dan Spark 1.5.1 di OS X.
sumber
Terinspirasi oleh pyspark / tests.py yang saya lakukan
Memanggil ini hanya setelah membuat SparkContext mengurangi garis stderr yang dicatat untuk pengujian saya dari 2647 menjadi 163. Namun membuat SparkContext sendiri mencatat 163, hingga
dan tidak jelas bagi saya bagaimana mengaturnya secara terprogram.
sumber
Di Spark 2.0 Anda juga dapat mengonfigurasinya secara dinamis untuk aplikasi Anda menggunakan setLogLevel :
Di konsol pyspark ,
spark
sesi default sudah tersedia.sumber
log4j
tidak dapat diakses.Edit file conf / log4j.properties Anda dan Ubah baris berikut:
untuk
Pendekatan lain adalah:
Fire-spark-shell dan ketik berikut ini:
Anda tidak akan melihat log apa pun setelah itu.
sumber
sumber
Untuk PySpark, Anda juga dapat mengatur level log dalam skrip Anda
sc.setLogLevel("FATAL")
. Dari dokumen :sumber
Anda dapat menggunakan setLogLevel
sumber
Ini mungkin karena bagaimana Spark menghitung classpath-nya. Firasat saya adalah bahwa
log4j.properties
file Hadoop muncul di depan Spark di classpath, mencegah perubahan Anda dari efek.Jika Anda berlari
kemudian Spark akan mencetak classpath penuh yang digunakan untuk meluncurkan shell; dalam kasus saya, saya mengerti
di mana
/root/ephemeral-hdfs/conf
adalah di kepala classpath.Saya telah membuka masalah [SPARK-2913] untuk memperbaikinya di rilis berikutnya (saya harus segera tambalan).
Sementara itu, inilah beberapa solusi:
export SPARK_SUBMIT_CLASSPATH="$FWDIR/conf"
kespark-env.sh
./root/ephemeral-hdfs/conf/log4j.properties
.sumber
Spark 1.6.2:
Spark 2.x:
(percikan menjadi SparkSession)
Atau metode lama,
Ganti nama
conf/log4j.properties.template
menjadiconf/log4j.properties
di Spark Dir.Di
log4j.properties
, ubahlog4j.rootCategory=INFO, console
kelog4j.rootCategory=WARN, console
Tingkat log yang berbeda tersedia:
sumber
Cara terprogram
pilihan yang tersedia
sumber
Saya menggunakan ini dengan Amazon EC2 dengan 1 master dan 2 budak dan Spark 1.2.1.
sumber
Cukup tambahkan param di bawah ini ke perintah percikan-kirim Anda
Ini mengesampingkan nilai sistem sementara hanya untuk pekerjaan itu. Periksa nama properti yang tepat (log4jspark.root.logger di sini) dari file log4j.properties.
Semoga ini bisa membantu, tepuk tangan!
sumber
--conf spark.driver.extraJavaOptions='-Dlog4j.configuration=file:/home/foobar/log4j.properties
Cuplikan kode di bawah ini untuk pengguna scala:
Pilihan 1 :
Di bawah cuplikan Anda dapat menambahkan di tingkat file
Pilihan 2 :
Opsi 3:
sumber
Cara saya melakukannya adalah:
di lokasi saya menjalankan
spark-submit
skrip lakukanubah
INFO
ke level apa saja dari logging yang Anda inginkan dan kemudian jalankanspark-submit
sumber
cp /etc/spark/conf/log4j.properties.template .
Saya ingin tetap menggunakan pencatatan (Fasilitas pencatatan untuk Python) Anda dapat mencoba memisahkan konfigurasi untuk aplikasi Anda dan untuk Spark:
sumber