如何从Spark Shell中删除derby.log,metastore_db

Car*_*cas 18 derby apache-spark

运行spark-shell时会创建一个文件derby.log和一个文件夹metastore_db.如何配置spark以将这些放在其他地方?

对于derby日志,我尝试过去掉derby.log就像这样spark-shell --driver-memory 10g --conf "-spark.driver.extraJavaOptions=Dderby.stream.info.file=/dev/null"有几个不同的属性,但火花忽略了它们.

有谁知道如何摆脱这些或为他们指定默认目录?

hir*_*ryu 13

使用的hive.metastore.warehouse.dir,因为星火2.0.0已被弃用, 请参阅该文档.

正如这个答案暗示的那样,metastore_db目录和derby.log在每个工作子目录中创建的文件的真正罪魁祸首是derby.system.home属性默认为..

因此,可以通过将以下行添加到以下内容来指定两者的默认位置spark-defaults.conf:

spark.driver.extraJavaOptions -Dderby.system.home=/tmp/derby
Run Code Online (Sandbox Code Playgroud)

哪里/tmp/derby可以替换为您选择的目录.

  • 这似乎不再起作用。使用spark 2.2 :( (3认同)

use*_*742 12

对于spark-shell,要避免使用metastore_db目录并避免在代码中执行(因为上下文/会话已经创建,并且您不会停止它们并且每次都使用新配置重新创建它们),您必须设置其位置在hive-site.xml 文件中并将此文件复制到spark conf目录中.
样本hive-site.xml文件进行的位置metastore_db/tmp (参见我的答案在这里):

<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>
Run Code Online (Sandbox Code Playgroud)

在那之后你可以开始你spark-shell的下面以摆脱 derby.log

$ spark-shell --conf "spark.driver.extraJavaOptions=-Dderby.stream.error.file=/tmp"
Run Code Online (Sandbox Code Playgroud)