小编Sni*_*oti的帖子

如何在 repo 中测试/模拟 Hive (Flutter) 打开框逻辑?

对不起,如果这似乎是一个愚蠢的问题。我正在按照 Rob Martin 的指示学习简洁的架构,并且在编写其中一个测试时遇到了一些麻烦。

我在 Hive 存储库中编写了几个函数。这是代码

import 'package:hive/hive.dart';
import 'package:movie_browser/features/SearchMovie/domain/entities/movie_detailed_entity.dart';

abstract class HiveMovieSearchRepoAbstract {
  Future<void> cacheMovieDetails(MovieDetailed movie);
  Future<MovieDetailed> getCachedMovieDetails(String id);
}

// const vars to prevent misspellings
const String MOVIEDETAILSBOX = "MovieDetailedBox";
const String SEARCHBOX = "SearchBox";

class HiveMovieSearchRepo implements HiveMovieSearchRepoAbstract {
  Box movieDetailsBox = Hive.box(MOVIEDETAILSBOX) ?? null;
  // TODO implement searchbox
  // final searchBox = Hive.box(SEARCHBOX);

  Future<void> cacheMovieDetails(MovieDetailed movie) async {
    /// expects a MovieDetailed to cache.  Will cache that movie
    movieDetailsBox ?? await _openBox(movieDetailsBox, MOVIEDETAILSBOX);

    movieDetailsBox.put('${movie.id}', movie); …
Run Code Online (Sandbox Code Playgroud)

testing unit-testing mockito dart flutter

6
推荐指数
2
解决办法
2007
查看次数

无法在 aws EMR 集群中使用 hive 创建外部表,其中位置指向某个 S3 位置

我正在尝试使用 AWS EMR 集群的 hive 服务创建一个外部表。在这里,此外部表指向某个 S3 位置。下面是我的创建表定义:

EXTERNAL TABLE if not exists Myschema.MyTable
(
   columnA INT,
   columnB INT, 
   columnC String, 
)
partitioned BY ( columnD INT )
STORED AS PARQUET
LOCATION 's3://{bucket-locaiton}/{key-path}/';
Run Code Online (Sandbox Code Playgroud)

以下是我得到的异常:

2019-04-11T14:44:59,449 INFO  [6a95bad7-18e7-49de-856d-43219b7c5069 main([])]: util.PlatformInfo (PlatformInfo.java:getJobFlowId(54)) - Unable to read clusterId from http://localhost:8321/configuration, trying extra instance data file: /var/lib/instance-controller/extraInstanceData.json
2019-04-11T14:44:59,450 INFO  [6a95bad7-18e7-49de-856d-43219b7c5069 main([])]: util.PlatformInfo (PlatformInfo.java:getJobFlowId(61)) - Unable to read clusterId from /var/lib/instance-controller/extraInstanceData.json, trying EMR job-flow data file: /var/lib/info/job-flow.json
2019-04-11T14:44:59,450 INFO  [6a95bad7-18e7-49de-856d-43219b7c5069 main([])]: util.PlatformInfo (PlatformInfo.java:getJobFlowId(69)) - Unable …
Run Code Online (Sandbox Code Playgroud)

hive amazon-s3 external-tables amazon-emr

5
推荐指数
1
解决办法
1754
查看次数

使用 Jooq 配置 2 个数据源的最佳实践

我们正在拆分数据库查询的读写端。实现了如提到的jooQ spring boot 多重架构(读写分离)

我们的配置:

  • 我们正在使用 2 dslContext是SpringBoot 自动配置Writer提供的默认 dslContext 。
  • Reader我们通过使用不同数据源派生默认上下文的现有配置来创建 dslContext。
public DSLContext getReaderContext(@Qualifier("readerDataSource") DataSource readerDataSource, DSLContext dslContext) {
    return DSL.using(dslContext.configuration().derive(readerDataSource));
}
Run Code Online (Sandbox Code Playgroud)

因此,Reader 上下文在配置中使用相同的ExecuteListener,TransactionListener实例。Settings这是为了减少手动配置。

我们尝试过的其他配置:

public DSLContext getReaderContext(@Qualifier("readerDataSource") DataSource readerDataSource, JooqProperties jooqProperties, Settings settings) {
    return DSL.using(readerDataSource, jooqProperties.determineSqlDialect(readerDataSource), settings)
}
Run Code Online (Sandbox Code Playgroud)

这里所有的配置实例都是不同的。但手工工作是存在的。就像阅读器上下文中没有ExecuteListener(Default JooqExceptionTranslator) 一样,因此如果需要,我们必须添加手动配置。

  1. 配置 2 个或更多 dslContext 是否有最佳实践?
  2. 此外,我们的读取器数据源无法执行事务(AWS Read Replica),因为我们使用与写入器相同的配置,可以为读取器使用 SpringTransactionProvider 吗?

jooq spring-boot

5
推荐指数
0
解决办法
1629
查看次数