小编use*_*610的帖子

Elasticsearch-Spark序列化不适用于内部类

Elasticsearch/Spark序列化似乎不适合嵌套类型.

例如:

public class Foo implements Serializable {
   private List<Bar> bars = new ArrayList<Bar>();
   // getters and setters

   public static class Bar implements Serializable {
   }
}

List<Foo> foos = new ArrayList<Foo>();
foos.add( new Foo());
// Note: Foo object does not contain nested Bar instances

SparkConf sc = new SparkConf(); //
sc.setMaster("local");
sc.setAppName("spark.app.name");
sc.set("spark.serializer", KryoSerializer.class.getName()); 
JavaSparkContext jsc = new JavaSparkContext(sc);
JavaRDD javaRDD = jsc.parallelize(ImmutableList.copyOf(foos));
JavaEsSpark.saveToEs(javaRDD, INDEX_NAME+"/"+TYPE_NAME);  
Run Code Online (Sandbox Code Playgroud)

上面的代码可以工作,类型文档Foo将在Elasticsearch中编入索引.

当对象中的bars列表Foo不为空时,会出现问题,例如:

Foo = new Foo();
Bar = …
Run Code Online (Sandbox Code Playgroud)

elasticsearch apache-spark

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

Elasticearch和Spark:更新现有实体

使用Elasticsearch with Spark时,更新现有实体的正确方法是什么?

我想要像下面这样的东西:

  1. 将现有数据作为地图获取.
  2. 创建一个新地图,并使用更新的字段填充它.
  3. 坚持新地图.

但是,有几个问题:

  1. 返回的字段列表不能包含_id,因为它不是源的一部分.
  2. 如果为了测试,我_id在新值的映射中硬编码,则抛出以下异常:

    org.elasticsearch.hadoop.rest.EsHadoopInvalidRequest

应如何_id检索,以及如何将其传回Spark?

我在下面包含以下代码,以更好地说明我尝试做的事情:

JavaRDD<Map<String, Object>> esRDD = JavaEsSpark.esRDD(jsc, INDEX_NAME+"/"+TYPE_NAME, 
"?source=,field1,field2).values();

Iterator<Map<String, Object>> iter = esRDD.toLocalIterator();
List<Map<String, Object>> listToPersist = new ArrayList<Map<String, Object>>();
while(iter.hasNext()){
   Map<String, Object> map = iter.next();
   // Get existing values, and do transformation logic

   Map<String, Object> newMap = new HashMap<String, Object>();
   newMap.put("_id", ??????);
   newMap.put("field1", new_value);
   listToPersist.add(newMap);
}
JavaRDD javaRDD = jsc.parallelize(ImmutableList.copyOf(listToPersist));
JavaEsSpark.saveToEs(javaRDD, INDEX_NAME+"/"+TYPE_NAME); 
Run Code Online (Sandbox Code Playgroud)

理想情况下,我希望更新现有地图,而不是创建新地图.

在使用Spark时,是否有任何示例代码可以显示更新elasticsearch中现有实体的正确方法?

谢谢

elasticsearch apache-spark

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

Windows Batch:在循环中获取当前日期和时间

以下将打印 Windows 批处理文件中的当前数据和时间:

for /f "tokens=2,3,4,5,6 usebackq delims=:/ " %%a in ('%date% %time%') do echo %%c-%%a-%%b %%d%%e
Run Code Online (Sandbox Code Playgroud)

在这里找到了这个。

但是,如果放置在循环中,初始数据和时间将不断打印,并且不会更新以反映新时间。

如何修改它以反映当前时间并在循环内工作?

谢谢

batch-file

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

Spring无法识别一些@Configuration和@Component类

我有 - 或者更确切地说有 - 一个正在运行的 Spring 应用程序,在 IntelliJ 中运行。它包含几个用 、 注释的类@Configuration和几个@Componentbean。在某个时刻,发生了以下情况:

  1. Intelli 开始在代码编辑器中显示错误,指出“无法自动装配。未找到‘xxx’类型的 bean ”。但也有这样的 Bean 带有注释@Component

  2. @Component未达到特定 bean 构造函数中的断点。但并非所有豆类都是如此@Component

  3. 在调试模式下运行时,@Configuration无法到达某些文件中的断点,即使调试器之前已停止在那里。如果应用程序使用这些@Componentbean 之一自动装配,则应用程序将会失败。

  4. 应用程序启动时没有错误,但显然没有在@Configuration被调用的类中配置多个 bean。

包含运行 Spring Boot 应用程序的 main 方法的类用 进行注释@SpringBootApplication@Component与此类位于同一包中的类会被识别并可以自动装配,甚至可以自动装配到其他包中的类中。

我不知道代码或项目中有任何内容会发生变化。

在File -> Project Settings -> Modules下,Spring Application Context下现在已选择所有@Configuration文件。然而这没有什么区别。

也尝试过Build -> Rebuild Project

类所在的包没有改变。以前有人见过这样的事情吗?

谢谢

spring intellij-idea spring-boot

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

你如何在不同的Spring上下文之间共享Spring bean?

我们有一个使用Spring BlazeDS集成的应用程序.到目前为止,我们刚刚使用Spring和Flex,它运行良好.我们现在需要添加一些Spring MVC控制器.Spring BlazeDS文档指出,执行此操作的方法是在web.xml中声明两个sperate上下文,如下所示:

<servlet>
    <servlet-name>flex</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>flex</servlet-name>
    <url-pattern>/messagebroker/*</url-pattern>
</servlet-mapping>

<servlet>
    <servlet-name>spring-mvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>spring-mvc</servlet-name>
    <url-pattern>/spring/*</url-pattern>
</servlet-mapping> 
Run Code Online (Sandbox Code Playgroud)

这是我的问题:在两种情况下都需要使用Spring bean - spring-mvc one和flex one.如何做到这一点 - 如何在一个上下文中声明一个bean(在xml中或通过组件扫描)并允许它与在其他上下文中声明的bean共享?谢谢 !

spring blazeds spring-mvc

4
推荐指数
1
解决办法
7711
查看次数

Spring JDBC:使用Oracle时出错

我们有一个Spring应用程序,它使用NamedParameterJdbcTemplate将消息持久化到Oracle数据库.sql是一个简单的插入.插入工作和数据库更新,但无论如何抛出以下异常.

04:02:58.276 [org.springframework.jms.listener.DefaultMessageListenerContainer#0-1] DEBUG o.s.jdbc.core.StatementCreatorUtils - JDBC 3.0 getParameterType call not supported
java.sql.SQLException: Unsupported feature
    at oracle.jdbc.driver.OracleParameterMetaData.getParameterType(OracleParameterMetaData.java:166) ~[ojdbc6-11.2.0.2.0.jar:11.2.0.2.0]
    at org.springframework.jdbc.core.StatementCreatorUtils.setNull(StatementCreatorUtils.java:231) [spring-jdbc-3.2.4.RELEASE.jar:3.2.4.RELEASE]
    at org.springframework.jdbc.core.StatementCreatorUtils.setParameterValueInternal(StatementCreatorUtils.java:213) [spring-jdbc-3.2.4.RELEASE.jar:3.2.4.RELEASE]
    at org.springframework.jdbc.core.StatementCreatorUtils.setParameterValue(StatementCreatorUtils.java:144) [spring-jdbc-3.2.4.RELEASE.jar:3.2.4.RELEASE]
    at org.springframework.jdbc.core.BatchUpdateUtils.setStatementParameters(BatchUpdateUtils.java:63) [spring-jdbc-3.2.4.RELEASE.jar:3.2.4.RELEASE]
    at org.springframework.jdbc.core.namedparam.NamedParameterBatchUpdateUtils.access$000(NamedParameterBatchUpdateUtils.java:32) [spring-jdbc-3.2.4.RELEASE.jar:3.2.4.RELEASE]
    at org.springframework.jdbc.core.namedparam.NamedParameterBatchUpdateUtils$1.setValues(NamedParameterBatchUpdateUtils.java:47) [spring-jdbc-3.2.4.RELEASE.jar:3.2.4.RELEASE]
    at org.springframework.jdbc.core.JdbcTemplate$4.doInPreparedStatement(JdbcTemplate.java:899) [spring-jdbc-3.2.4.RELEASE.jar:3.2.4.RELEASE]
    at org.springframework.jdbc.core.JdbcTemplate$4.doInPreparedStatement(JdbcTemplate.java:890) [spring-jdbc-3.2.4.RELEASE.jar:3.2.4.RELEASE]
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:589) [spring-jdbc-3.2.4.RELEASE.jar:3.2.4.RELEASE]
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:617) [spring-jdbc-3.2.4.RELEASE.jar:3.2.4.RELEASE]
    at org.springframework.jdbc.core.JdbcTemplate.batchUpdate(JdbcTemplate.java:890) [spring-jdbc-3.2.4.RELEASE.jar:3.2.4.RELEASE]
    at org.springframework.jdbc.core.namedparam.NamedParameterBatchUpdateUtils.executeBatchUpdateWithNamedParameters(NamedParameterBatchUpdateUtils.java:40) [spring-jdbc-3.2.4.RELEASE.jar:3.2.4.RELEASE]
    at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.batchUpdate(NamedParameterJdbcTemplate.java:324) [spring-jdbc-3.2.4.RELEASE.jar:3.2.4.RELEASE]
    at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.batchUpdate(NamedParameterJdbcTemplate.java:319) [spring-jdbc-3.2.4.RELEASE.jar:3.2.4.RELEASE]
Run Code Online (Sandbox Code Playgroud)

我想知道是否有人可以帮助确定问题,谢谢.

spring-jdbc oracle11g

4
推荐指数
1
解决办法
7948
查看次数

直接从 Spring 上下文获取 .properties 文件中的值

在标准 Spring 应用程序中,可以定义一个 PropertyPlaceholderConfigurer,它将加载一个或多个属性文件。然后,文件中定义的值将对应用程序的其余部分可见,无论是 XML ( "${}") 还是 Java (@Value ) 形式。

有没有办法,一旦加载了上下文,就可以从上下文本身获取这样的属性值,就像可以检索 bean 一样(ctx.getBean("bean-name") ) 一样?

我尝试了以下方法,但它不起作用:

GenericXmlApplicationContext ctx = new GenericXmlApplicationContext();
ctx.load("classpath:META-INF/spring/spring-context.xml");
ctx.refresh();
ctx.start();
ctx.getEnvironment().getProperty("key-name")); // RETURNS NULL
Run Code Online (Sandbox Code Playgroud)

谢谢

spring

4
推荐指数
1
解决办法
5550
查看次数

比较Scala中泛型函数中泛型类型的值

以下功能

def compare[T] (o1:T, o2:T):Boolean = {
   o1 > o2
}
Run Code Online (Sandbox Code Playgroud)

不会编译,因为 value > is not a member of type parameter T

将参数定义为类型AnyVal也不起作用,编译器也会出现类似的错误.

但是,只能使用类型String和值来调用该函数Long,它们支持>.

写这样一个函数的推荐灵魂是什么?

谢谢

generics scala

4
推荐指数
2
解决办法
1171
查看次数

在Spring Boot上进行Spring Integration的Kafka配置

我有一个正在工作的原型Spring Boot应用程序,它在Kafka队列上进行监听。除了中的配置外application.yml,所需要的只是一个用MessageListener注释的实现@KafkaListener

现在正在引入Spring Integration,并为此配置了以下bean:

@Bean
public KafkaMessageDrivenChannelAdapter<String, String>
adapter(KafkaMessageListenerContainer<String, String> container) {
    KafkaMessageDrivenChannelAdapter<String, String> kafkaMessageDrivenChannelAdapter =
            new KafkaMessageDrivenChannelAdapter<>(container);
    kafkaMessageDrivenChannelAdapter.setOutputChannel(receiver());
    return kafkaMessageDrivenChannelAdapter;
}

@Bean
public KafkaMessageListenerContainer<String, String> container() throws Exception {
    ContainerProperties properties = new ContainerProperties(this.topic);
    // set more properties
    return new KafkaMessageListenerContainer<>(consumerFactory(), properties);
}

@Bean
public ConsumerFactory<String, String> consumerFactory() {
    Map<String, Object> props = ...; // set proerties
    return new DefaultKafkaConsumerFactory<>(props);
}
Run Code Online (Sandbox Code Playgroud)

应用程序未启动,并引发此错误:

Parameter 1 of method kafkaListenerContainerFactory in org.springframework.boot.autoconfigure.kafka.KafkaAnnotationDrivenConfiguration required a bean of …
Run Code Online (Sandbox Code Playgroud)

spring-integration spring-boot spring-kafka

4
推荐指数
1
解决办法
3738
查看次数

配置Logstash仅包含某些字段

使用filter,mutateremove_field,Logstash可以配置为从输出中排除某些字段.

但是,如果只知道要包含的字段的名称,并且想要排除所有其他字段(前面​​不知道的字段名称),该怎么办?怎么可以这样做?

谢谢

elasticsearch logstash

3
推荐指数
1
解决办法
1325
查看次数