小编Ola*_*ock的帖子

Lucene RAMDirectory 已弃用 - 如何保持目录仅 RAM?

我目前正在使用该类org.apache.lucene.store.RAMDirectory来实现基于 RAM 的快速索引,而不需要硬盘写入权限。RAM 大小和持久性不是限制因素。然而,RAMDirectory它被标记为已弃用,并且根据其API,对于大型索引似乎也存在问题。

所以我的问题是,对于已弃用的 ,什么是仅 RAM 的RAMDirectory替代方案?

对我来说,在硬盘上写入任何内容都是不可能的(只读),而且在我自己的系统上似乎也慢得多。我正在考虑使用FSDDirectoryRAMDisk,但找不到仅使用 java/jar 创建所述 RAMDisk 的方法(再次需要更改系统)。

java lucene

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

在 Android Studio 项目中使用 htmlunit 时,没有 Lorg/apache/http/conn/ssl/AllowAllHostnameVerifier 类型的静态字段 INSTANCE

我在 Android Studio 项目中使用 htmlunit 2.36.0。我成功编译了 apk,但当我尝试获取网页时遇到一些运行时错误。之前,我收到以下错误:

java.lang.BootstrapMethodError: Exception from call site
Run Code Online (Sandbox Code Playgroud)

但我可以通过在 gradle 中添加以下内容来解决这个问题:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}
Run Code Online (Sandbox Code Playgroud)

但是,现在我面临另一个错误:

 java.lang.NoSuchFieldError: No static field INSTANCE of type Lorg/apache/http/conn/ssl/AllowAllHostnameVerifier; in class Lorg/apache/http/conn/ssl/AllowAllHostnameVerifier; or its superclasses (declaration of 'org.apache.http.conn.ssl.AllowAllHostnameVerifier' appears in /system/framework/framework.jar!classes3.dex)
        at org.apache.http.conn.ssl.SSLConnectionSocketFactory.<clinit>(SSLConnectionSocketFactory.java:151)
        at com.gargoylesoftware.htmlunit.httpclient.HtmlUnitSSLConnectionSocketFactory.buildSSLSocketFactory(HtmlUnitSSLConnectionSocketFactory.java:89)
        at com.gargoylesoftware.htmlunit.HttpWebConnection.configureHttpsScheme(HttpWebConnection.java:635)
        at com.gargoylesoftware.htmlunit.HttpWebConnection.createHttpClientBuilder(HttpWebConnection.java:558)
        at com.gargoylesoftware.htmlunit.HttpWebConnection.getHttpClientBuilder(HttpWebConnection.java:519)
        at com.gargoylesoftware.htmlunit.HttpWebConnection.getResponse(HttpWebConnection.java:171)
        at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseFromWebConnection(WebClient.java:1407)
        at com.gargoylesoftware.htmlunit.WebClient.loadWebResponse(WebClient.java:1326)
        at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:396)
        at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:317)
        at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:469)
        at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:450)
Run Code Online (Sandbox Code Playgroud)

显然,在它自己的类或其超类中没有AllowAllHostnameVerifier的静态字段实例。我不知道如何解决这个问题。

java android htmlunit android-studio

8
推荐指数
1
解决办法
1万
查看次数

Google Cloud Composer(Airflow) - DAG 内的数据流作业成功执行,但 DAG 失败

我的 DAG 看起来像这样

default_args = {
    'start_date': airflow.utils.dates.days_ago(0),
    'retries': 0,
    'dataflow_default_options': {
        'project': 'test',
        'tempLocation': 'gs://test/dataflow/pipelines/temp/',
        'stagingLocation': 'gs://test/dataflow/pipelines/staging/',
        'autoscalingAlgorithm': 'BASIC',
        'maxNumWorkers': '1',
        'region': 'asia-east1'
    }
}

dag = DAG(
    dag_id='gcs_avro_to_bq_dag',
    default_args=default_args,
    description='ETL for loading data from GCS(present in the avro format) to BQ',
    schedule_interval=None,
    dagrun_timeout=datetime.timedelta(minutes=30))

task = DataFlowJavaOperator(
    task_id='gcs_avro_to_bq_flow_job',
    jar='gs://test/dataflow/pipelines/jobs/test-1.0-SNAPSHOT.jar',
    poll_sleep=1,
    options={
        'input': '{{ ts }}',
    },
    dag=dag)

Run Code Online (Sandbox Code Playgroud)

我的 DAG 正在执行一个 jar 文件。jar 文件包含运行数据流作业的代码,该作业将数据从 GCS 写入 BQ。jar 本身成功执行。

当我尝试执行气流作业时,我看到以下错误

[2020-05-20 17:20:41,934] {base_task_runner.py:101} INFO - Job 274: Subtask gcs_avro_to_bq_flow_job [2020-05-20 17:20:41,840] …
Run Code Online (Sandbox Code Playgroud)

directed-acyclic-graphs google-cloud-platform airflow google-cloud-composer

8
推荐指数
1
解决办法
1336
查看次数

测试正确的时区处理

我们正在处理大量数据,所有数据都以UTC(Java)标记.在读取这些数据,将其存储在数据库中并再次将其取出之前,有些数据在夏令时期间关闭了一小时.由于UTC没有夏令时的概念,这显然是软件中的一个错误.一旦知道,它很容易修复.

但是,无论当前时差如何,都可以使用一些单元/集成测试 - 例如我想更改本地时区并在这些不同时区内反复运行某些方法以确保UTC处理正确.

由于测试应该自动运行 - 最好是 - 在一个Testsuite中,我想知道如何最好地测试正确的行为.在重新启动JVM时更改本地设置(如时区)很容易,但在测试套件中运行它并不容易.

有没有人知道支持这种情况的测试环境,库或模式?我们通常使用JUnit,但如果有助于摆脱这样的问题,我们可以添加其他环境/技术.我想这是一个集成而不是单元测试.

编辑:已经有两个非常有用的答案,但我想必须有更多的技术.有没有人有关于调用TimeZone.getDefault的时间/频率的权威信息(请参阅Jon Skeets答案的评论)?

注意:即使这个问题有一个公认的答案,我也不完全确定,接受哪个答案.即使有了这种接受,我也希望看到更多的想法和技巧.

感谢您的输入!

java timezone utc

7
推荐指数
2
解决办法
4900
查看次数

气流连接类型 文件(路径)

大家好,我正在使用 Airflow,我正在阅读这个有用的教程。我请求帮助以更好地理解“管理”->“连接”如何在“Conn 类型:文件(路径)”方面工作。我想这种类型的连接是为了让我的操作员可以访问本地文件系统文件夹?

airflow

7
推荐指数
1
解决办法
5086
查看次数

为什么 Hybris 提供不安全的 http maven 存储库 URL?为什么我们不能覆盖它?

apache-ant/lib/libraries.properties

m2.repo= http://repo1.maven.org/maven2/

httpURL运送 Hybris 有什么意义?
一开始是不能访问的,更别说用来下载了。
理想情况下,它应该是一个httpsURL。

m2.repo= https://repo1.maven.org/maven2/

我试图重写通过重新声明在此属性它local.properties。当那没有选择新值时,我将其更改为httpsin apache-ant/lib/libraries.properties,但它仍在选择http. 如何覆盖此属性?

错误日志:

[artifact:mvn] Downloading: org/apache/maven/apache-maven/3.2.5/apache-maven-3.2.5.pom from repository central at http://repo1.maven.org/maven2
[artifact:mvn] Error transferring file: Operation timed out (Connection timed out)
[artifact:mvn] [WARNING] Unable to get resource 'org.apache.maven:apache-maven:pom:3.2.5' from repository central (http://repo1.maven.org/maven2): Error transferring file: Operation timed out (Connection timed out)
     [null] An error has occurred while processing the Maven artifact tasks.
     [null]  Diagnosis:
     [null] …
Run Code Online (Sandbox Code Playgroud)

java maven hybris

6
推荐指数
1
解决办法
2128
查看次数

apache netbeans 11.3 C++ 插件超时,无法安装

我正在迁移到 Apache Netbeans 11.3 并尝试在 Windows 10 上安装 C++ 插件,得到了以下存储库

http://updates.netbeans.org/netbeans/updates/8.2/uc/final/distribution/catalog.xml.gz

http://bits.netbeans.org/dev/nbms-and-javadoc/lastSuccessfulBuild/artifact/nbbuild/nbms/updates.xml.gz

但每次它达到 99% 时,它只会在解压 org-netbeans-modules-cnd-dwarfdiscovery.nbm 时给我一个超时错误

插件安装程序在安装以下插件时发现加载 C/C++ Repository[org.netbeans.modules.cnd.repository/1.32.6.1] 的问题超时:

已经尝试了 10、11.1、11.2、11.3 版本,遇到了同样的问题,我什至摆脱了 Windows 防火墙也无济于事。

c++ netbeans

6
推荐指数
1
解决办法
5742
查看次数

-bash: bin/kafka-topics.sh: 没有通过 ambari 安装这样的文件或目录

我是 hadoop 和 apache 环境的新手。现在我正在尝试了解kafka,我已经通过ambari安装了hadoop。我可以看到安装了一些服务。包括动物园管理员。当我单击该服务时,它显示 Zookeeper 服务器以绿点启动。我假设 Zookeeper 安装正确。现在我添加了kafka服务。假设安装了kafka和zookeeper,我尝试根据这个源kafka文档创建一些主题。

我尝试这段代码

bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test
Run Code Online (Sandbox Code Playgroud)

它返回

-bash: bin/kafka-topics.sh: 没有这样的文件或目录

这让我想知道kafka是否真的是通过ambari安装的?我检查了 ambari 服务,kafka 已添加,并且代理正在以带有绿点的启动状态运行。

同样的事情也发生在动物园管理员身上

bin/zookeeper-server-start.sh config/zookeeper.properties
Run Code Online (Sandbox Code Playgroud)

它返回

-bash: bin/zookeeper-server-start.sh: 没有这样的文件或目录

问题

我如何知道是否通过 ambari 正确安装了任何服务?我只是用 kafka 尝试一下,但是如果我必须添加任何其他源怎么办?通过ambari添加服务后还需要进行其他配置吗?

谢谢。

apache-kafka hadoop2 ambari apache-zookeeper

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

在apachecamel中聚合后生成多个文件

我创建了一条路线

  1. 读取xml文件
  2. 拆分它
  3. 根据类别聚合它。聚合后,我收到数组,即类别 1 的数组 1,类别 2 的数组 2。
  4. 当我写文件时,结果是从数据集中打印任何随机数组。

问题:如何根据聚合器生成的数组数量打印多个文件?

                    from("file:C:\\Users\\Desktop?fileName=books.xml&noop=true")
                    .split(xpath("/books/book"))
                    .process(new MyProcessor())
                    .setHeader("category", xpath("/book/@category").stringResult())
                    .aggregate(header("category"), new SetAggregationStrategy()).completionTimeout(500)
                    .process(new MyProcessor())
                    .convertBodyTo(String.class)
                    .to("file:C:\\Users\\Desktop\\New")
                    .end();
Run Code Online (Sandbox Code Playgroud)

java apache-camel

6
推荐指数
1
解决办法
192
查看次数

使用包含单行分区的 Cassandra 表是一种不好的做法吗?

假设我有一张这样的桌子

CREATE TABLE request(
  transaction_id text,
  request_date timestamp,
  data text, 
  PRIMARY KEY (transaction_id)
);
Run Code Online (Sandbox Code Playgroud)

transaction_id 是唯一的,因此据我了解此表中的每个分区只有一行,我不确定这种情况是否会导致操作系统中的性能问题,也许是因为 Cassandra 为每个分区创建一个文件,导致大量文件来管理其托管操作系统,请注意,我不确定 Cassandra 如何为其表创建文件。

在这种情况下,我可以通过其 transaction_id 找到请求,例如

select data from request where transaction_id = 'abc';

如果前面的假设是正确的,那么下一个可能会采用不同的方法?

CREATE TABLE request( 
  the_date date, 
  transaction_id text, 
  request_date timestamp, 
  data text, 
  PRIMARY KEY ((the_date), transaction_id)
);
Run Code Online (Sandbox Code Playgroud)

字段the_date每隔一天都会更改,因此表中的分区将为每一天创建。

在这种情况下,我必须让the_date数据始终可供客户端使用,以便我可以使用下一个查询找到请求

select data from request where the_date = '2020-09-23' and transaction_id = 'abc';

预先感谢您的帮助!

primary-key cassandra partition

6
推荐指数
1
解决办法
1717
查看次数