簡體   English   中英

Spring Hadoop配置-沒有類型為org.apache.hadoop.conf.Configuration的合格Bean

[英]Spring Hadoop config - No qualifying bean of type org.apache.hadoop.conf.Configuration

我正在嘗試為Hadoop / Hive環境配置bean。 根據文檔,我需要Apache Hadoop Configuration類,該類應自動裝配。 請參閱: http : //docs.spring.io/spring-hadoop/docs/2.4.0.RELEASE/reference/html/springandhadoop-store.html (第6.2.2節,配置數據集支持)

但是,當我嘗試運行我的應用程序時,得到: NoSuchBeanDefinitionException: No qualifying bean of type [org.apache.hadoop.conf.Configuration] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency.

我的課很簡單:

@SpringBootApplication
public class HiveTestApp implements CommandLineRunner {
    private
    @Autowired
    org.apache.hadoop.conf.Configuration hadoopConfiguration;

    ...

我正在使用Cloudera集群,這是依賴項:

dependencies {
    compile(
            'org.springframework.boot:spring-boot-starter-web',
            'org.springframework.data:spring-data-hadoop-hive:2.4.0.RELEASE-cdh5',
            'org.apache.hive:hive-jdbc:1.1.0-cdh5.4.3',
    )

現在,我可能是錯的,但是我可以記得過去我使用了自動裝配配置,並且工作正常。 最新版本有什么變化嗎? 我想念什么嗎?

好,這是解決方案。

@Configuration
public class ApplicationConfiguration {
    @Value("${com.domain.app.hadoop.fs-uri}")
    private URI hdfsUri;

    @Value("${com.domain.app.hadoop.user}")
    private String user;

    @Value("${com.domain.app.hadoop.hive.jdbc-uri}")
    private String hiveUri;

    @Autowired
    private org.apache.hadoop.conf.Configuration hadoopConfiguration;

    @Bean
    public org.apache.hadoop.conf.Configuration hadoopConfiguration() {
        return new org.apache.hadoop.conf.Configuration();
    }

    @Bean
    public HdfsResourceLoader hdfsResourceLoader() {
        return new HdfsResourceLoader(hadoopConfiguration, hdfsUri, user);
    }

    @Bean
    public HiveTemplate hiveTemplate() {
        return new HiveTemplate(() -> {
            final SimpleDriverDataSource dataSource = new SimpleDriverDataSource(new HiveDriver(), hiveUri);
            return new HiveClient(dataSource);
        });
    }
}

下面的配置文件。

com.domain.app.hadoop:
  fs-uri: "hdfs://hadoop-cluster/"
  user: "hdfs-user"
  hive.jdbc-uri: "jdbc:hive2://hadoop-cluster:10000/hive-db"

我已經使Hadoop配置對象成為bean,因為我需要將其注入到一個類中。 如果不需要bean,則可以自己創建新實例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM