对不起,如果这似乎是一个愚蠢的问题。我正在按照 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) 我正在尝试使用 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) 我们正在拆分数据库查询的读写端。实现了如提到的jooQ spring boot 多重架构(读写分离)
我们的配置:
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) 一样,因此如果需要,我们必须添加手动配置。
amazon-emr ×1
amazon-s3 ×1
dart ×1
flutter ×1
hive ×1
jooq ×1
mockito ×1
spring-boot ×1
testing ×1
unit-testing ×1