当运行spark-shell
时,它会创建一个文件derby.log
和一个文件夹metastore_db
,我如何配置spark来把它们放在其他地方?
对于derby log,我尝试过Getting rid of derby.log,比如spark-shell --driver-memory 10g --conf "-spark.driver.extraJavaOptions=Dderby.stream.info.file=/dev/null"
,它有几个不同的属性,但是spark忽略了它们。
有人知道如何摆脱这些或为它们指定一个默认目录吗?
7条答案
按热度按时间6kkfgxo01#
自Spark 2.0.0起,
hive.metastore.warehouse.dir
的使用已弃用,请参阅文档。正如this answer所暗示的,
metastore_db
目录和每个工作子目录中创建的derby.log
文件的真实的罪魁祸首是derby.system.home
属性默认为.
。因此,可以通过向
spark-defaults.conf
添加以下行来指定两者的默认位置:其中
/tmp/derby
可以替换为您选择的目录。ntjbwcob2#
对于spark-shell,为了避免使用
metastore_db
目录,并避免在代码中这样做(因为上下文/会话已经创建,您不会停止它们并每次使用新配置重新创建它们),您必须在hive-site.xml
文件中设置其位置,并将此文件复制到spark conf目录中。一个
hive-site.xml
示例文件,用于确定metastore_db
在/tmp
中的位置(参考我的答案here):之后,您可以按如下所示启动
spark-shell
,以便也删除derby.log
envsm3lx3#
在启动spark shell之前,尝试将
derby.system.home
作为系统属性设置为其他目录,Derby将在那里创建新数据库。参考:https://db.apache.org/derby/integrate/plugin_help/properties.html
dced5bon4#
使用
hive.metastore.warehouse.dir
属性。来自文档:对于Derby日志:Getting rid of derby.log可能是答案。通常在您的工作目录中创建
derby.properties
文件,内容如下:tcbh2hod5#
对于我来说,设置Spark属性不起作用,无论是在驱动程序还是执行器上。因此,为了查找这个问题,我最终使用以下命令设置了系统的属性:
而那最终让我摆脱了那些烦人的物品。
rn0zuynd6#
如果你正在使用Jupyter/Jupyterhub/Jupyterlab或者只是在python中设置这个conf参数,那么使用下面的方法就可以了:
plicqrtu7#
对于pyspark,下面的配置工作!!