2016-07-14 57 views
9

当运行spark-shell时,它创建一个文件derby.log和一个文件夹metastore_db。我如何配置火花把这些放在其他地方?如何从Spark Shell中删除derby.log,metastore_db

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

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

+0

您在问题的文本中输入了'derby.stream.info.file'。你链接到的问题,http://stackoverflow.com/questions/1004327/getting-rid-of-derby-log说配置'derby.stream.error.file'。你真的尝试过哪一个? –

回答

5

自从Spark 2.0.0, see the docs以来,不推荐使用hive.metastore.warehouse.dir

由于暗示的this answer,在每个工作子目录中创建两个metastore_db目录和文件derby.log真正的罪魁祸首是derby.system.home属性默认为.

因此,对于默认位置可以通过添加以下行来spark-defaults.conf指定:

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

其中/tmp/derby可以通过您所选择的目录来代替。

+1

这似乎不再适用。使用spark 2.2 :( –

+1

我测试了一个新的Spark 2.2.1安装,它对我有用,也许它与权限有关? – hiryu

2

使用hive.metastore.warehouse.dir属性。 From docs

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

德比日志:Getting rid of derby.log可能是答案。一般来说创建derby.properties文件工作目录有以下内容:

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

你有解决德比日志的实际代码吗? –

+0

您可以使用'derby.properties'。 – 2016-11-11 04:50:28

10

火花壳,以避免在metastore_db目录,并避免在代码做(因为已经创建上下文/会话,你赢了”不要停止它们并每次使用新配置重新创建它们),则必须将其位置设置为hive-site.xml文件并将该文件复制到spark conf目录中。
样本hive-site.xml文件,以使/tmpmetastore_db位置(参见我的答案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> 

之后,你可以开始你的spark-shell为以下摆脱derby.log以及

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

如何在独立中完全禁用德比。很多旧的方法(postgres setup + db creation + hive-site.xml似乎不再适用于spark 2.2) – mathtick