相关疑难解决方法(0)

摆脱derby.log

我正在使用Apache Derby嵌入式数据库在Maven项目中进行单元测试.不幸的是,每当我运行测试时,我最终都会derby.log在项目的根目录中找到该文件.数据库本身是在target目录(jdbc:derby:target/unittest-db;create=true)中创建的,因此这不是问题.在查阅参考指南之后, 我尝试logDevice在JDBC url(jdbc:derby:target/unittest-db;create=true;logDevice=/mylogs)上设置参数,但这似乎是针对不同的日志,因此derby.log仍然会出现.

任何帮助深表感谢.

java maven-2 derby

27
推荐指数
3
解决办法
2万
查看次数

如何使用内存Derby数据库在Hive(Scala)中进行测试

我在Scala 2.11中使用spark-hive 2.3.0,并设置了一个单元测试框架。spark-hive附带了TestHiveContextTestHiveSparkSession可以方便地从单元测试中调用Hive,而无需运行Hadoop,Spark或集群,这非常适合自动化测试。

Hive需要一个用于其metastore的数据库,以这种方式运行时,它会将Derby用作嵌入式数据库javax.jdo.option.ConnectionURL,默认配置为jdbc:derby:;databaseName=<file-path>;create=true。该<file-path>是在本地文件系统中的位置,是运行德比一个选项。

另一个选择是在内存中运行Derby,通常就像将此URL更改为一样容易jdbc:derby:memory:databaseName;create=true。但是,Hive无法做到这一点,因为配置是在内部HiveUtils类中进行的,并且不能被覆盖。我曾尝试在Spark Session Builder中对其进行更改,但后来HiveUtils创建我的时,所做的更改就被淹没了TestHiveContext

在我的情况下,最好使用内存数据库,因为我们的开发人员在Windows上运行(肯定不是我/我们的选择),并且在创建这些文件时,经常会出现诸如权限或文件名中的无效字符之类的问题(因为从未真正打算使用Hadoop)才能在Windows上使用),并且由于无法清理(由于这些问题),这些文件通常会被丢弃。我们希望测试是完全独立的,以便它们可以运行和完成而没有副作用,因此可以在多种环境(开发人员,CI,Jenkins,AWS等)中运行。

有趣的是,我在TestHive.scala

{ // set the metastore temporary configuration
  val metastoreTempConf = HiveUtils.newTemporaryConfiguration(useInMemoryDerby = false) ++ Map(
Run Code Online (Sandbox Code Playgroud)

因此,存在使用内存数据库的标志,但这是不可配置的,并且没有将其设置为的代码路径true

有什么方法可以配置或编写此文件,以便TestHiveDerby可以在内存中吗?尝试设置的值javax.jdo.option.ConnectionURL通过任蜂房的site.xml或HDFS-site.xml中不工作,我认为这是因为如何TestHiveTestHiveContextTestHiveSparkSession被初始化,他们有自己的代码路径从非测试路径分开。他们提供的功能对测试框架非常有帮助,但显然没有提供覆盖此值和其他设置的方法。

到目前为止,我能看到的最好的选择是重写或编写我自己的TestHiveContext类,该类从该类中借鉴了很多功能并覆盖了我需要的部分,但是对于我认为可以通过简单配置完成的工作来说,这是一个相对较大的工作更改。

unit-testing hive derby scalatest

9
推荐指数
1
解决办法
1052
查看次数

预构建 Spark 2.1.0 在启动 spark-shell 时创建 metastore_db 文件夹和 derby.log

我刚刚从 Spark 2.0.2 升级到 Spark 2.1.0(通过下载 Hadoop 2.7 及更高版本的预构建版本)。没有安装 Hive。

spark-shell 启动后,会在启动位置创建metastore_db/文件夹和derby.log文件,以及一堆警告日志(在以前的版本中没有打印出来)。

仔细检查调试日志显示 Spark 2.1.0 尝试初始化 a HiveMetastoreConnection

17/01/13 09:14:44 INFO HiveUtils: Initializing HiveMetastoreConnection version 1.2.1 using Spark classes.

Spark 2.0.2 的类似调试日志没有显示HiveMetastoreConnection.

这是预期的行为吗?是否与spark.sql.warehouse.dir现在会话之间共享的静态配置有关?我如何避免这种情况,因为我没有安装 Hive?

提前致谢!

apache-spark apache-spark-2.0

1
推荐指数
2
解决办法
5836
查看次数