├── .DS_Store ├── .idea ├── .name ├── artifacts │ ├── kafka_hbase_war.xml │ └── kafka_hbase_war_exploded.xml ├── compiler.xml ├── encodings.xml ├── libraries │ ├── Maven__ch_qos_logback_logback_classic_1_1_11.xml │ ├── Maven__ch_qos_logback_logback_core_1_1_11.xml │ ├── Maven__com_101tec_zkclient_0_10.xml │ ├── Maven__com_alibaba_fastjson_1_2_11.xml │ ├── Maven__com_alibaba_otter_canal_client_1_0_25.xml │ ├── Maven__com_alibaba_otter_canal_common_1_0_25.xml │ ├── Maven__com_alibaba_otter_canal_protocol_1_0_25.xml │ ├── Maven__com_fasterxml_classmate_1_3_4.xml │ ├── Maven__com_fasterxml_jackson_core_jackson_annotations_2_8_0.xml │ ├── Maven__com_fasterxml_jackson_core_jackson_core_2_8_10.xml │ ├── Maven__com_fasterxml_jackson_core_jackson_databind_2_8_10.xml │ ├── Maven__com_github_stephenc_findbugs_findbugs_annotations_1_3_9_1.xml │ ├── Maven__com_google_code_findbugs_jsr305_3_0_0.xml │ ├── Maven__com_google_code_gson_gson_2_8_2.xml │ ├── Maven__com_google_guava_guava_12_0_1.xml │ ├── Maven__com_google_protobuf_protobuf_java_2_5_0.xml │ ├── Maven__com_jamesmurty_utils_java_xmlbuilder_0_4.xml │ ├── Maven__com_jayway_jsonpath_json_path_2_2_0.xml │ ├── Maven__com_jcraft_jsch_0_1_42.xml │ ├── Maven__com_sun_jersey_jersey_core_1_9.xml │ ├── Maven__com_sun_jersey_jersey_json_1_9.xml │ ├── Maven__com_sun_xml_bind_jaxb_impl_2_2_3_1.xml │ ├── Maven__com_thoughtworks_paranamer_paranamer_2_3.xml │ ├── Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml │ ├── Maven__com_yammer_metrics_metrics_core_2_2_0.xml │ ├── Maven__commons_beanutils_commons_beanutils_1_9_3.xml │ ├── Maven__commons_beanutils_commons_beanutils_core_1_8_0.xml │ ├── Maven__commons_cli_commons_cli_1_2.xml │ ├── Maven__commons_codec_commons_codec_1_10.xml │ ├── Maven__commons_collections_commons_collections_3_2_2.xml │ ├── Maven__commons_configuration_commons_configuration_1_6.xml │ ├── Maven__commons_digester_commons_digester_2_1.xml │ ├── Maven__commons_el_commons_el_1_0.xml │ ├── Maven__commons_httpclient_commons_httpclient_3_1.xml │ ├── Maven__commons_io_commons_io_2_4.xml │ ├── Maven__commons_lang_commons_lang_2_6.xml │ ├── Maven__commons_logging_commons_logging_1_2.xml │ ├── Maven__commons_net_commons_net_3_1.xml │ ├── Maven__hsqldb_hsqldb_1_8_0_10.xml │ ├── Maven__io_netty_netty_all_4_0_23_Final.xml │ ├── Maven__javax_activation_activation_1_1.xml │ ├── Maven__javax_servlet_jsp_jsp_api_2_1.xml │ ├── Maven__javax_servlet_servlet_api_2_5.xml │ ├── Maven__javax_validation_validation_api_1_1_0_Final.xml │ ├── Maven__javax_xml_bind_jaxb_api_2_2_2.xml │ ├── Maven__javax_xml_stream_stax_api_1_0_2.xml │ ├── Maven__junit_junit_4_12.xml │ ├── Maven__log4j_log4j_1_2_17.xml │ ├── Maven__mysql_mysql_connector_java_5_1_44.xml │ ├── Maven__net_java_dev_jets3t_jets3t_0_9_0.xml │ ├── Maven__net_jpountz_lz4_lz4_1_3_0.xml │ ├── Maven__net_minidev_accessors_smart_1_1.xml │ ├── Maven__net_minidev_json_smart_2_2_1.xml │ ├── Maven__org_apache_avro_avro_1_7_6_cdh5_10_0.xml │ ├── Maven__org_apache_commons_commons_compress_1_4_1.xml │ ├── Maven__org_apache_commons_commons_math3_3_1_1.xml │ ├── Maven__org_apache_curator_curator_client_2_7_1.xml │ ├── Maven__org_apache_curator_curator_framework_2_7_1.xml │ ├── Maven__org_apache_curator_curator_recipes_2_7_1.xml │ ├── Maven__org_apache_directory_api_api_asn1_api_1_0_0_M20.xml │ ├── Maven__org_apache_directory_api_api_util_1_0_0_M20.xml │ ├── Maven__org_apache_directory_server_apacheds_i18n_2_0_0_M15.xml │ ├── Maven__org_apache_directory_server_apacheds_kerberos_codec_2_0_0_M15.xml │ ├── Maven__org_apache_hadoop_hadoop_annotations_2_6_0_cdh5_10_0.xml │ ├── Maven__org_apache_hadoop_hadoop_auth_2_6_0_cdh5_10_0.xml │ ├── Maven__org_apache_hadoop_hadoop_common_2_6_0_cdh5_10_0.xml │ ├── Maven__org_apache_hadoop_hadoop_core_2_6_0_mr1_cdh5_10_0.xml │ ├── Maven__org_apache_hbase_hbase_annotations_1_2_0_cdh5_10_0.xml │ ├── Maven__org_apache_hbase_hbase_client_1_2_0_cdh5_10_0.xml │ ├── Maven__org_apache_hbase_hbase_common_1_2_0_cdh5_10_0.xml │ ├── Maven__org_apache_hbase_hbase_protocol_1_2_0_cdh5_10_0.xml │ ├── Maven__org_apache_htrace_htrace_core4_4_0_1_incubating.xml │ ├── Maven__org_apache_htrace_htrace_core_3_2_0_incubating.xml │ ├── Maven__org_apache_httpcomponents_httpclient_4_5_3.xml │ ├── Maven__org_apache_httpcomponents_httpcore_4_4_8.xml │ ├── Maven__org_apache_kafka_kafka_clients_0_10_1_1.xml │ ├── Maven__org_apache_tomcat_embed_tomcat_embed_core_8_5_23.xml │ ├── Maven__org_apache_tomcat_embed_tomcat_embed_el_8_5_23.xml │ ├── Maven__org_apache_tomcat_embed_tomcat_embed_websocket_8_5_23.xml │ ├── Maven__org_apache_tomcat_tomcat_annotations_api_8_5_23.xml │ ├── Maven__org_apache_zookeeper_zookeeper_3_4_5_cdh5_10_0.xml │ ├── Maven__org_assertj_assertj_core_2_6_0.xml │ ├── Maven__org_codehaus_jackson_jackson_core_asl_1_8_8.xml │ ├── Maven__org_codehaus_jackson_jackson_jaxrs_1_8_3.xml │ ├── Maven__org_codehaus_jackson_jackson_mapper_asl_1_8_8.xml │ ├── Maven__org_codehaus_jackson_jackson_xc_1_8_3.xml │ ├── Maven__org_codehaus_jettison_jettison_1_1.xml │ ├── Maven__org_eclipse_jdt_core_3_1_1.xml │ ├── Maven__org_hamcrest_hamcrest_core_1_3.xml │ ├── Maven__org_hamcrest_hamcrest_library_1_3.xml │ ├── Maven__org_hibernate_hibernate_validator_5_3_5_Final.xml │ ├── Maven__org_jboss_logging_jboss_logging_3_3_1_Final.xml │ ├── Maven__org_jruby_jcodings_jcodings_1_0_8.xml │ ├── Maven__org_jruby_joni_joni_2_1_2.xml │ ├── Maven__org_mockito_mockito_core_1_10_19.xml │ ├── Maven__org_mortbay_jetty_jetty_6_1_26_cloudera_4.xml │ ├── Maven__org_mortbay_jetty_jetty_util_6_1_26_cloudera_4.xml │ ├── Maven__org_objenesis_objenesis_2_1.xml │ ├── Maven__org_ow2_asm_asm_5_0_3.xml │ ├── Maven__org_skyscreamer_jsonassert_1_4_0.xml │ ├── Maven__org_slf4j_jcl_over_slf4j_1_7_25.xml │ ├── Maven__org_slf4j_jul_to_slf4j_1_7_25.xml │ ├── Maven__org_slf4j_log4j_over_slf4j_1_7_25.xml │ ├── Maven__org_slf4j_slf4j_api_1_7_25.xml │ ├── Maven__org_springframework_boot_spring_boot_1_5_8_RELEASE.xml │ ├── Maven__org_springframework_boot_spring_boot_autoconfigure_1_5_8_RELEASE.xml │ ├── Maven__org_springframework_boot_spring_boot_starter_1_5_8_RELEASE.xml │ ├── Maven__org_springframework_boot_spring_boot_starter_logging_1_5_8_RELEASE.xml │ ├── Maven__org_springframework_boot_spring_boot_starter_test_1_5_8_RELEASE.xml │ ├── Maven__org_springframework_boot_spring_boot_starter_tomcat_1_5_8_RELEASE.xml │ ├── Maven__org_springframework_boot_spring_boot_starter_web_1_5_8_RELEASE.xml │ ├── Maven__org_springframework_boot_spring_boot_test_1_5_8_RELEASE.xml │ ├── Maven__org_springframework_boot_spring_boot_test_autoconfigure_1_5_8_RELEASE.xml │ ├── Maven__org_springframework_kafka_spring_kafka_1_1_7_RELEASE.xml │ ├── Maven__org_springframework_retry_spring_retry_1_2_1_RELEASE.xml │ ├── Maven__org_springframework_spring_aop_4_3_12_RELEASE.xml │ ├── Maven__org_springframework_spring_beans_4_3_12_RELEASE.xml │ ├── Maven__org_springframework_spring_context_4_3_12_RELEASE.xml │ ├── Maven__org_springframework_spring_core_4_3_12_RELEASE.xml │ ├── Maven__org_springframework_spring_expression_4_3_12_RELEASE.xml │ ├── Maven__org_springframework_spring_jdbc_4_3_12_RELEASE.xml │ ├── Maven__org_springframework_spring_messaging_4_3_12_RELEASE.xml │ ├── Maven__org_springframework_spring_orm_4_3_12_RELEASE.xml │ ├── Maven__org_springframework_spring_test_4_3_12_RELEASE.xml │ ├── Maven__org_springframework_spring_tx_4_3_12_RELEASE.xml │ ├── Maven__org_springframework_spring_web_4_3_12_RELEASE.xml │ ├── Maven__org_springframework_spring_webmvc_4_3_12_RELEASE.xml │ ├── Maven__org_tukaani_xz_1_0.xml │ ├── Maven__org_xerial_snappy_snappy_java_1_1_2_6.xml │ ├── Maven__org_yaml_snakeyaml_1_17.xml │ ├── Maven__tomcat_jasper_compiler_5_5_23.xml │ ├── Maven__tomcat_jasper_runtime_5_5_23.xml │ └── Maven__xmlenc_xmlenc_0_52.xml ├── misc.xml ├── modules.xml ├── uiDesigner.xml └── workspace.xml ├── README.md ├── kafka-hbase.iml ├── pom.xml ├── src ├── .DS_Store ├── main │ ├── .DS_Store │ ├── java │ │ ├── .DS_Store │ │ └── com │ │ │ ├── .DS_Store │ │ │ └── adups │ │ │ ├── KafkaHBaseApplication.java │ │ │ ├── canal │ │ │ ├── .DS_Store │ │ │ ├── CanalBean.java │ │ │ ├── CanalClient.java │ │ │ └── CanalHandler.java │ │ │ ├── common │ │ │ └── ThreadPool.java │ │ │ ├── hbase │ │ │ ├── config │ │ │ │ ├── BaseConfig.java │ │ │ │ └── HBaseConfiguration.java │ │ │ ├── controller │ │ │ │ └── HBaseController.java │ │ │ ├── dao │ │ │ │ └── HBaseDao.java │ │ │ ├── model │ │ │ │ └── HBasePageModel.java │ │ │ └── service │ │ │ │ ├── HBaseService.java │ │ │ │ └── HBaseServiceImpl.java │ │ │ ├── kafka │ │ │ ├── bean │ │ │ │ ├── datacube │ │ │ │ │ ├── BbTOrder.java │ │ │ │ │ └── TOrder.java │ │ │ │ └── gemini │ │ │ │ │ ├── TOrder.java │ │ │ │ │ └── TOrderFlow.java │ │ │ ├── consumer │ │ │ │ ├── KafkaConsumerConfig.java │ │ │ │ └── impl │ │ │ │ │ ├── datacube │ │ │ │ │ └── TOrderHandle.java │ │ │ │ │ └── gemini │ │ │ │ │ └── TOrderConsumer.java │ │ │ └── producer │ │ │ │ ├── .DS_Store │ │ │ │ ├── HandlerProducer.java │ │ │ │ ├── KafkaProducerConfig.java │ │ │ │ └── KafkaProducerTask.java │ │ │ └── util │ │ │ ├── AnalysisUtil.java │ │ │ ├── ArrayUtil.java │ │ │ ├── BackCostUtil.java │ │ │ ├── ConfigUtil.java │ │ │ ├── ConstantProperties.java │ │ │ ├── DesEncrypt.java │ │ │ ├── EqualValue.java │ │ │ ├── HBasePageModel.java │ │ │ ├── IListUtil.java │ │ │ ├── MacOrIpconvert.java │ │ │ ├── Md5Util.java │ │ │ ├── MyTaskRun.java │ │ │ ├── RandCodeEnum.java │ │ │ ├── ReadProperties.java │ │ │ ├── SocPut.java │ │ │ ├── ThreadPoolUtil.java │ │ │ ├── TypeCheck.java │ │ │ └── Utf8_Filter.java │ └── resources │ │ ├── application-dev.properties │ │ ├── application-pro.properties │ │ ├── application.properties │ │ ├── log4j.properties │ │ └── logback.xml └── test │ └── java │ └── com │ └── adups │ └── KafkaHBaseApplicationTests.java └── target ├── classes ├── application-dev.properties ├── application-pro.properties ├── application.properties ├── com │ └── adups │ │ ├── KafkaHBaseApplication$1.class │ │ ├── KafkaHBaseApplication.class │ │ ├── canal │ │ ├── CanalBean$RowData$ColumnEntry.class │ │ ├── CanalBean$RowData.class │ │ ├── CanalBean.class │ │ ├── CanalClient$1.class │ │ ├── CanalClient$2.class │ │ ├── CanalClient.class │ │ └── CanalHandler.class │ │ ├── common │ │ └── ThreadPool.class │ │ ├── hbase │ │ ├── config │ │ │ ├── BaseConfig.class │ │ │ └── HBaseConfiguration.class │ │ ├── controller │ │ │ └── HBaseController.class │ │ ├── dao │ │ │ ├── HBaseDao$1.class │ │ │ └── HBaseDao.class │ │ ├── model │ │ │ └── HBasePageModel.class │ │ └── service │ │ │ ├── HBaseService.class │ │ │ └── HBaseServiceImpl.class │ │ ├── kafka │ │ ├── bean │ │ │ ├── datacube │ │ │ │ ├── BbTOrder.class │ │ │ │ └── TOrder.class │ │ │ └── gemini │ │ │ │ ├── TOrder.class │ │ │ │ └── TOrderFlow.class │ │ ├── consumer │ │ │ ├── KafkaConsumerConfig.class │ │ │ └── impl │ │ │ │ ├── datacube │ │ │ │ └── TOrderHandle.class │ │ │ │ └── gemini │ │ │ │ └── TOrderConsumer.class │ │ └── producer │ │ │ ├── HandlerProducer.class │ │ │ ├── KafkaProducerConfig.class │ │ │ └── KafkaProducerTask.class │ │ └── util │ │ ├── AnalysisUtil.class │ │ ├── ArrayUtil.class │ │ ├── BackCostUtil.class │ │ ├── ConfigUtil.class │ │ ├── ConstantProperties.class │ │ ├── DesEncrypt.class │ │ ├── EqualValue.class │ │ ├── HBasePageModel.class │ │ ├── IListUtil.class │ │ ├── MacOrIpconvert.class │ │ ├── Md5Util.class │ │ ├── MyTaskRun.class │ │ ├── RandCodeEnum.class │ │ ├── ReadProperties.class │ │ ├── SocPut.class │ │ ├── ThreadPoolUtil.class │ │ ├── TypeCheck$FloattypeCheck.class │ │ ├── TypeCheck$InttypeCheck.class │ │ ├── TypeCheck$LongtypeCheck.class │ │ ├── TypeCheck.class │ │ └── Utf8_Filter.class ├── log4j.properties └── logback.xml └── test-classes └── com └── adups └── KafkaHBaseApplicationTests.class /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/.DS_Store -------------------------------------------------------------------------------- /.idea/.name: -------------------------------------------------------------------------------- 1 | kafka-hbase -------------------------------------------------------------------------------- /.idea/artifacts/kafka_hbase_war.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | $PROJECT_DIR$/target 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__ch_qos_logback_logback_classic_1_1_11.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__ch_qos_logback_logback_core_1_1_11.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_101tec_zkclient_0_10.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_alibaba_fastjson_1_2_11.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_alibaba_otter_canal_client_1_0_25.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_alibaba_otter_canal_common_1_0_25.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_alibaba_otter_canal_protocol_1_0_25.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_fasterxml_classmate_1_3_4.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_8_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_8_10.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_8_10.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_github_stephenc_findbugs_findbugs_annotations_1_3_9_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_google_code_findbugs_jsr305_3_0_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_google_code_gson_gson_2_8_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_google_guava_guava_12_0_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_google_protobuf_protobuf_java_2_5_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_jamesmurty_utils_java_xmlbuilder_0_4.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_jayway_jsonpath_json_path_2_2_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_jcraft_jsch_0_1_42.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_sun_jersey_jersey_core_1_9.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_sun_jersey_jersey_json_1_9.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_sun_xml_bind_jaxb_impl_2_2_3_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_thoughtworks_paranamer_paranamer_2_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__com_yammer_metrics_metrics_core_2_2_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__commons_beanutils_commons_beanutils_1_9_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__commons_beanutils_commons_beanutils_core_1_8_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__commons_cli_commons_cli_1_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__commons_codec_commons_codec_1_10.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__commons_collections_commons_collections_3_2_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__commons_configuration_commons_configuration_1_6.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__commons_digester_commons_digester_2_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__commons_el_commons_el_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__commons_httpclient_commons_httpclient_3_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__commons_io_commons_io_2_4.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__commons_lang_commons_lang_2_6.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__commons_logging_commons_logging_1_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__commons_net_commons_net_3_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__hsqldb_hsqldb_1_8_0_10.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__io_netty_netty_all_4_0_23_Final.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__javax_activation_activation_1_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__javax_servlet_jsp_jsp_api_2_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__javax_servlet_servlet_api_2_5.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__javax_validation_validation_api_1_1_0_Final.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__javax_xml_bind_jaxb_api_2_2_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__javax_xml_stream_stax_api_1_0_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__junit_junit_4_12.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__log4j_log4j_1_2_17.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__mysql_mysql_connector_java_5_1_44.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__net_java_dev_jets3t_jets3t_0_9_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__net_jpountz_lz4_lz4_1_3_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__net_minidev_accessors_smart_1_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__net_minidev_json_smart_2_2_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_avro_avro_1_7_6_cdh5_10_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_commons_commons_compress_1_4_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_commons_commons_math3_3_1_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_curator_curator_client_2_7_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_curator_curator_framework_2_7_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_curator_curator_recipes_2_7_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_directory_api_api_asn1_api_1_0_0_M20.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_directory_api_api_util_1_0_0_M20.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_directory_server_apacheds_i18n_2_0_0_M15.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_directory_server_apacheds_kerberos_codec_2_0_0_M15.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_hadoop_hadoop_annotations_2_6_0_cdh5_10_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_hadoop_hadoop_auth_2_6_0_cdh5_10_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_hadoop_hadoop_common_2_6_0_cdh5_10_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_hadoop_hadoop_core_2_6_0_mr1_cdh5_10_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_hbase_hbase_annotations_1_2_0_cdh5_10_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_hbase_hbase_client_1_2_0_cdh5_10_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_hbase_hbase_common_1_2_0_cdh5_10_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_hbase_hbase_protocol_1_2_0_cdh5_10_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_htrace_htrace_core4_4_0_1_incubating.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_htrace_htrace_core_3_2_0_incubating.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_httpcomponents_httpclient_4_5_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_httpcomponents_httpcore_4_4_8.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_kafka_kafka_clients_0_10_1_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_core_8_5_23.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_el_8_5_23.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_websocket_8_5_23.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_tomcat_tomcat_annotations_api_8_5_23.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_apache_zookeeper_zookeeper_3_4_5_cdh5_10_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_assertj_assertj_core_2_6_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_codehaus_jackson_jackson_core_asl_1_8_8.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_codehaus_jackson_jackson_jaxrs_1_8_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_codehaus_jackson_jackson_mapper_asl_1_8_8.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_codehaus_jackson_jackson_xc_1_8_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_codehaus_jettison_jettison_1_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_eclipse_jdt_core_3_1_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_hamcrest_hamcrest_core_1_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_hamcrest_hamcrest_library_1_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_hibernate_hibernate_validator_5_3_5_Final.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_jboss_logging_jboss_logging_3_3_1_Final.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_jruby_jcodings_jcodings_1_0_8.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_jruby_joni_joni_2_1_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_mockito_mockito_core_1_10_19.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_mortbay_jetty_jetty_6_1_26_cloudera_4.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_mortbay_jetty_jetty_util_6_1_26_cloudera_4.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_objenesis_objenesis_2_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_ow2_asm_asm_5_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_skyscreamer_jsonassert_1_4_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_slf4j_jcl_over_slf4j_1_7_25.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_25.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_slf4j_log4j_over_slf4j_1_7_25.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_25.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_springframework_boot_spring_boot_1_5_8_RELEASE.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_1_5_8_RELEASE.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_1_5_8_RELEASE.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_1_5_8_RELEASE.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_test_1_5_8_RELEASE.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_tomcat_1_5_8_RELEASE.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_web_1_5_8_RELEASE.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_springframework_boot_spring_boot_test_1_5_8_RELEASE.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_springframework_boot_spring_boot_test_autoconfigure_1_5_8_RELEASE.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_springframework_kafka_spring_kafka_1_1_7_RELEASE.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_springframework_retry_spring_retry_1_2_1_RELEASE.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_springframework_spring_aop_4_3_12_RELEASE.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_springframework_spring_beans_4_3_12_RELEASE.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_springframework_spring_context_4_3_12_RELEASE.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_springframework_spring_core_4_3_12_RELEASE.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_springframework_spring_expression_4_3_12_RELEASE.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_springframework_spring_jdbc_4_3_12_RELEASE.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_springframework_spring_messaging_4_3_12_RELEASE.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_springframework_spring_orm_4_3_12_RELEASE.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_springframework_spring_test_4_3_12_RELEASE.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_springframework_spring_tx_4_3_12_RELEASE.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_springframework_spring_web_4_3_12_RELEASE.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_springframework_spring_webmvc_4_3_12_RELEASE.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_tukaani_xz_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_xerial_snappy_snappy_java_1_1_2_6.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__org_yaml_snakeyaml_1_17.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__tomcat_jasper_compiler_5_5_23.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__tomcat_jasper_runtime_5_5_23.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/Maven__xmlenc_xmlenc_0_52.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 1.8 21 | 22 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # kafka-hbase 2 | consumer kafka ,insert into hbase with spring boot 3 | -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | com.adups 7 | kafka-hbase 8 | 1.0.0 9 | jar 10 | 11 | kafka-hbase 12 | Demo project for Spring Boot 13 | 14 | 15 | org.springframework.boot 16 | spring-boot-starter-parent 17 | 1.5.8.RELEASE 18 | 19 | 20 | 21 | 22 | UTF-8 23 | UTF-8 24 | 1.8 25 | 26 | 27 | 28 | 29 | org.springframework.boot 30 | spring-boot-starter-web 31 | 32 | 33 | 34 | org.springframework.kafka 35 | spring-kafka 36 | 37 | 38 | 39 | org.apache.hbase 40 | hbase-client 41 | 1.2.0-cdh5.10.0 42 | 43 | 44 | slf4j-log4j12 45 | org.slf4j 46 | 47 | 48 | 49 | 50 | 51 | com.alibaba.otter 52 | canal.client 53 | 1.0.25 54 | 55 | 56 | 57 | com.alibaba 58 | fastjson 59 | 1.2.11 60 | 61 | 62 | 63 | mysql 64 | mysql-connector-java 65 | 66 | 67 | 68 | org.springframework.boot 69 | spring-boot-starter-test 70 | test 71 | 72 | 73 | 74 | 75 | 76 | 77 | org.springframework.boot 78 | spring-boot-maven-plugin 79 | 80 | 81 | 82 | 83 | 84 | 85 | cloudera 86 | https://repository.cloudera.com/artifactory/cloudera-repos 87 | 88 | 89 | 90 | 91 | -------------------------------------------------------------------------------- /src/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/src/.DS_Store -------------------------------------------------------------------------------- /src/main/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/src/main/.DS_Store -------------------------------------------------------------------------------- /src/main/java/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/src/main/java/.DS_Store -------------------------------------------------------------------------------- /src/main/java/com/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/src/main/java/com/.DS_Store -------------------------------------------------------------------------------- /src/main/java/com/adups/KafkaHBaseApplication.java: -------------------------------------------------------------------------------- 1 | package com.adups; 2 | 3 | 4 | import com.adups.canal.CanalClient; 5 | import org.slf4j.Logger; 6 | import org.slf4j.LoggerFactory; 7 | import org.springframework.boot.SpringApplication; 8 | import org.springframework.boot.autoconfigure.SpringBootApplication; 9 | import org.springframework.context.ApplicationContext; 10 | import org.springframework.context.annotation.Bean; 11 | import org.springframework.scheduling.annotation.EnableAsync; 12 | 13 | /** 14 | * 程序入口 15 | * Created by gad on 2018/2/23. 16 | */ 17 | @SpringBootApplication 18 | @EnableAsync 19 | public class KafkaHBaseApplication { 20 | 21 | protected final static Logger logger = LoggerFactory.getLogger(KafkaHBaseApplication.class); 22 | 23 | @Bean 24 | CanalClient canalClient() { 25 | return new CanalClient(); 26 | } 27 | 28 | public static void main(String[] args) throws Exception { 29 | 30 | ApplicationContext context = SpringApplication.run(KafkaHBaseApplication.class, args); 31 | 32 | CanalClient canalClient = context.getBean(CanalClient.class); 33 | canalClient.start(); 34 | logger.info("## started the canal client ##"); 35 | 36 | Runtime.getRuntime().addShutdownHook(new Thread() { 37 | 38 | public void run() { 39 | try { 40 | logger.info("## stop the canal client ##"); 41 | canalClient.stop(); 42 | } catch (Throwable e) { 43 | logger.warn("##something goes wrong when stopping canal:##", e); 44 | } finally { 45 | logger.info("## canal client is down ##"); 46 | } 47 | } 48 | 49 | }); 50 | 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /src/main/java/com/adups/canal/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/src/main/java/com/adups/canal/.DS_Store -------------------------------------------------------------------------------- /src/main/java/com/adups/canal/CanalBean.java: -------------------------------------------------------------------------------- 1 | package com.adups.canal; 2 | 3 | import java.io.Serializable; 4 | import java.util.Map; 5 | 6 | /** 7 | * Canal接到binlog的封装类 8 | * Created by gad on 2018/1/16. 9 | */ 10 | public class CanalBean implements Serializable { 11 | 12 | //数据库 13 | private String database; 14 | //表 15 | private String table; 16 | //操作时间 17 | private Long executeTime; 18 | //操作类型 19 | //INSERT = 1;UPDATE = 2;DELETE = 3;CREATE = 4;ALTER = 5;ERASE = 6;QUERY = 7; 20 | //TRUNCATE = 8;RENAME = 9;CINDEX = 10;DINDEX = 11; 21 | private int eventType; 22 | //ddl的sql 23 | private String ddlSql; 24 | //行数据 25 | private RowData rowData; 26 | 27 | public static class RowData { 28 | //操作前字段信息 29 | private Map beforeColumns; 30 | //操作后字段信息 31 | private Map afterColumns; 32 | 33 | public RowData() { 34 | } 35 | 36 | public RowData(Map beforeColumns, Map afterColumns) { 37 | this.beforeColumns = beforeColumns; 38 | this.afterColumns = afterColumns; 39 | } 40 | 41 | public Map getBeforeColumns() { 42 | return beforeColumns; 43 | } 44 | 45 | public void setBeforeColumns(Map beforeColumns) { 46 | this.beforeColumns = beforeColumns; 47 | } 48 | 49 | public Map getAfterColumns() { 50 | return afterColumns; 51 | } 52 | 53 | public void setAfterColumns(Map afterColumns) { 54 | this.afterColumns = afterColumns; 55 | } 56 | 57 | public static class ColumnEntry { 58 | //字段名称 59 | private String name; 60 | //是否是主键 61 | private Boolean isKey; 62 | //是否修改 63 | private Boolean updated; 64 | //是否为空 65 | private Boolean isNull; 66 | //字段的值 67 | private String value; 68 | 69 | public ColumnEntry() { 70 | } 71 | 72 | public ColumnEntry(String name, Boolean isKey, Boolean updated, Boolean isNull, String value) { 73 | this.name = name; 74 | this.isKey = isKey; 75 | this.updated = updated; 76 | this.isNull = isNull; 77 | this.value = value; 78 | } 79 | 80 | public String getName() { 81 | return name; 82 | } 83 | 84 | public void setName(String name) { 85 | this.name = name; 86 | } 87 | 88 | public Boolean getIsKey() { 89 | return isKey; 90 | } 91 | 92 | public void setIsKey(Boolean isKey) { 93 | this.isKey = isKey; 94 | } 95 | 96 | public Boolean getUpdated() { 97 | return updated; 98 | } 99 | 100 | public void setUpdated(Boolean updated) { 101 | this.updated = updated; 102 | } 103 | 104 | public Boolean getIsNull() { 105 | return isNull; 106 | } 107 | 108 | public void setIsNull(Boolean isNull) { 109 | this.isNull = isNull; 110 | } 111 | 112 | public String getValue() { 113 | return value; 114 | } 115 | 116 | public void setValue(String value) { 117 | this.value = value; 118 | } 119 | } 120 | } 121 | 122 | public CanalBean() { 123 | } 124 | 125 | public CanalBean(String database, String table, Long executeTime, int eventType, String ddlSql) { 126 | this.database = database; 127 | this.table = table; 128 | this.executeTime = executeTime; 129 | this.eventType = eventType; 130 | this.ddlSql = ddlSql; 131 | } 132 | 133 | public String getDatabase() { 134 | return database; 135 | } 136 | 137 | public void setDatabase(String database) { 138 | this.database = database; 139 | } 140 | 141 | public String getTable() { 142 | return table; 143 | } 144 | 145 | public void setTable(String table) { 146 | this.table = table; 147 | } 148 | 149 | public Long getExecuteTime() { 150 | return executeTime; 151 | } 152 | 153 | public void setExecuteTime(Long executeTime) { 154 | this.executeTime = executeTime; 155 | } 156 | 157 | public int getEventType() { 158 | return eventType; 159 | } 160 | 161 | public void setEventType(int eventType) { 162 | this.eventType = eventType; 163 | } 164 | 165 | public String getDdlSql() { 166 | return ddlSql; 167 | } 168 | 169 | public void setDdlSql(String ddlSql) { 170 | this.ddlSql = ddlSql; 171 | } 172 | 173 | public RowData getRowData() { 174 | return rowData; 175 | } 176 | 177 | public void setRowData(RowData rowData) { 178 | this.rowData = rowData; 179 | } 180 | 181 | 182 | } 183 | -------------------------------------------------------------------------------- /src/main/java/com/adups/canal/CanalClient.java: -------------------------------------------------------------------------------- 1 | package com.adups.canal; 2 | 3 | import com.alibaba.otter.canal.client.CanalConnector; 4 | import com.alibaba.otter.canal.client.CanalConnectors; 5 | import org.slf4j.Logger; 6 | import org.slf4j.LoggerFactory; 7 | import org.slf4j.MDC; 8 | import org.springframework.beans.factory.annotation.Autowired; 9 | import org.springframework.beans.factory.annotation.Value; 10 | 11 | import java.net.InetSocketAddress; 12 | 13 | /** 14 | * canal的client基类 15 | * Created by gad on 2018/1/16. 16 | */ 17 | public class CanalClient { 18 | 19 | protected final static Logger logger = LoggerFactory.getLogger(CanalClient.class); 20 | 21 | @Value("${canal.destination}") 22 | private String destination; 23 | 24 | @Value("${canal.server.ip}") 25 | private String ip; 26 | 27 | @Value("${canal.server.username}") 28 | private String username; 29 | 30 | @Value("${canal.server.password}") 31 | private String password; 32 | 33 | protected Thread thread = null; 34 | 35 | protected volatile boolean running = false; 36 | 37 | @Autowired 38 | private CanalHandler canalHandler; 39 | 40 | protected Thread.UncaughtExceptionHandler handler = new Thread.UncaughtExceptionHandler() { 41 | public void uncaughtException(Thread t, Throwable e) { 42 | logger.error("parse events has an error", e); 43 | } 44 | }; 45 | 46 | public void start() { 47 | CanalConnector connector = CanalConnectors.newSingleConnector(new InetSocketAddress(ip, 11111),destination,username,password);; 48 | thread = new Thread(new Runnable() { 49 | public void run() { 50 | canalHandler.handler(running,connector); 51 | } 52 | }); 53 | thread.setUncaughtExceptionHandler(handler); 54 | thread.start(); 55 | running = true; 56 | } 57 | 58 | public void stop() { 59 | if (!running) { 60 | return; 61 | } 62 | running = false; 63 | if (thread != null) { 64 | try { 65 | thread.join(); 66 | } catch (InterruptedException e) { 67 | // ignore 68 | } 69 | } 70 | MDC.remove("destination"); 71 | } 72 | 73 | 74 | } -------------------------------------------------------------------------------- /src/main/java/com/adups/common/ThreadPool.java: -------------------------------------------------------------------------------- 1 | package com.adups.common; 2 | 3 | import java.util.concurrent.Executor; 4 | import java.util.concurrent.ThreadPoolExecutor; 5 | import org.springframework.beans.factory.annotation.Value; 6 | import org.springframework.context.annotation.Bean; 7 | import org.springframework.context.annotation.Configuration; 8 | import org.springframework.scheduling.annotation.EnableAsync; 9 | import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; 10 | 11 | @Configuration 12 | @EnableAsync 13 | public class ThreadPool { 14 | 15 | @Value("${threadPool.corePoolSize}") 16 | private int corePoolSize = 10;//线程池维护线程的最少数量 17 | @Value("${threadPool.maxPoolSize}") 18 | private int maxPoolSize = 30;//线程池维护线程的最大数量 19 | @Value("${threadPool.queueCapacity}") 20 | private int queueCapacity = 10;//缓存队列 21 | @Value("${threadPool.keepAlive}") 22 | private int keepAlive = 60;//允许的空闲时间 23 | @Value("${threadPool.timeout}") 24 | private int timeout = 10;// 等待线程池任务执行结束超时时间 25 | 26 | @Bean 27 | public Executor myExecutor() { 28 | ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); 29 | executor.setCorePoolSize(corePoolSize); 30 | executor.setMaxPoolSize(maxPoolSize); 31 | executor.setQueueCapacity(queueCapacity); 32 | executor.setThreadNamePrefix("mqExecutor-"); 33 | //rejection-policy:当pool已经达到max size的时候,如何处理新任务 34 | //CALLER_RUNS:不在新线程中执行任务,而是由调用者所在的线程来执行 35 | executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); //对拒绝task的处理策略 36 | executor.setKeepAliveSeconds(keepAlive); 37 | executor.setAwaitTerminationSeconds(timeout); 38 | executor.initialize(); 39 | return executor; 40 | } 41 | 42 | } -------------------------------------------------------------------------------- /src/main/java/com/adups/hbase/config/BaseConfig.java: -------------------------------------------------------------------------------- 1 | package com.adups.hbase.config; 2 | 3 | /** 4 | * hbase公用配置信息 5 | * Created by gad on 2018/1/16. 6 | */ 7 | public final class BaseConfig { 8 | 9 | public static String TABLE_PREFIX_DATACUBE ="datacube."; 10 | 11 | public static String TABLE_PREFIX_GEMINI ="gemini."; 12 | 13 | public static String FAMILY_COLUMN="info"; 14 | 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/adups/hbase/config/HBaseConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.adups.hbase.config; 2 | 3 | import org.apache.hadoop.conf.Configuration; 4 | import org.slf4j.Logger; 5 | import org.slf4j.LoggerFactory; 6 | import org.springframework.beans.factory.annotation.Value; 7 | import org.springframework.context.annotation.Bean; 8 | 9 | /** 10 | * hbase加载zookeeper配置信息 11 | * Created by gad on 2018/1/16. 12 | */ 13 | @org.springframework.context.annotation.Configuration 14 | public class HBaseConfiguration { 15 | 16 | private Logger logger= LoggerFactory.getLogger(HBaseConfiguration.class); 17 | 18 | @Value("${hbase.zookeeper.quorum}") 19 | private String quorum; 20 | 21 | /** 22 | * 产生HBaseConfiguration实例化Bean 23 | * @return 24 | */ 25 | @Bean 26 | public Configuration configuration() { 27 | Configuration conf = org.apache.hadoop.hbase.HBaseConfiguration.create(); 28 | conf.set("hbase.zookeeper.quorum",quorum); 29 | conf.set("zookeeper.znode.parent", "/hbase"); 30 | return conf; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/com/adups/hbase/controller/HBaseController.java: -------------------------------------------------------------------------------- 1 | package com.adups.hbase.controller; 2 | 3 | import com.adups.hbase.service.HBaseService; 4 | import org.apache.hadoop.hbase.Cell; 5 | import org.apache.hadoop.hbase.client.Result; 6 | import org.apache.hadoop.hbase.util.Bytes; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.web.bind.annotation.RequestMapping; 9 | import org.springframework.web.bind.annotation.RequestMethod; 10 | import org.springframework.web.bind.annotation.RequestParam; 11 | import org.springframework.web.bind.annotation.RestController; 12 | 13 | /** 14 | * hbase对外api 15 | * Created by gad on 2018/1/22. 16 | */ 17 | @RestController 18 | public class HBaseController { 19 | 20 | @Autowired 21 | private HBaseService hBaseService; 22 | 23 | //http://localhost:18080/hbase/command/table/create/ 24 | @RequestMapping(value = "/hbase/command/table/create", method = RequestMethod.GET) 25 | public String createTable(@RequestParam(value = "tableName") String tableName) throws Exception { 26 | hBaseService.createTable(tableName, new String[]{"info"},true); 27 | return "create table success!"; 28 | } 29 | 30 | //http://localhost:18080/hbase/command/table/delete/ 31 | @RequestMapping(value = "/hbase/command/table/delete", method = RequestMethod.GET) 32 | public String deleteTable(@RequestParam(value = "tableName") String tableName) throws Exception { 33 | hBaseService.deleteTable(tableName); 34 | return "delete table success!"; 35 | } 36 | 37 | //http://localhost:18080/hbase/command/scan?tableName="gemini.t_order" 38 | @RequestMapping(value = "/hbase/command/scan", method = RequestMethod.GET) 39 | public String scanRegexRowKey(@RequestParam(value = "tableName") String tableName) { 40 | String regexKey = "000028d224c6474da412ee951d0db906"; 41 | Result result = hBaseService.getRow(tableName, regexKey); 42 | if (null==result) { 43 | System.out.println("result is null"); 44 | return "scan data is empty by the rowkey"; 45 | } 46 | for (Cell cell : result.listCells()) { 47 | System.out.println("rowKey:" + Bytes.toString(cell.getRowArray(), cell.getRowOffset(), cell.getRowLength())); 48 | System.out.println("family:" + Bytes.toString(cell.getFamilyArray(), cell.getFamilyOffset(), cell.getFamilyLength())); 49 | System.out.println("qualifier:" + Bytes.toString(cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength())); 50 | System.out.println("value:" + Bytes.toString(cell.getValueArray(), cell.getValueOffset(), cell.getValueLength())); 51 | System.out.println("Timestamp:" + cell.getTimestamp()); 52 | } 53 | return "scan success"; 54 | } 55 | 56 | 57 | 58 | } 59 | -------------------------------------------------------------------------------- /src/main/java/com/adups/hbase/service/HBaseService.java: -------------------------------------------------------------------------------- 1 | package com.adups.hbase.service; 2 | 3 | import org.apache.hadoop.hbase.client.Put; 4 | import org.apache.hadoop.hbase.client.Result; 5 | 6 | import java.util.List; 7 | import java.util.Map; 8 | 9 | /** 10 | * HBase 服务接口类 11 | * Created by gad on 2018/2/22. 12 | */ 13 | public interface HBaseService { 14 | 15 | /** 16 | * 创建表 17 | * @param tableName 表名称 18 | * @param columnFamilies 列族名称数组 19 | * @param preBuildRegion 是否预分配Region true:是; false:否 默认16个region,rowkey生成的时候记得指定前缀 20 | * @return 21 | */ 22 | void createTable(String tableName, String[] columnFamilies, boolean preBuildRegion) throws Exception; 23 | 24 | /** 25 | * 创建表 26 | * @param tableName 表名称 27 | * @return 28 | */ 29 | void deleteTable(String tableName); 30 | 31 | /** 32 | * 单行单个列族存储数据 33 | * @param tableName 表名称 34 | * @param rowKey rowkey 35 | * @param familyColumn 列族名称 36 | * @param columnValues 列值集合 37 | * @param waiting 是否等待线程执行完成 true:可以及时看到结果; false:让线程继续执行,并跳出此方法返回调用方主程序 38 | * @return 39 | */ 40 | void put(String tableName, String rowKey, String familyColumn, Map columnValues, boolean waiting); 41 | 42 | /** 43 | * 批量写入数据 44 | * @param tableName 表名称 45 | * @param puts Put 类型的列表 46 | * @param waiting 是否等待线程执行完成 true:可以及时看到结果; false:让线程继续执行,并跳出此方法返回调用方主程序 47 | * @return 48 | */ 49 | void batchPut(String tableName, final List puts, boolean waiting); 50 | 51 | /** 52 | * 获取多行数据 53 | * @param tablename 表名称 54 | * @param rows 多行 55 | * @return 56 | */ 57 | Result[] getRows(String tablename, List rows); 58 | 59 | /** 60 | * 获取单行数据 61 | * @param tablename 表名称 62 | * @param rowKey rowKey 63 | * @return 64 | */ 65 | Result getRow(String tablename, String rowKey); 66 | 67 | /** 68 | * 删除rowKey那行数据 69 | * @param tableName 70 | * @param rowKey 71 | */ 72 | void deleteAllColumn(String tableName,String rowKey); 73 | } 74 | -------------------------------------------------------------------------------- /src/main/java/com/adups/hbase/service/HBaseServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.adups.hbase.service; 2 | 3 | import com.adups.hbase.dao.HBaseDao; 4 | import org.apache.hadoop.hbase.client.*; 5 | import org.apache.hadoop.hbase.util.Bytes; 6 | import org.slf4j.Logger; 7 | import org.slf4j.LoggerFactory; 8 | import org.springframework.beans.factory.annotation.Autowired; 9 | import org.springframework.stereotype.Service; 10 | 11 | import java.io.IOException; 12 | import java.util.Arrays; 13 | import java.util.List; 14 | import java.util.Map; 15 | import java.util.concurrent.ExecutionException; 16 | import java.util.concurrent.Future; 17 | 18 | /** 19 | * HBaseService Mutator 实现类 20 | * Created by gad on 2018/2/22. 21 | */ 22 | @Service 23 | public class HBaseServiceImpl implements HBaseService { 24 | 25 | private static final Logger logger = LoggerFactory.getLogger(HBaseServiceImpl.class); 26 | 27 | @Autowired 28 | private HBaseDao hBaseDao; 29 | 30 | /** 31 | * 创建表 32 | * @param tableName 表名称 33 | * @param columnFamilies 列族名称数组 34 | * @param preBuildRegion 是否预分配Region true:是; false:否 默认16个region,rowkey生成的时候记得指定前缀 35 | * @return 返回执行时间 (单位: 毫秒) 36 | */ 37 | public void createTable(String tableName, String[] columnFamilies, boolean preBuildRegion) throws Exception { 38 | hBaseDao.createTable(tableName, columnFamilies, preBuildRegion); 39 | } 40 | 41 | @Override 42 | public void deleteTable(String tableName) { 43 | try { 44 | hBaseDao.deleteTable(tableName); 45 | } catch (IOException e) { 46 | logger.error("HBase delete table failed.", e); 47 | } 48 | } 49 | 50 | /** 51 | * 单行单个列族存储数据 52 | * @param tableName 表名称 53 | * @param rowKey rowkey 54 | * @param familyColumn 列族名称 55 | * @param columnValues 列值集合 56 | * @param waiting 是否等待线程执行完成 true:可以及时看到结果; false:让线程继续执行,并跳出此方法返回调用方主程序 57 | * @return 58 | */ 59 | @Override 60 | public void put(String tableName, String rowKey, String familyColumn, Map columnValues, boolean waiting) { 61 | Put put = new Put(Bytes.toBytes(rowKey)); 62 | for (Map.Entry entry : columnValues.entrySet()) { 63 | put.addColumn(Bytes.toBytes(familyColumn), Bytes.toBytes(entry.getKey()), Bytes.toBytes(entry.getValue())); 64 | } 65 | batchPut(tableName, Arrays.asList(put), waiting); 66 | } 67 | 68 | /** 69 | * 获取多行数据 70 | * @param tablename 表名称 71 | * @param rows 多行 72 | * @return 73 | */ 74 | @Override 75 | public Result[] getRows(String tablename, List rows) { 76 | return hBaseDao.getRows(tablename, rows); 77 | } 78 | 79 | /** 80 | * 获取单行数据 81 | * @param tablename 表名称 82 | * @param rowKey rowKey 83 | * @return 84 | */ 85 | @Override 86 | public Result getRow(String tablename, String rowKey) { 87 | //查询hbase,getRow()异步线程任务。 88 | Future f = hBaseDao.getRow(tablename, rowKey.getBytes()); 89 | Result rs = null; 90 | try { 91 | //因为是查询操作,需要立即返回数据,故此紧接着f.get(); 92 | rs = f.get(); 93 | } catch (InterruptedException e) { 94 | logger.error("HBase get row data failed.", e); 95 | } catch (ExecutionException e) { 96 | e.printStackTrace(); 97 | } 98 | return rs; 99 | } 100 | 101 | /** 102 | * 删除rowKey那行数据 103 | * @param tableName 104 | * @param rowKey 105 | */ 106 | @Override 107 | public void deleteAllColumn(String tableName, String rowKey) { 108 | hBaseDao.delete(tableName, rowKey); 109 | } 110 | 111 | /** 112 | * 多线程同步存储数据 113 | * @param tableName 表名称 114 | * @param puts 待提交参数 115 | * @param waiting 是否等待线程执行完成 true:可以及时看到结果; false:让线程继续执行,并跳出此方法返回调用方主程序 116 | */ 117 | @Override 118 | public void batchPut(final String tableName, final List puts, boolean waiting) { 119 | Future f = null; 120 | try { 121 | f = hBaseDao.put(tableName, puts); 122 | } catch (Exception e) { 123 | logger.error("batchPut failed.", e); 124 | } 125 | if(waiting){ 126 | try { 127 | f.get(); 128 | } catch (InterruptedException e) { 129 | logger.error("HBase put job thread pool await termination time out.", e); 130 | } catch (ExecutionException e) { 131 | e.printStackTrace(); 132 | } 133 | } 134 | } 135 | 136 | /** 137 | * 多线程异步存储数据 138 | * @param tableName 表名称 139 | * @param puts 待提交参数 140 | * @param waiting 是否等待线程执行完成 true:可以及时看到结果; false:让线程继续执行,并跳出此方法返回调用方主程序 141 | */ 142 | public void batchAsyncPut(final String tableName, final List puts, boolean waiting) { 143 | Future f = null; 144 | try { 145 | f = hBaseDao.putByHTable(tableName, puts); 146 | } catch (Exception e) { 147 | logger.error("batchPut failed . ", e); 148 | } 149 | if(waiting){ 150 | try { 151 | f.get(); 152 | } catch (InterruptedException e) { 153 | logger.error("HBase put job thread pool await termination time out.", e); 154 | } catch (ExecutionException e) { 155 | logger.error("多线程异步提交返回数据执行失败.", e); 156 | } 157 | } 158 | } 159 | 160 | 161 | 162 | } 163 | -------------------------------------------------------------------------------- /src/main/java/com/adups/kafka/consumer/KafkaConsumerConfig.java: -------------------------------------------------------------------------------- 1 | package com.adups.kafka.consumer; 2 | 3 | /** 4 | * Created by gad on 2018/2/23. 5 | */ 6 | import org.apache.kafka.clients.consumer.ConsumerConfig; 7 | import org.apache.kafka.common.serialization.StringDeserializer; 8 | import org.springframework.beans.factory.annotation.Value; 9 | import org.springframework.boot.autoconfigure.kafka.KafkaProperties; 10 | import org.springframework.context.annotation.Bean; 11 | import org.springframework.context.annotation.Configuration; 12 | import org.springframework.kafka.annotation.EnableKafka; 13 | import org.springframework.kafka.config.ConcurrentKafkaListenerContainerFactory; 14 | import org.springframework.kafka.config.KafkaListenerContainerFactory; 15 | import org.springframework.kafka.core.ConsumerFactory; 16 | import org.springframework.kafka.core.DefaultKafkaConsumerFactory; 17 | import org.springframework.kafka.listener.ConcurrentMessageListenerContainer; 18 | 19 | import java.util.HashMap; 20 | import java.util.Map; 21 | 22 | @Configuration 23 | @EnableKafka 24 | public class KafkaConsumerConfig { 25 | 26 | @Value("${kafka.consumer.servers}") 27 | private String servers; 28 | @Value("${kafka.consumer.enable.auto.commit}") 29 | private boolean enableAutoCommit; 30 | @Value("${kafka.consumer.session.timeout}") 31 | private String sessionTimeout; 32 | @Value("${kafka.consumer.auto.commit.interval}") 33 | //private String autoCommitInterval; 34 | //@Value("${kafka.consumer.group.id}") 35 | private String groupId; 36 | @Value("${kafka.consumer.auto.offset.reset}") 37 | private String autoOffsetReset; 38 | @Value("${kafka.consumer.concurrency}") 39 | private int concurrency; 40 | 41 | @Bean 42 | public KafkaListenerContainerFactory> kafkaListenerContainerFactory() { 43 | ConcurrentKafkaListenerContainerFactory factory = new ConcurrentKafkaListenerContainerFactory<>(); 44 | factory.setConsumerFactory(consumerFactory()); 45 | factory.setConcurrency(concurrency); 46 | factory.getContainerProperties().setPollTimeout(1500); 47 | return factory; 48 | } 49 | 50 | @Bean 51 | public ConsumerFactory consumerFactory() { 52 | return new DefaultKafkaConsumerFactory<>(consumerConfigs()); 53 | } 54 | 55 | @Bean 56 | public Map consumerConfigs() { 57 | Map propsMap = new HashMap<>(); 58 | propsMap.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, servers); 59 | propsMap.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, enableAutoCommit); 60 | //propsMap.put(ConsumerConfig.AUTO_COMMIT_INTERVAL_MS_CONFIG, autoCommitInterval); 61 | propsMap.put(ConsumerConfig.SESSION_TIMEOUT_MS_CONFIG, sessionTimeout); 62 | propsMap.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class); 63 | propsMap.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class); 64 | propsMap.put(ConsumerConfig.GROUP_ID_CONFIG, groupId); 65 | propsMap.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, autoOffsetReset); 66 | return propsMap; 67 | } 68 | 69 | @Bean 70 | public KafkaProperties.Listener listener() { 71 | return new KafkaProperties.Listener(); 72 | } 73 | 74 | } 75 | -------------------------------------------------------------------------------- /src/main/java/com/adups/kafka/consumer/impl/gemini/TOrderConsumer.java: -------------------------------------------------------------------------------- 1 | package com.adups.kafka.consumer.impl.gemini; 2 | 3 | import com.adups.canal.CanalBean; 4 | import com.adups.hbase.config.BaseConfig; 5 | import com.adups.hbase.service.HBaseService; 6 | import com.adups.kafka.consumer.impl.datacube.TOrderHandle; 7 | import com.alibaba.fastjson.JSON; 8 | import com.alibaba.otter.canal.protocol.CanalEntry; 9 | import org.apache.kafka.clients.consumer.ConsumerRecord; 10 | import org.slf4j.Logger; 11 | import org.slf4j.LoggerFactory; 12 | import org.springframework.beans.factory.annotation.Autowired; 13 | import org.springframework.kafka.annotation.KafkaListener; 14 | import org.springframework.stereotype.Component; 15 | 16 | import java.util.HashMap; 17 | import java.util.Map; 18 | 19 | /** 20 | * 原始t_order的处理 21 | * Created by gad on 2018/1/22. 22 | */ 23 | @Component 24 | public class TOrderConsumer { 25 | 26 | private Logger logger = LoggerFactory.getLogger(TOrderConsumer.class); 27 | 28 | @Autowired 29 | private HBaseService hBaseService; 30 | @Autowired 31 | TOrderHandle tOrderHandle; 32 | 33 | @KafkaListener(topics = {"gemini.t_order"}) 34 | public void listen(ConsumerRecord record) { 35 | logger.info("TOrderConsumer--->gemini.t_order~~~~~~listen"); 36 | logger.info("---|offset = %d,topic= %s,partition=%s,key =%s,value=%s\n", record.offset(), record.topic(), record.partition(), record.key(), record.value()); 37 | logger.info("sss---------:"+record.value().toString()); 38 | CanalBean canalBean = JSON.parseObject(record.value().toString(), CanalBean.class); 39 | 40 | switch(canalBean.getEventType()){ 41 | case CanalEntry.EventType.INSERT_VALUE: 42 | logger.info("canalBean.getEventType():"+canalBean.getEventType()); 43 | logger.info("CanalEntry.EventType.INSERT_VALUE:"+CanalEntry.EventType.INSERT_VALUE); 44 | //20服务器上的gemini库的t_order平行同步insert的数据到Hbase的表gemini.t_order 45 | insert(canalBean); 46 | //20服务器上的gemini库的t_order扩展同步insert的数据到Hbase的表datacube.t_order 47 | tOrderHandle.insert(canalBean); 48 | break; 49 | case CanalEntry.EventType.UPDATE_VALUE: 50 | update(canalBean); 51 | tOrderHandle.update(canalBean); 52 | break; 53 | case CanalEntry.EventType.DELETE_VALUE: 54 | delete(canalBean); 55 | tOrderHandle.delete(canalBean); 56 | break; 57 | case CanalEntry.EventType.CREATE_VALUE: 58 | //TODO 59 | break; 60 | case CanalEntry.EventType.ALTER_VALUE: 61 | //TODO 62 | break; 63 | case CanalEntry.EventType.ERASE_VALUE: 64 | //TODO 65 | break; 66 | case CanalEntry.EventType.QUERY_VALUE: 67 | //TODO 68 | break; 69 | 70 | } 71 | 72 | } 73 | 74 | public void insert(CanalBean canalBean) { 75 | Map columnValues = new HashMap<>(46); 76 | Map insertColumnEntrys = canalBean.getRowData().getAfterColumns(); 77 | String rowkey = insertColumnEntrys.get("id").getValue(); 78 | for(String key:insertColumnEntrys.keySet()){ 79 | if(!key.equals("id")){ 80 | columnValues.put(key,insertColumnEntrys.get(key).getValue()); 81 | } 82 | } 83 | hBaseService.put(BaseConfig.TABLE_PREFIX_GEMINI+canalBean.getTable(), rowkey, BaseConfig.FAMILY_COLUMN, columnValues,false); 84 | } 85 | 86 | public void update(CanalBean canalBean) { 87 | Map columnValues = new HashMap<>(46); 88 | Map updateColumnEntrys = canalBean.getRowData().getAfterColumns(); 89 | String rowkey = updateColumnEntrys.get("id").getValue(); 90 | for(String key:updateColumnEntrys.keySet()){ 91 | if((!key.equals("id"))&&updateColumnEntrys.get(key).getUpdated()){ 92 | columnValues.put(key,updateColumnEntrys.get(key).getValue()); 93 | } 94 | } 95 | hBaseService.put(BaseConfig.TABLE_PREFIX_GEMINI+canalBean.getTable(), rowkey, BaseConfig.FAMILY_COLUMN, columnValues,false); 96 | } 97 | 98 | public void delete(CanalBean canalBean) { 99 | Map deleteColumnEntrys = canalBean.getRowData().getAfterColumns(); 100 | String rowkey = deleteColumnEntrys.get("id").getValue(); 101 | hBaseService.deleteAllColumn(BaseConfig.TABLE_PREFIX_GEMINI+canalBean.getTable(), rowkey); 102 | } 103 | 104 | 105 | } 106 | -------------------------------------------------------------------------------- /src/main/java/com/adups/kafka/producer/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/src/main/java/com/adups/kafka/producer/.DS_Store -------------------------------------------------------------------------------- /src/main/java/com/adups/kafka/producer/HandlerProducer.java: -------------------------------------------------------------------------------- 1 | package com.adups.kafka.producer; 2 | 3 | import com.adups.canal.CanalBean; 4 | 5 | import java.util.concurrent.ExecutionException; 6 | import java.util.concurrent.Future; 7 | 8 | import com.alibaba.fastjson.JSON; 9 | import org.slf4j.Logger; 10 | import org.slf4j.LoggerFactory; 11 | import org.springframework.beans.factory.annotation.Autowired; 12 | import org.springframework.stereotype.Component; 13 | 14 | /** 15 | * kafka的producer 16 | * Created by gad on 2018/1/18. 17 | */ 18 | @Component 19 | public class HandlerProducer { 20 | 21 | private Logger logger = LoggerFactory.getLogger(HandlerProducer.class); 22 | 23 | @Autowired 24 | private KafkaProducerTask kafkaProducerTask; 25 | 26 | /** 27 | * 多线程同步提交 28 | * @param canalBean canal传递过来的bean 29 | * @param waiting 是否等待线程执行完成 true:可以及时看到结果; false:让线程继续执行,并跳出此方法返回调用方主程序; 30 | */ 31 | public void sendMessage(CanalBean canalBean, boolean waiting) { 32 | String canalBeanJsonStr = JSON.toJSONString(canalBean); 33 | Future f = kafkaProducerTask.sendKafkaMessage(canalBean.getDatabase() + "." + canalBean.getTable(),canalBeanJsonStr); 34 | logger.info("HandlerProducer日志--->当前线程:" + Thread.currentThread().getName() + ",接受的canalBeanJsonStr:" + canalBeanJsonStr); 35 | if(waiting){ 36 | try { 37 | f.get(); 38 | } catch (InterruptedException e) { 39 | logger.error("Send kafka message job thread pool await termination time out.", e); 40 | } catch (ExecutionException e) { 41 | e.printStackTrace(); 42 | } 43 | } 44 | } 45 | 46 | 47 | } 48 | -------------------------------------------------------------------------------- /src/main/java/com/adups/kafka/producer/KafkaProducerConfig.java: -------------------------------------------------------------------------------- 1 | package com.adups.kafka.producer; 2 | 3 | /** 4 | * Created by gad on 2018/2/23. 5 | */ 6 | 7 | import java.util.HashMap; 8 | import java.util.Map; 9 | 10 | import org.apache.kafka.clients.producer.ProducerConfig; 11 | import org.apache.kafka.common.serialization.StringSerializer; 12 | import org.slf4j.Logger; 13 | import org.slf4j.LoggerFactory; 14 | import org.springframework.beans.factory.annotation.Value; 15 | import org.springframework.context.annotation.Bean; 16 | import org.springframework.context.annotation.Configuration; 17 | import org.springframework.kafka.annotation.EnableKafka; 18 | import org.springframework.kafka.core.DefaultKafkaProducerFactory; 19 | import org.springframework.kafka.core.KafkaTemplate; 20 | import org.springframework.kafka.core.ProducerFactory; 21 | 22 | @Configuration 23 | @EnableKafka 24 | public class KafkaProducerConfig { 25 | 26 | @Value("${kafka.producer.servers}") 27 | private String servers; 28 | @Value("${kafka.producer.retries}") 29 | private int retries; 30 | @Value("${kafka.producer.batch.size}") 31 | private int batchSize; 32 | @Value("${kafka.producer.linger}") 33 | private int linger; 34 | @Value("${kafka.producer.buffer.memory}") 35 | private int bufferMemory; 36 | 37 | 38 | @Bean 39 | public Map producerConfigs() { 40 | Map props = new HashMap<>(); 41 | props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, servers); 42 | props.put(ProducerConfig.RETRIES_CONFIG, retries); 43 | props.put(ProducerConfig.BATCH_SIZE_CONFIG, batchSize); 44 | props.put(ProducerConfig.LINGER_MS_CONFIG, linger); 45 | props.put(ProducerConfig.BUFFER_MEMORY_CONFIG, bufferMemory); 46 | props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class); 47 | props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class); 48 | return props; 49 | } 50 | 51 | @Bean 52 | public ProducerFactory producerFactory() { 53 | return new DefaultKafkaProducerFactory<>(producerConfigs()); 54 | } 55 | 56 | @Bean 57 | public KafkaTemplate kafkaTemplate() { 58 | return new KafkaTemplate(producerFactory()); 59 | } 60 | } -------------------------------------------------------------------------------- /src/main/java/com/adups/kafka/producer/KafkaProducerTask.java: -------------------------------------------------------------------------------- 1 | package com.adups.kafka.producer; 2 | import org.apache.kafka.clients.producer.ProducerRecord; 3 | import org.slf4j.Logger; 4 | import org.slf4j.LoggerFactory; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.kafka.core.KafkaTemplate; 7 | import org.springframework.scheduling.annotation.Async; 8 | import org.springframework.scheduling.annotation.AsyncResult; 9 | import org.springframework.stereotype.Component; 10 | 11 | import java.util.concurrent.Future; 12 | 13 | /** 14 | * kafka的producer的dao 15 | * Created by gad on 2018/1/18. 16 | */ 17 | @Component 18 | public class KafkaProducerTask { 19 | 20 | private static final Logger LOGGER = LoggerFactory.getLogger(KafkaProducerTask.class); 21 | 22 | @Autowired 23 | private KafkaTemplate kafkaTemplate; 24 | 25 | /** 26 | * 通过kafkaProducer发送消息 27 | * @param message 具体消息值 28 | */ 29 | @Async("myExecutor") 30 | public Future sendKafkaMessage(String topic, final String message) { 31 | /** 32 | * 1、如果指定了某个分区,会只讲消息发到这个分区上 33 | * 2、如果同时指定了某个分区和key,则也会将消息发送到指定分区上,key不起作用 34 | * 3、如果没有指定分区和key,那么将会随机发送到topic的分区中 (int)(Math.random()*5) 35 | * 4、如果指定了key,那么将会以hash的方式发送到分区中 36 | */ 37 | ProducerRecord record = new ProducerRecord(topic, 0, null, message); 38 | kafkaTemplate.send(record); 39 | return new AsyncResult<>("send kafka message accomplished!"); 40 | } 41 | 42 | } -------------------------------------------------------------------------------- /src/main/java/com/adups/util/AnalysisUtil.java: -------------------------------------------------------------------------------- 1 | package com.adups.util; 2 | 3 | import java.math.BigInteger; 4 | import java.security.MessageDigest; 5 | import java.security.NoSuchAlgorithmException; 6 | import java.util.ArrayList; 7 | import java.util.HashMap; 8 | import java.util.List; 9 | import java.util.Map; 10 | 11 | /** 12 | * 数据解析辅助类 Created by ${薛龙虎} on 15/3/13. 13 | */ 14 | public class AnalysisUtil { 15 | /** 16 | * 将一行数据解析为一个个字段 17 | *

18 | * 示例数据 ,'ab\'c',bcd,,'ce\',d','ce,c','bcd', 19 | * 20 | * @param str 21 | * 要解析的字符串 22 | * @param delim 23 | * 间隔符,示例中的间隔符为, 24 | * @param identi 25 | * 字段包含符号,如‘,“等等. 示例中字段包含符号即为 ’ 26 | * @return 返回List 27 | */ 28 | public static List StringToColumns(String str, char delim, char identi) { 29 | 30 | List colList = new ArrayList(); 31 | 32 | char[] chars = str.toCharArray(); 33 | 34 | int temp = 0; 35 | 36 | StringBuffer strVal = new StringBuffer(); 37 | 38 | for (int i = 0; i < chars.length; i++) { 39 | 40 | // 如果为标示符,做一个记录 41 | if (chars[i] == identi) { 42 | 43 | if (i == 0) { 44 | temp = 1; 45 | continue; 46 | } 47 | 48 | // 字段第一次出现 49 | if (temp == 0) { 50 | temp = 1; 51 | continue; 52 | } 53 | 54 | if (temp == 1 && chars[i - 1] == '\\') { 55 | strVal.append(chars[i]); 56 | continue; 57 | } 58 | temp = 0; 59 | /* 60 | * colList.add(strVal.toString()); strVal = new StringBuffer(); 61 | */ 62 | continue; 63 | 64 | } 65 | 66 | if (chars[i] == delim) { 67 | if (temp == 0) { 68 | colList.add(strVal.toString()); 69 | strVal = new StringBuffer(); 70 | continue; 71 | } 72 | 73 | if (temp == 1) { 74 | strVal.append(chars[i]); 75 | continue; 76 | } 77 | } 78 | strVal.append(chars[i]); 79 | } 80 | 81 | colList.add(strVal.toString()); 82 | 83 | return colList; 84 | } 85 | 86 | /** 87 | * 将一行数据解析为一个Map(key:字段名,value:字段值) 88 | *

89 | * 示例数据 ,'ab\'c',bcd,,'ce\',d','ce,c','bcd', 90 | * 91 | * @param str 92 | * 要解析的字符串 93 | * @param colNameList 94 | * 字段名列表 95 | * @param delim 96 | * 间隔符,示例中的间隔符为, 97 | * @param identi 98 | * 字段包含符号,如‘,“等等. 示例中字段包含符号即为 ’ 99 | * @return 返回Map 100 | */ 101 | public static Map StringToMap(String str, List colNameList, char delim, char identi) { 102 | final Map colMap = new HashMap(); 103 | 104 | List colList = AnalysisUtil.StringToColumns(str, delim, identi); 105 | // 异常数据,直接返回 106 | if (colNameList.size() != colList.size()) { 107 | return null; 108 | } 109 | 110 | for (int i = 0; i < colNameList.size(); i++) { 111 | colMap.put(colNameList.get(i), colList.get(i)); 112 | } 113 | 114 | return colMap; 115 | } 116 | 117 | public static List dealString(String line, char separator, char escape) { 118 | List result = new ArrayList(); 119 | boolean flag = false; 120 | char ch = ' '; 121 | StringBuffer valule = new StringBuffer(); 122 | for (int i = 0; i < line.length(); i++) { 123 | ch = line.charAt(i); 124 | if (ch == escape) { 125 | if (!flag) { 126 | flag = !flag; 127 | } else if (line.charAt(Math.max(i - 1, 0)) == '\\') { 128 | valule.append(ch); 129 | } else { 130 | flag = !flag; 131 | } 132 | continue; 133 | } else if (ch == separator) { 134 | if (flag) { 135 | valule.append(ch); 136 | } else { 137 | result.add(valule.toString()); 138 | valule.delete(0, valule.length()); 139 | } 140 | continue; 141 | } 142 | valule.append(ch); 143 | } 144 | 145 | result.add(valule.toString()); 146 | return result; 147 | } 148 | 149 | /** 150 | * 利用md5加密字符串 151 | * 152 | * @param str 153 | * 需要加密的字符串 154 | * @return 返回加密过的字符串 155 | */ 156 | public static String md5(String str) { 157 | String retStr = ""; 158 | 159 | try { 160 | MessageDigest md = MessageDigest.getInstance("MD5"); 161 | md.update(str.getBytes()); 162 | retStr = new BigInteger(1, md.digest()).toString(16); 163 | 164 | } catch (NoSuchAlgorithmException e) { 165 | e.printStackTrace(); 166 | } 167 | 168 | return retStr; 169 | } 170 | } 171 | -------------------------------------------------------------------------------- /src/main/java/com/adups/util/ArrayUtil.java: -------------------------------------------------------------------------------- 1 | package com.adups.util; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | /** 7 | * 集合工具类 8 | * Created by babylon on 2016/12/1. 9 | */ 10 | public class ArrayUtil { 11 | 12 | /** 13 | * 拆分集合 14 | * @param 15 | * @param resList 要拆分的集合 16 | * @param count 每个集合的元素个数 17 | * @return 返回拆分后的各个集合 18 | */ 19 | public static List> split(List resList, int count){ 20 | 21 | if(resList==null ||count<1) 22 | return null ; 23 | List> ret=new ArrayList>(); 24 | int size=resList.size(); 25 | if(size<=count){ //数据量不足count指定的大小 26 | ret.add(resList); 27 | }else{ 28 | int pre=size/count; 29 | int last=size%count; 30 | //前面pre个集合,每个大小都是count个元素 31 | for(int i=0;i itemList=new ArrayList(); 33 | for(int j=0;j0){ 40 | List itemList=new ArrayList(); 41 | for(int i=0;i sysConfig = new HashMap(); 15 | private static ConfigUtil instance = null; 16 | 17 | private ConfigUtil() { 18 | } 19 | 20 | private static synchronized void syncInit() { 21 | if (instance == null) { 22 | instance = new ConfigUtil(); 23 | } 24 | } 25 | 26 | public static ConfigUtil getInstance() { 27 | if (instance == null) { 28 | syncInit(); 29 | } 30 | return instance; 31 | } 32 | 33 | @SuppressWarnings({ "unchecked", "rawtypes" }) 34 | public String getConfigVal(String key, String propertiesName) { 35 | if (sysConfig.size() != 0) { 36 | if (sysConfig.get(propertiesName) != null) { 37 | return sysConfig.get(propertiesName).get(key) == null ? "": sysConfig.get(propertiesName).get(key).toString(); 38 | } 39 | } 40 | InputStream inputStream = ReadProperties.class.getClassLoader().getResourceAsStream(propertiesName); 41 | Properties p = new Properties(); 42 | try { 43 | p.load(inputStream); 44 | } catch (IOException e) { 45 | e.printStackTrace(); 46 | } 47 | Map conf = new HashMap(); 48 | conf.putAll(p); 49 | sysConfig.put(propertiesName, conf); 50 | return conf.get(key) == null ? "" : conf.get(key).toString(); 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /src/main/java/com/adups/util/ConstantProperties.java: -------------------------------------------------------------------------------- 1 | package com.adups.util; 2 | 3 | /** 4 | * Created by zhenjie.wang on 2015/8/19. 5 | */ 6 | public class ConstantProperties { 7 | public static String DB = "conf/db.properties"; 8 | public static String DB_PROP = "conf/dbone.properties"; 9 | public static String SOC_PROP = "conf/soc.properties"; 10 | public static String COMMON_PROP = "conf/common.properties"; 11 | public static String URL_PROP = "conf/url.properties"; 12 | public static String URL_SOC_PROP = "conf/url_soc.properties"; 13 | 14 | public static String NO_SPLIT_HBASE_TABLE = "dbone.wdd_session,dbone.wdd_sql"; 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/adups/util/DesEncrypt.java: -------------------------------------------------------------------------------- 1 | package com.adups.util; 2 | 3 | import javax.crypto.Cipher; 4 | import javax.crypto.SecretKey; 5 | import javax.crypto.spec.SecretKeySpec; 6 | import java.security.MessageDigest; 7 | import java.security.NoSuchAlgorithmException; 8 | import java.security.Security; 9 | 10 | /** 11 | * Created by ${薛龙虎} on 15/3/16. 12 | */ 13 | public class DesEncrypt { 14 | private static final String Algorithm = "DES"; // 定义 加密算法,可用 15 | // DES,DESede,Blowfish 16 | // src为被加密的数据缓冲区(源) 17 | public static byte[] encryptMode(byte[] keybyte, byte[] src) { 18 | try { 19 | // 生成密钥 20 | SecretKey deskey = new SecretKeySpec(keybyte, Algorithm); 21 | // 加密 22 | Cipher c1 = Cipher.getInstance(Algorithm); 23 | c1.init(Cipher.ENCRYPT_MODE, deskey); 24 | return c1.doFinal(src); 25 | } catch (NoSuchAlgorithmException e1) { 26 | e1.printStackTrace(); 27 | } catch (javax.crypto.NoSuchPaddingException e2) { 28 | e2.printStackTrace(); 29 | } catch (Exception e3) { 30 | e3.printStackTrace(); 31 | } 32 | return null; 33 | } 34 | 35 | // keybyte为加密密钥,长度为24字节 36 | // src为加密后的缓冲区 37 | public static byte[] decryptMode(byte[] keybyte, byte[] src) { 38 | try { 39 | // 生成密钥 40 | SecretKey deskey = new SecretKeySpec(keybyte, Algorithm); 41 | // 解密 42 | Cipher c1 = Cipher.getInstance(Algorithm); 43 | c1.init(Cipher.DECRYPT_MODE, deskey); 44 | return c1.doFinal(src); 45 | } catch (NoSuchAlgorithmException e1) { 46 | e1.printStackTrace(); 47 | } catch (javax.crypto.NoSuchPaddingException e2) { 48 | e2.printStackTrace(); 49 | } catch (Exception e3) { 50 | e3.printStackTrace(); 51 | } 52 | return null; 53 | } 54 | 55 | // 转换成十六进制字符串 56 | public static String byte2hex(byte[] b) { 57 | String hs = ""; 58 | String stmp = ""; 59 | for (int n = 0; n < b.length; n++) { 60 | stmp = (Integer.toHexString(b[n] & 0XFF)); 61 | if (stmp.length() == 1) 62 | hs = hs + "0" + stmp; 63 | else 64 | hs = hs + stmp; 65 | if (n < b.length - 1) 66 | hs = hs + ""; 67 | } 68 | return hs.toUpperCase(); 69 | } 70 | 71 | // 16 进制 转 2 进制 72 | public static byte[] hex2byte(String hex) throws IllegalArgumentException { 73 | if (hex.length() % 2 != 0) { 74 | throw new IllegalArgumentException(); 75 | } 76 | char[] arr = hex.toCharArray(); 77 | byte[] b = new byte[hex.length() / 2]; 78 | for (int i = 0, j = 0, l = hex.length(); i < l; i++, j++) { 79 | String swap = "" + arr[i++] + arr[i]; 80 | int byteint = Integer.parseInt(swap, 16) & 0xFF; 81 | b[j] = new Integer(byteint).byteValue(); 82 | } 83 | return b; 84 | } 85 | 86 | @SuppressWarnings("unused") 87 | private static byte[] hex2byte(byte[] b) { 88 | if ((b.length % 2) != 0) 89 | throw new IllegalArgumentException("长度不是偶数"); 90 | byte[] b2 = new byte[b.length / 2]; 91 | for (int n = 0; n < b.length; n += 2) { 92 | String item = new String(b, n, 2); 93 | b2[n / 2] = (byte) Integer.parseInt(item, 16); 94 | } 95 | return b2; 96 | } 97 | 98 | // 加密 99 | @SuppressWarnings("restriction") 100 | public static String Encrypt(String str, byte[] key) { 101 | Security.addProvider(new com.sun.crypto.provider.SunJCE()); 102 | byte[] encrypt = encryptMode(key, str.getBytes()); 103 | return byte2hex(encrypt); 104 | } 105 | 106 | // 加密 107 | @SuppressWarnings("restriction") 108 | public static byte[] EncryptRetByte(byte[] src, byte[] key) { 109 | Security.addProvider(new com.sun.crypto.provider.SunJCE()); 110 | byte[] encrypt = encryptMode(key, src); 111 | return encrypt; 112 | } 113 | 114 | // 解密 115 | @SuppressWarnings("restriction") 116 | public static String Decrypt(String str, byte[] key) { 117 | Security.addProvider(new com.sun.crypto.provider.SunJCE()); 118 | byte[] decrypt = decryptMode(key, hex2byte(str)); 119 | return new String(decrypt); 120 | } 121 | 122 | 123 | public static String SHA1(String decript) { 124 | try { 125 | MessageDigest digest = MessageDigest.getInstance("SHA1"); 126 | digest.update(decript.getBytes()); 127 | byte messageDigest[] = digest.digest(); 128 | // Create Hex String 129 | StringBuffer hexString = new StringBuffer(); 130 | // 字节数组转换为 十六进制 数 131 | for (int i = 0; i < messageDigest.length; i++) { 132 | String shaHex = Integer.toHexString(messageDigest[i] & 0xFF); 133 | if (shaHex.length() < 2) { 134 | hexString.append(0); 135 | } 136 | hexString.append(shaHex); 137 | } 138 | return hexString.toString(); 139 | 140 | } catch (NoSuchAlgorithmException e) { 141 | e.printStackTrace(); 142 | } 143 | return ""; 144 | } 145 | 146 | public static void main(String arg[]) { 147 | String str = "jdbc\\:mysql\\://127.0.0.1\\:3306/uu_db?useUnicode=true&characterEncoding=utf8"; 148 | 149 | //System.out.println(str); 150 | //String strKey = SyncConstant.JAVA_DESC_KEY; 151 | //String s3 = Encrypt(str, hex2byte(strKey)); 152 | //String s4 = Decrypt(s3, hex2byte(strKey)); 153 | //System.out.println(s3); 154 | //System.out.println(s4); 155 | 156 | System.out.println(SHA1(str)); 157 | 158 | } 159 | } 160 | -------------------------------------------------------------------------------- /src/main/java/com/adups/util/EqualValue.java: -------------------------------------------------------------------------------- 1 | package com.adups.util; 2 | 3 | import java.util.List; 4 | import java.util.Set; 5 | 6 | public class EqualValue { 7 | 8 | public static boolean equalLists(List list1, List list2) { 9 | if (list1 == null || list2 == null) { 10 | return false; 11 | }else if(list1.size() != list2.size()){ 12 | return false; 13 | }else if(list1.containsAll(list2) && list2.containsAll(list1)){ 14 | return true; 15 | } 16 | return false; 17 | } 18 | 19 | public static boolean equalListAndSet(Set set1, List list2) { 20 | if (set1 == null || list2 == null) { 21 | return false; 22 | }else if(set1.size() != list2.size()){ 23 | return false; 24 | }else if(set1.containsAll(list2) && list2.containsAll(set1)){ 25 | return true; 26 | } 27 | return false; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/adups/util/IListUtil.java: -------------------------------------------------------------------------------- 1 | package com.adups.util; 2 | 3 | import java.util.List; 4 | 5 | public class IListUtil { 6 | 7 | public static String implode(List strList) { 8 | String res = ""; 9 | if (strList == null || strList.size() == 0) { 10 | return res; 11 | } 12 | for (String str : strList) { 13 | res += str + ","; 14 | } 15 | return res.substring(0, res.length() - 1); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/com/adups/util/MacOrIpconvert.java: -------------------------------------------------------------------------------- 1 | package com.adups.util; 2 | 3 | /** 4 | * Created by zhenjie.wang on 2015/8/19. 5 | */ 6 | public class MacOrIpconvert { 7 | 8 | // 9 | 10 | public static long ipToLong(String strIp){ 11 | if(null==strIp || "".equals(strIp.trim())) return 0; 12 | long[] ip = new long[4]; 13 | int p1 = strIp.indexOf("."); 14 | int p2 = strIp.indexOf(".",p1+1); 15 | int p3 = strIp.indexOf(".",p2+1); 16 | 17 | ip[0] = Long.parseLong(strIp.substring(0,p1)); 18 | ip[1] = Long.parseLong(strIp.substring(p1+1,p2)); 19 | ip[2] = Long.parseLong(strIp.substring(p2+1,p3)); 20 | ip[3] = Long.parseLong(strIp.substring(p3+1)); 21 | 22 | return (ip[0] << 24)+(ip[1] << 16)+(ip[2] << 8)+ip[3]; 23 | } 24 | 25 | // 26 | 27 | public static String longToIp(long longIp){ 28 | StringBuffer sb = new StringBuffer(""); 29 | sb.append(String.valueOf((longIp >>> 24))); 30 | sb.append("."); 31 | sb.append(String.valueOf((longIp & 0x00FFFFFF) >>> 16)); 32 | sb.append("."); 33 | sb.append(String.valueOf((longIp & 0x0000FFFF) >>> 8)); 34 | sb.append("."); 35 | sb.append(String.valueOf((longIp & 0x000000FF))); 36 | return sb.toString(); 37 | } 38 | 39 | // 40 | 41 | public static long macToString(String mac){ 42 | if(null==mac || "".equals(mac.trim())) return 0; 43 | mac = mac.trim(); 44 | mac = mac.replace("-",""); 45 | mac = mac.replace(":",""); 46 | return Long.parseLong(mac,16); 47 | } 48 | 49 | // 50 | 51 | public static String longToMac(long longMac){ 52 | String strMac = Long.toHexString(longMac); 53 | while (strMac.length()<12){ 54 | strMac = "0"+strMac; 55 | } 56 | String mac = ""; 57 | for(int i=0;i>> 4) & 0X0F]; 36 | tempArr[1] = digit[b & 0X0F]; 37 | String s = new String(tempArr); 38 | return s; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/com/adups/util/MyTaskRun.java: -------------------------------------------------------------------------------- 1 | package com.adups.util; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * Created by babylon on 2016/12/4. 7 | */ 8 | public class MyTaskRun implements Runnable { 9 | 10 | private String tablename; 11 | private List puts; 12 | 13 | public MyTaskRun(String tablename, List puts) { 14 | this.tablename = tablename; 15 | this.puts = puts; 16 | } 17 | /** 18 | * 拿到线程池 19 | * */ 20 | public ThreadPoolUtil threadPool= ThreadPoolUtil.init(); 21 | 22 | @Override 23 | public void run() { 24 | try { 25 | // 开始执行任务 26 | //HBaseUtil.put("logs", puts); 27 | } catch (Exception e) { 28 | e.printStackTrace(); 29 | } 30 | // System.out.println("taskNum 线程池中线程数目 :"+threadPool.getExecutor().getPoolSize()+",队列中等待执行的任务数目:"+ 31 | // threadPool.getExecutor().getQueue().size()+",已执行玩别的任务数目:"+threadPool.getExecutor().getCompletedTaskCount()); 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/com/adups/util/RandCodeEnum.java: -------------------------------------------------------------------------------- 1 | package com.adups.util; 2 | 3 | import java.util.Random; 4 | import java.util.Set; 5 | import java.util.TreeSet; 6 | 7 | public enum RandCodeEnum { 8 | /** 9 | * 混合字符串 10 | */ 11 | ALL_CHAR("0123456789abcdefghijkmnpqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), // 去除小写的l和o这个两个不容易区分的字符; 12 | /** 13 | * 字符 14 | */ 15 | LETTER_CHAR("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 16 | /** 17 | * 小写字母 18 | */ 19 | LOWER_CHAR("abcdefghijklmnopqrstuvwxyz"), 20 | /** 21 | * 数字 22 | */ 23 | NUMBER_CHAR("0123456789"), 24 | /** 25 | * 大写字符 26 | */ 27 | UPPER_CHAR("ABCDEFGHIJKLMNOPQRSTUVWXYZ"), 28 | 29 | /** 30 | * Hbase 离散前缀 31 | */ 32 | HBASE_CHAR("123456789ABCDEF"); 33 | 34 | /** 35 | * 待生成的字符串 36 | */ 37 | private String charStr; 38 | 39 | private RandCodeEnum(final String charStr) { 40 | this.charStr = charStr; 41 | } 42 | 43 | public String generateStr(final int codeLength) { 44 | final StringBuffer sb = new StringBuffer(); 45 | final Random random = new Random(); 46 | final String sourseStr = getCharStr(); 47 | 48 | for (int i = 0; i < codeLength; i++) { 49 | sb.append(sourseStr.charAt(random.nextInt(sourseStr.length()))); 50 | } 51 | 52 | return sb.toString(); 53 | } 54 | 55 | public String getCharStr() { 56 | return charStr; 57 | } 58 | 59 | 60 | public String[] getHbaseKeys(int pNum, int b, boolean only) { 61 | Set ts = new TreeSet(); 62 | int tss = 0; 63 | while ((tss = ts.size()) < pNum) { 64 | if (!only) { 65 | for (int i = 1; i <= b; i++) { 66 | ts.add(RandCodeEnum.HBASE_CHAR.generateStr(i)); 67 | } 68 | } else { 69 | ts.add(RandCodeEnum.HBASE_CHAR.generateStr(b)); 70 | } 71 | } 72 | return ts.toArray(new String[tss]); 73 | } 74 | 75 | public static void main(String[] args) { 76 | String[] hbaseKeys = RandCodeEnum.HBASE_CHAR.getHbaseKeys(240,2,false); 77 | for (String s : hbaseKeys) { 78 | System.out.println(s); 79 | } 80 | System.out.println(hbaseKeys.length); 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /src/main/java/com/adups/util/ReadProperties.java: -------------------------------------------------------------------------------- 1 | package com.adups.util; 2 | 3 | import java.io.IOException; 4 | import java.io.InputStream; 5 | import java.util.Properties; 6 | 7 | /** 8 | * 文件读取辅助类 9 | */ 10 | public class ReadProperties { 11 | 12 | /** 13 | * 14 | * @param fileName 15 | * 文件名 16 | * @param key 17 | * key 18 | * @param defaultValue 19 | * NULL的时候默认返回值 20 | * @return 21 | */ 22 | public static Object getPropertyFromConfiguration(String fileName, String key, Object defaultValue) { 23 | InputStream inputStream = ReadProperties.class.getClassLoader() 24 | .getResourceAsStream(fileName); 25 | Properties p = new Properties(); 26 | try { 27 | p.load(inputStream); 28 | } catch (IOException e) { 29 | 30 | } finally { 31 | try { 32 | inputStream.close(); 33 | } catch (IOException e) { 34 | 35 | } 36 | } 37 | return p.getProperty(key) == null ? defaultValue : p.getProperty(key); 38 | } 39 | 40 | /** 41 | * TODO 读取配置文件的相关项 42 | * 43 | * @param fileName 44 | * @return 45 | */ 46 | public static Properties loadConfiguration(String fileName) { 47 | InputStream inputStream = ReadProperties.class.getClassLoader().getResourceAsStream(fileName); 48 | Properties p = new Properties(); 49 | try { 50 | p.load(inputStream); 51 | } catch (IOException e) { 52 | } finally { 53 | try { 54 | inputStream.close(); 55 | } catch (IOException e) { 56 | } 57 | } 58 | return p; 59 | } 60 | 61 | } 62 | -------------------------------------------------------------------------------- /src/main/java/com/adups/util/SocPut.java: -------------------------------------------------------------------------------- 1 | package com.adups.util; 2 | 3 | import org.apache.hadoop.hbase.client.Put; 4 | 5 | import java.util.HashMap; 6 | import java.util.LinkedList; 7 | import java.util.List; 8 | import java.util.Map; 9 | 10 | /** 11 | * 扩展 Put 类 12 | * Created by babylon on 2016/12/5. 13 | */ 14 | public class SocPut extends Put{ 15 | 16 | private Map map; 17 | private List> data = new LinkedList<>(); 18 | 19 | /** 20 | * 初始化方法 21 | * @param row rowKey 名称 22 | */ 23 | public SocPut(byte[] row) { 24 | super(row); 25 | } 26 | 27 | @Override 28 | public Put addColumn(byte[] family, byte[] qualifier, byte[] value) { 29 | map = new HashMap<>(); 30 | map.put("family", family); 31 | map.put("qualifier", qualifier); 32 | map.put("value", value); 33 | data.add(map); 34 | return super.addColumn(family, qualifier, super.ts, value); 35 | } 36 | 37 | public List> getData() { 38 | return data; 39 | } 40 | 41 | public int getDataSize(){ 42 | return data.size(); 43 | } 44 | 45 | } 46 | -------------------------------------------------------------------------------- /src/main/java/com/adups/util/ThreadPoolUtil.java: -------------------------------------------------------------------------------- 1 | package com.adups.util; 2 | 3 | import org.slf4j.Logger; 4 | import org.slf4j.LoggerFactory; 5 | 6 | import java.util.concurrent.*; 7 | 8 | /** 9 | * 线程池工具类 10 | * Created by babylon on 2016/12/4. 11 | */ 12 | public class ThreadPoolUtil { 13 | 14 | private static final Logger logger = LoggerFactory.getLogger(ThreadPoolUtil.class); 15 | 16 | private static ThreadPoolUtil threadPool; 17 | private ThreadPoolExecutor executor=null; 18 | //线程池的基础参数 实际使用可写入到配置文件中 19 | private int corePoolSize = 10; // 核心池的大小 运行线程的最大值 当线程池中的线程数目达到corePoolSize后,就会把多余的任务放到缓存队列当中; 20 | private int maximumPoolSize = 15; // 创建线程最大值 21 | private long keepAliveTime = 1; // 线程没有执行任务时 被保留的最长时间 超过这个时间就会被销毁 直到线程数等于 corePoolSize 22 | private long timeout = 10; // 等待线程池任务执行结束超时时间 23 | 24 | /** 参数keepAliveTime的时间单位,有7种取值,在TimeUnit类中有7种静态属性: 25 | TimeUnit.DAYS; 天 26 | TimeUnit.HOURS; 小时 27 | TimeUnit.MINUTES; 分钟 28 | TimeUnit.SECONDS; 秒 29 | TimeUnit.MILLISECONDS; 毫秒 30 | TimeUnit.MICROSECONDS; 微妙 31 | TimeUnit.NANOSECONDS; 纳秒***/ 32 | private TimeUnit unit= TimeUnit.SECONDS; 33 | 34 | /** 35 | * 用来储存等待中的任务的容器 36 | * 37 | * 几种选择: 38 | * ArrayBlockingQueue; 39 | * LinkedBlockingQueue; 40 | * SynchronousQueue; 41 | * 区别太罗嗦请百度 http://blog.csdn.net/mn11201117/article/details/8671497 42 | */ 43 | private LinkedBlockingQueue workQueue=new LinkedBlockingQueue(); 44 | 45 | /** 46 | * 单例 47 | * @return 48 | */ 49 | public static ThreadPoolUtil init(){ 50 | if(threadPool==null) 51 | threadPool=new ThreadPoolUtil(); 52 | return threadPool; 53 | } 54 | 55 | /** 56 | * 私有构造方法 57 | */ 58 | private ThreadPoolUtil(){ 59 | //实现线程池 60 | executor=new ThreadPoolExecutor(corePoolSize,maximumPoolSize, keepAliveTime, unit, 61 | workQueue); 62 | System.out.println("线程池初始化成功"); 63 | } 64 | 65 | /** 66 | * 线程池获取方法 67 | * @return 68 | */ 69 | public ThreadPoolExecutor getExecutor() {return executor;} 70 | 71 | /** 72 | * 准备执行 抛入线程池 73 | * @param t 74 | */ 75 | public void execute(Thread t){ 76 | executor.execute(t); 77 | } 78 | 79 | public void execute(Runnable t){ executor.execute(t);} 80 | 81 | public int getQueueSize(){ 82 | return executor.getQueue().size(); 83 | } 84 | 85 | /** 86 | * 异步提交返回 Future 87 | * Future.get()可获得返回结果 88 | * @return 89 | */ 90 | public Future submit(Runnable t){return executor.submit(t);} 91 | 92 | /** 93 | * 异步提交返回 Future 94 | * Future.get()可获得返回结果 95 | * @return 96 | */ 97 | @SuppressWarnings({ "unchecked", "rawtypes" }) 98 | public Future submit(Callable t){return executor.submit(t);} 99 | 100 | /** 101 | * 销毁线程池 102 | * */ 103 | public void shutdown(){ 104 | executor.shutdown(); 105 | } 106 | 107 | /** 108 | * 阻塞,直到线程池里所有任务结束 109 | */ 110 | public void awaitTermination() throws InterruptedException { 111 | logger.info("Thread pool ,awaitTermination started, please wait till all the jobs complete."); 112 | executor.awaitTermination(timeout, unit); 113 | } 114 | 115 | } 116 | -------------------------------------------------------------------------------- /src/main/java/com/adups/util/TypeCheck.java: -------------------------------------------------------------------------------- 1 | package com.adups.util; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * Created by zhenjie.wang on 2015/8/13. 7 | */ 8 | public class TypeCheck { 9 | 10 | private enum LongtypeCheck { 11 | // sessionid,sqlid,dip,replyaccessid,smac,dmac; 12 | accessid, replyaccessid, c4; 13 | } 14 | 15 | private enum InttypeCheck { 16 | // policyid,effectrow,shgid,apptypeid,srcid,datafrom,policyalertgrade; 17 | effectrow, shgid, apptypeid, srcid, datafrom, policyalertgrade;// ,poid; 18 | } 19 | 20 | private enum FloattypeCheck { 21 | code, level, cost, resultflag; 22 | } 23 | 24 | public static boolean checkLong(String source) { 25 | for (LongtypeCheck l : LongtypeCheck.values()) { 26 | if (l.toString().equals(source.toLowerCase())) { 27 | return true; 28 | } 29 | } 30 | return false; 31 | } 32 | 33 | public static boolean checkInt(String source) { 34 | for (InttypeCheck i : InttypeCheck.values()) { 35 | if (i.toString().equals(source.toLowerCase())) { 36 | return true; 37 | } 38 | } 39 | return false; 40 | } 41 | 42 | public static boolean checkFloat(String source) { 43 | for (FloattypeCheck f : FloattypeCheck.values()) { 44 | if (f.toString().equals(source.toLowerCase())) { 45 | return true; 46 | } 47 | } 48 | return false; 49 | } 50 | 51 | public static boolean checkString(String source, List strList) { 52 | if (strList.contains(source)) { 53 | return true; 54 | } 55 | return false; 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /src/main/java/com/adups/util/Utf8_Filter.java: -------------------------------------------------------------------------------- 1 | package com.adups.util; 2 | 3 | public class Utf8_Filter { 4 | public static String stripNonCharCodepoints(String input) { 5 | StringBuilder retval = new StringBuilder(); 6 | char ch; 7 | 8 | for (int i = 0; i < input.length(); i++) { 9 | ch = input.charAt(i); 10 | 11 | // Strip all non-characters 12 | // http://unicode.org/cldr/utility/list-unicodeset.jsp?a=[:Noncharacter_Code_Point=True:] 13 | // and non-printable control characters except tabulator, new line 14 | // and carriage return 15 | if (ch % 0x10000 != 0xffff && // 0xffff - 0x10ffff range step 16 | // 0x10000 17 | ch % 0x10000 != 0xfffe && // 0xfffe - 0x10fffe range 18 | (ch <= 0xfdd0 || ch >= 0xfdef) && // 0xfdd0 - 0xfdef 19 | (ch > 0x1F || ch == 0x9 || ch == 0xa || ch == 0xd)) { 20 | 21 | retval.append(ch); 22 | } 23 | } 24 | 25 | return retval.toString(); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/resources/application-dev.properties: -------------------------------------------------------------------------------- 1 | server.port=18080 2 | 3 | #============== mysql =================== 4 | spring.datasource.driver-class-name=com.mysql.jdbc.Driver 5 | spring.datasource.url=jdbc:mysql://192.168.1.114:3306/datacube 6 | spring.datasource.username=root 7 | spring.datasource.password=gad123 8 | 9 | #============== canal =================== 10 | canal.destination=example 11 | canal.server.ip=192.168.1.114 12 | canal.server.username=gad 13 | canal.server.password=gad123 14 | 15 | 16 | #============== hbase =================== 17 | hbase.zookeeper.quorum=192.168.1.111:2181,192.168.1.112:2181,192.168.1.113:2181 18 | 19 | 20 | #============== kafka =================== 21 | kafka.consumer.zookeeper.connect=192.168.1.111:2181,192.168.1.112:2181,192.168.1.113:2181 22 | kafka.consumer.servers=192.168.1.111:9092,192.168.1.112:9092,192.168.1.113:9092 23 | kafka.consumer.enable.auto.commit=false 24 | kafka.consumer.session.timeout=6000 25 | kafka.consumer.auto.commit.interval=100 26 | kafka.consumer.auto.offset.reset=latest 27 | kafka.consumer.group.id=0 28 | kafka.consumer.concurrency=10 29 | kafka.producer.servers=192.168.1.111:9092,192.168.1.112:9092,192.168.1.113:9092 30 | kafka.producer.retries=3 31 | kafka.producer.batch.size=4096 32 | kafka.producer.linger=1 33 | kafka.producer.buffer.memory=40960 34 | 35 | 36 | #============== threadPool =================== 37 | threadPool.corePoolSize=10 38 | threadPool.maxPoolSize=30 39 | threadPool.queueCapacity=60 40 | threadPool.keepAlive=10 41 | threadPool.timeout=10 42 | 43 | -------------------------------------------------------------------------------- /src/main/resources/application-pro.properties: -------------------------------------------------------------------------------- 1 | server.port=18080 2 | 3 | #============== canal =================== 4 | canal.destination=example 5 | canal.server.ip=192.168.1.114 6 | canal.server.username=gad 7 | canal.server.password=gad123 8 | 9 | 10 | #============== hbase =================== 11 | hbase.zookeeper.quorum=192.168.1.111:2181,192.168.1.112:2181,192.168.1.113:2181 12 | 13 | 14 | #============== kafka =================== 15 | kafka.consumer.zookeeper.connect=192.168.1.111:2181,192.168.1.112:2181,192.168.1.113:2181 16 | kafka.consumer.servers=192.168.1.111:9092,192.168.1.112:9092,192.168.1.113:9092 17 | kafka.consumer.enable.auto.commit=true 18 | kafka.consumer.session.timeout=6000 19 | kafka.consumer.auto.commit.interval=100 20 | kafka.consumer.auto.offset.reset=latest 21 | kafka.consumer.group.id=datacube 22 | kafka.consumer.concurrency=10 23 | kafka.producer.servers=192.168.1.111:9092,192.168.1.112:9092,192.168.1.113:9092 24 | kafka.producer.retries=3 25 | kafka.producer.batch.size=4096 26 | kafka.producer.linger=1 27 | kafka.producer.buffer.memory=40960 28 | 29 | 30 | #============== threadPool =================== 31 | threadPool.corePoolSize=10 32 | threadPool.maxPoolSize=30 33 | threadPool.queueCapacity=60 34 | threadPool.keepAlive=10 35 | threadPool.timeout=10 -------------------------------------------------------------------------------- /src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.profiles.active=dev -------------------------------------------------------------------------------- /src/main/resources/log4j.properties: -------------------------------------------------------------------------------- 1 | conf### set log levels ### 2 | log4j.rootLogger = debug , stdout 3 | 4 | ### ���������̨ ### 5 | log4j.appender.stdout = org.apache.log4j.ConsoleAppender 6 | log4j.appender.stdout.Target = System.out 7 | log4j.appender.stdout.layout = org.apache.log4j.PatternLayout 8 | log4j.appender.stdout.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n 9 | 10 | ### �������־�ļ� ### 11 | log4j.appender.D = org.apache.log4j.DailyRollingFileAppender 12 | log4j.appender.D.File = logs/log.log 13 | log4j.appender.D.Append = true 14 | log4j.appender.D.Threshold = DEBUG ## ���DEBUG�������ϵ���־ 15 | log4j.appender.D.layout = org.apache.log4j.PatternLayout 16 | log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n 17 | 18 | ### �����쳣��Ϣ�������ļ� ### 19 | log4j.appender.D = org.apache.log4j.DailyRollingFileAppender 20 | log4j.appender.D.File = logs/error.log ## �쳣��־�ļ��� 21 | log4j.appender.D.Append = true 22 | log4j.appender.D.Threshold = ERROR ## ֻ���ERROR�������ϵ���־!!! 23 | log4j.appender.D.layout = org.apache.log4j.PatternLayout 24 | log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n -------------------------------------------------------------------------------- /src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | true 10 | 11 | 12 | %-5level %date{yyyy-MM-dd HH:mm:ss} - %msg%n 13 | 14 | UTF-8 15 | 16 | 17 | ${logPath}/kafka_hbase_%d{yyyyMMdd}.log 18 | 19 | true 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | %-5level %date{yyyy-MM-dd HH:mm:ss} - %msg%n 28 | 29 | UTF-8 30 | 31 | 32 | @log.console.level@ 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /src/test/java/com/adups/KafkaHBaseApplicationTests.java: -------------------------------------------------------------------------------- 1 | package com.adups; 2 | 3 | import org.junit.Test; 4 | import org.junit.runner.RunWith; 5 | import org.springframework.boot.test.context.SpringBootTest; 6 | import org.springframework.test.context.junit4.SpringRunner; 7 | 8 | @RunWith(SpringRunner.class) 9 | @SpringBootTest 10 | public class KafkaHBaseApplicationTests { 11 | 12 | @Test 13 | public void contextLoads() { 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /target/classes/application-dev.properties: -------------------------------------------------------------------------------- 1 | server.port=18080 2 | 3 | #============== mysql =================== 4 | spring.datasource.driver-class-name=com.mysql.jdbc.Driver 5 | spring.datasource.url=jdbc:mysql://192.168.1.114:3306/datacube 6 | spring.datasource.username=root 7 | spring.datasource.password=gad123 8 | 9 | #============== canal =================== 10 | canal.destination=example 11 | canal.server.ip=192.168.1.114 12 | canal.server.username=gad 13 | canal.server.password=gad123 14 | 15 | 16 | #============== hbase =================== 17 | hbase.zookeeper.quorum=192.168.1.111:2181,192.168.1.112:2181,192.168.1.113:2181 18 | 19 | 20 | #============== kafka =================== 21 | kafka.consumer.zookeeper.connect=192.168.1.111:2181,192.168.1.112:2181,192.168.1.113:2181 22 | kafka.consumer.servers=192.168.1.111:9092,192.168.1.112:9092,192.168.1.113:9092 23 | kafka.consumer.enable.auto.commit=false 24 | kafka.consumer.session.timeout=6000 25 | kafka.consumer.auto.commit.interval=100 26 | kafka.consumer.auto.offset.reset=latest 27 | kafka.consumer.group.id=0 28 | kafka.consumer.concurrency=10 29 | kafka.producer.servers=192.168.1.111:9092,192.168.1.112:9092,192.168.1.113:9092 30 | kafka.producer.retries=3 31 | kafka.producer.batch.size=4096 32 | kafka.producer.linger=1 33 | kafka.producer.buffer.memory=40960 34 | 35 | 36 | #============== threadPool =================== 37 | threadPool.corePoolSize=10 38 | threadPool.maxPoolSize=30 39 | threadPool.queueCapacity=60 40 | threadPool.keepAlive=10 41 | threadPool.timeout=10 42 | 43 | -------------------------------------------------------------------------------- /target/classes/application-pro.properties: -------------------------------------------------------------------------------- 1 | server.port=18080 2 | 3 | #============== canal =================== 4 | canal.destination=example 5 | canal.server.ip=192.168.1.114 6 | canal.server.username=gad 7 | canal.server.password=gad123 8 | 9 | 10 | #============== hbase =================== 11 | hbase.zookeeper.quorum=192.168.1.111:2181,192.168.1.112:2181,192.168.1.113:2181 12 | 13 | 14 | #============== kafka =================== 15 | kafka.consumer.zookeeper.connect=192.168.1.111:2181,192.168.1.112:2181,192.168.1.113:2181 16 | kafka.consumer.servers=192.168.1.111:9092,192.168.1.112:9092,192.168.1.113:9092 17 | kafka.consumer.enable.auto.commit=true 18 | kafka.consumer.session.timeout=6000 19 | kafka.consumer.auto.commit.interval=100 20 | kafka.consumer.auto.offset.reset=latest 21 | kafka.consumer.group.id=datacube 22 | kafka.consumer.concurrency=10 23 | kafka.producer.servers=192.168.1.111:9092,192.168.1.112:9092,192.168.1.113:9092 24 | kafka.producer.retries=3 25 | kafka.producer.batch.size=4096 26 | kafka.producer.linger=1 27 | kafka.producer.buffer.memory=40960 28 | 29 | 30 | #============== threadPool =================== 31 | threadPool.corePoolSize=10 32 | threadPool.maxPoolSize=30 33 | threadPool.queueCapacity=60 34 | threadPool.keepAlive=10 35 | threadPool.timeout=10 -------------------------------------------------------------------------------- /target/classes/application.properties: -------------------------------------------------------------------------------- 1 | 2 | spring.profiles.active=dev -------------------------------------------------------------------------------- /target/classes/com/adups/KafkaHBaseApplication$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/KafkaHBaseApplication$1.class -------------------------------------------------------------------------------- /target/classes/com/adups/KafkaHBaseApplication.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/KafkaHBaseApplication.class -------------------------------------------------------------------------------- /target/classes/com/adups/canal/CanalBean$RowData$ColumnEntry.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/canal/CanalBean$RowData$ColumnEntry.class -------------------------------------------------------------------------------- /target/classes/com/adups/canal/CanalBean$RowData.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/canal/CanalBean$RowData.class -------------------------------------------------------------------------------- /target/classes/com/adups/canal/CanalBean.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/canal/CanalBean.class -------------------------------------------------------------------------------- /target/classes/com/adups/canal/CanalClient$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/canal/CanalClient$1.class -------------------------------------------------------------------------------- /target/classes/com/adups/canal/CanalClient$2.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/canal/CanalClient$2.class -------------------------------------------------------------------------------- /target/classes/com/adups/canal/CanalClient.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/canal/CanalClient.class -------------------------------------------------------------------------------- /target/classes/com/adups/canal/CanalHandler.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/canal/CanalHandler.class -------------------------------------------------------------------------------- /target/classes/com/adups/common/ThreadPool.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/common/ThreadPool.class -------------------------------------------------------------------------------- /target/classes/com/adups/hbase/config/BaseConfig.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/hbase/config/BaseConfig.class -------------------------------------------------------------------------------- /target/classes/com/adups/hbase/config/HBaseConfiguration.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/hbase/config/HBaseConfiguration.class -------------------------------------------------------------------------------- /target/classes/com/adups/hbase/controller/HBaseController.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/hbase/controller/HBaseController.class -------------------------------------------------------------------------------- /target/classes/com/adups/hbase/dao/HBaseDao$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/hbase/dao/HBaseDao$1.class -------------------------------------------------------------------------------- /target/classes/com/adups/hbase/dao/HBaseDao.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/hbase/dao/HBaseDao.class -------------------------------------------------------------------------------- /target/classes/com/adups/hbase/model/HBasePageModel.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/hbase/model/HBasePageModel.class -------------------------------------------------------------------------------- /target/classes/com/adups/hbase/service/HBaseService.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/hbase/service/HBaseService.class -------------------------------------------------------------------------------- /target/classes/com/adups/hbase/service/HBaseServiceImpl.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/hbase/service/HBaseServiceImpl.class -------------------------------------------------------------------------------- /target/classes/com/adups/kafka/bean/datacube/BbTOrder.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/kafka/bean/datacube/BbTOrder.class -------------------------------------------------------------------------------- /target/classes/com/adups/kafka/bean/datacube/TOrder.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/kafka/bean/datacube/TOrder.class -------------------------------------------------------------------------------- /target/classes/com/adups/kafka/bean/gemini/TOrder.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/kafka/bean/gemini/TOrder.class -------------------------------------------------------------------------------- /target/classes/com/adups/kafka/bean/gemini/TOrderFlow.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/kafka/bean/gemini/TOrderFlow.class -------------------------------------------------------------------------------- /target/classes/com/adups/kafka/consumer/KafkaConsumerConfig.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/kafka/consumer/KafkaConsumerConfig.class -------------------------------------------------------------------------------- /target/classes/com/adups/kafka/consumer/impl/datacube/TOrderHandle.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/kafka/consumer/impl/datacube/TOrderHandle.class -------------------------------------------------------------------------------- /target/classes/com/adups/kafka/consumer/impl/gemini/TOrderConsumer.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/kafka/consumer/impl/gemini/TOrderConsumer.class -------------------------------------------------------------------------------- /target/classes/com/adups/kafka/producer/HandlerProducer.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/kafka/producer/HandlerProducer.class -------------------------------------------------------------------------------- /target/classes/com/adups/kafka/producer/KafkaProducerConfig.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/kafka/producer/KafkaProducerConfig.class -------------------------------------------------------------------------------- /target/classes/com/adups/kafka/producer/KafkaProducerTask.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/kafka/producer/KafkaProducerTask.class -------------------------------------------------------------------------------- /target/classes/com/adups/util/AnalysisUtil.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/util/AnalysisUtil.class -------------------------------------------------------------------------------- /target/classes/com/adups/util/ArrayUtil.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/util/ArrayUtil.class -------------------------------------------------------------------------------- /target/classes/com/adups/util/BackCostUtil.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/util/BackCostUtil.class -------------------------------------------------------------------------------- /target/classes/com/adups/util/ConfigUtil.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/util/ConfigUtil.class -------------------------------------------------------------------------------- /target/classes/com/adups/util/ConstantProperties.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/util/ConstantProperties.class -------------------------------------------------------------------------------- /target/classes/com/adups/util/DesEncrypt.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/util/DesEncrypt.class -------------------------------------------------------------------------------- /target/classes/com/adups/util/EqualValue.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/util/EqualValue.class -------------------------------------------------------------------------------- /target/classes/com/adups/util/HBasePageModel.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/util/HBasePageModel.class -------------------------------------------------------------------------------- /target/classes/com/adups/util/IListUtil.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/util/IListUtil.class -------------------------------------------------------------------------------- /target/classes/com/adups/util/MacOrIpconvert.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/util/MacOrIpconvert.class -------------------------------------------------------------------------------- /target/classes/com/adups/util/Md5Util.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/util/Md5Util.class -------------------------------------------------------------------------------- /target/classes/com/adups/util/MyTaskRun.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/util/MyTaskRun.class -------------------------------------------------------------------------------- /target/classes/com/adups/util/RandCodeEnum.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/util/RandCodeEnum.class -------------------------------------------------------------------------------- /target/classes/com/adups/util/ReadProperties.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/util/ReadProperties.class -------------------------------------------------------------------------------- /target/classes/com/adups/util/SocPut.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/util/SocPut.class -------------------------------------------------------------------------------- /target/classes/com/adups/util/ThreadPoolUtil.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/util/ThreadPoolUtil.class -------------------------------------------------------------------------------- /target/classes/com/adups/util/TypeCheck$FloattypeCheck.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/util/TypeCheck$FloattypeCheck.class -------------------------------------------------------------------------------- /target/classes/com/adups/util/TypeCheck$InttypeCheck.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/util/TypeCheck$InttypeCheck.class -------------------------------------------------------------------------------- /target/classes/com/adups/util/TypeCheck$LongtypeCheck.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/util/TypeCheck$LongtypeCheck.class -------------------------------------------------------------------------------- /target/classes/com/adups/util/TypeCheck.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/util/TypeCheck.class -------------------------------------------------------------------------------- /target/classes/com/adups/util/Utf8_Filter.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/classes/com/adups/util/Utf8_Filter.class -------------------------------------------------------------------------------- /target/classes/log4j.properties: -------------------------------------------------------------------------------- 1 | conf### set log levels ### 2 | log4j.rootLogger = debug , stdout 3 | 4 | ### ���������̨ ### 5 | log4j.appender.stdout = org.apache.log4j.ConsoleAppender 6 | log4j.appender.stdout.Target = System.out 7 | log4j.appender.stdout.layout = org.apache.log4j.PatternLayout 8 | log4j.appender.stdout.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n 9 | 10 | ### �������־�ļ� ### 11 | log4j.appender.D = org.apache.log4j.DailyRollingFileAppender 12 | log4j.appender.D.File = logs/log.log 13 | log4j.appender.D.Append = true 14 | log4j.appender.D.Threshold = DEBUG ## ���DEBUG�������ϵ���־ 15 | log4j.appender.D.layout = org.apache.log4j.PatternLayout 16 | log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n 17 | 18 | ### �����쳣��Ϣ�������ļ� ### 19 | log4j.appender.D = org.apache.log4j.DailyRollingFileAppender 20 | log4j.appender.D.File = logs/error.log ## �쳣��־�ļ��� 21 | log4j.appender.D.Append = true 22 | log4j.appender.D.Threshold = ERROR ## ֻ���ERROR�������ϵ���־!!! 23 | log4j.appender.D.layout = org.apache.log4j.PatternLayout 24 | log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n -------------------------------------------------------------------------------- /target/classes/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | true 10 | 11 | 12 | %-5level %date{yyyy-MM-dd HH:mm:ss} - %msg%n 13 | 14 | UTF-8 15 | 16 | 17 | ${logPath}/kafka_hbase_%d{yyyyMMdd}.log 18 | 19 | true 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | %-5level %date{yyyy-MM-dd HH:mm:ss} - %msg%n 28 | 29 | UTF-8 30 | 31 | 32 | @log.console.level@ 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /target/test-classes/com/adups/KafkaHBaseApplicationTests.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guoad/canal-kafka-hbase/206f843aa1ab7df8185b580abb299461e19e0f17/target/test-classes/com/adups/KafkaHBaseApplicationTests.class --------------------------------------------------------------------------------