2016-07-14 8 views
9

Po uruchomieniu spark-shell tworzy plik derby.log i folder metastore_db. Jak skonfigurować iskry, aby umieścić je gdzie indziej?Jak pozbyć się derby.log, metastore_db ze Spark Shell

Dla dziennika derby wypróbowałem Getting rid of derby.log podobnie jak spark-shell --driver-memory 10g --conf "-spark.driver.extraJavaOptions=Dderby.stream.info.file=/dev/null" z kilkoma różnymi właściwościami, ale iskra ignoruje je.

Czy ktoś wie, jak się ich pozbyć lub podać dla nich domyślny katalog?

+0

W tekście pytania wpisałeś 'derby.stream.info.file'. Pytanie, które łączysz z http://stackoverflow.com/questions/1004327/getting-rid-of-derby-log mówi, aby skonfigurować plik 'derby.stream.error.file'. Który właściwie próbowałeś? –

Odpowiedz

5

Używanie hive.metastore.warehouse.dir jest przestarzałe od Spark 2.0.0, see the docs.

Jak zasugerował przez this answer, prawdziwym winowajcą zarówno katalog metastore_db a plik derby.log tworzone w każdym podkatalogu pracy jest własnością derby.system.home zalegających do ..

Zatem Domyślna lokalizacja zarówno można określić dodając następującą linię do spark-defaults.conf:

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

gdzie /tmp/derby może być zastąpiony przez wybranego katalogu.

+1

To już nie działa. Używanie iskry 2.2 :( –

+1

Przetestowałem na nowej instalacji Sparka 2.2.1 i to działa dla mnie. Może ma to związek z uprawnieniami? – hiryu

2

Użyj właściwości hive.metastore.warehouse.dir. From docs:

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

Dla dziennika derby: Getting rid of derby.log może być odpowiedź. W ogóle tworzyć derby.properties plik w katalogu roboczym z następującej treści:

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

Czy masz rzeczywisty kod do rozwiązania dziennika derby? –

+0

Możesz użyć 'derby.properties'. –

10

iskry-shell, aby uniknąć konieczności katalog metastore_db i uniknąć robi to w kodzie (od kontekstu/sesja jest już stworzony i wygrał” t zatrzymaj je i odtwórz je za każdym razem za pomocą nowej konfiguracji), musisz ustawić jego lokalizację w pliku hive-site.xml i skopiować ten plik do katalogu iskrobrzenia.
Próbkę hive-site.xml plik do lokalizacji metastore_db w /tmp (patrz moją odpowiedź 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> 

Po tym można rozpocząć spark-shell jako następujące pozbyć derby.log także

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

Jak wyłączyć derby w całości w trybie autonomicznym.Wiele starych metod (instalacja PostgreSQL + tworzenie DB + Hive-Site.xml wydaje się już nie działać na iskrze 2.2). – mathtick

Powiązane problemy