2016-07-14 31 views
9

Quando si esegue spark-shell crea un file derby.log e una cartella metastore_db. Come configuro la scintilla per metterli da qualche altra parte?Come sbarazzarsi di derby.log, metastore_db da Spark Shell

Per il registro di derby, ho provato Getting rid of derby.log così spark-shell --driver-memory 10g --conf "-spark.driver.extraJavaOptions=Dderby.stream.info.file=/dev/null" con un paio di proprietà diverse ma la scintilla li ignora.

Qualcuno sa come sbarazzarsi di questi o specificare una directory predefinita per loro?

+0

Hai digitato 'derby.stream.info.file' nel testo della tua domanda. La domanda a cui ti sei collegato, http://stackoverflow.com/questions/1004327/getting-rid-of-derby-log dice di configurare 'derby.stream.error.file'. Quale hai effettivamente provato? –

risposta

5

L'utilizzo di hive.metastore.warehouse.dir è obsoleto in quanto Spark 2.0.0, see the docs.

Come accennato dal this answer, il vero colpevole sia per la directory metastore_db e il file derby.log creati in ogni sottodirectory di lavoro è la proprietà derby.system.home inadempiente a ..

Così, un percorso predefinito per entrambi può essere specificato aggiungendo la seguente riga al spark-defaults.conf:

spark.driver.extraJavaOptions -Dderby.system.home=/tmp/derby 

dove /tmp/derby possono essere sostituiti da una cartella a vostra scelta.

+1

Questo non sembra funzionare più. Usando la scintilla 2.2 :( –

+1

ho provato su una nuova installazione di Spark 2.2.1 e sta funzionando per me, forse ha a che fare con le autorizzazioni? – hiryu

2

Utilizzare la proprietà hive.metastore.warehouse.dir. From docs:

val spark = SparkSession 
    .builder() 
    .appName("Spark Hive Example") 
    .config("spark.sql.warehouse.dir", warehouseLocation) 
    .enableHiveSupport() 
    .getOrCreate() 

Per registro derby: Getting rid of derby.log potrebbe essere la risposta. In generale, creare derby.properties file nella directory di lavoro con seguente contenuto:

derby.stream.error.file=/path/to/desired/log/file 
+0

Avete un codice effettivo per risolvere il registro del derby? –

+0

È possibile utilizzare 'derby.properties'. –

10

scintilla scocca, per evitare di avere la directory metastore_db ed evitare di farlo nel codice (poiché il contesto/sessione è già stato creato e hai vinto' t fermarli e ricrearli ogni volta con la nuova configurazione), devi impostare la sua posizione nel file hive-site.xml e copiare questo file nella directory spark conf.
Un campione hive-site.xml file per rendere la posizione del metastore_db a /tmp (fare riferimento alla mia risposta here):

<configuration> 
    <property> 
    <name>javax.jdo.option.ConnectionURL</name> 
    <value>jdbc:derby:;databaseName=/tmp/metastore_db;create=true</value> 
    <description>JDBC connect string for a JDBC metastore</description> 
    </property> 
    <property> 
    <name>javax.jdo.option.ConnectionDriverName</name> 
    <value>org.apache.derby.jdbc.EmbeddedDriver</value> 
    <description>Driver class name for a JDBC metastore</description> 
    </property> 
    <property> 
     <name>hive.metastore.warehouse.dir</name> 
     <value>/tmp/</value> 
     <description>location of default database for the warehouse</description> 
    </property> 
</configuration> 

Dopo di che si potrebbe iniziare la spark-shell come la seguente per sbarazzarsi di derby.log così

$ spark-shell --conf "spark.driver.extraJavaOptions=-Dderby.stream.error.file=/tmp" 
+0

Come disabilitare il derby interamente in modalità standalone.Molti dei vecchi metodi (postgres setup + db creation + hive-site.xml sembrano non funzionare più su spark 2.2) – mathtick

Problemi correlati