diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..633ef67 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Datasource local storage ignored files +/../../../../:\practice\flink-test\.idea/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 0000000..a55e7a1 --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..6b00516 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..aa00ffa --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..980588c --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_2_4.xml b/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_2_4.xml new file mode 100644 index 0000000..4c5df29 --- /dev/null +++ b/.idea/libraries/Maven__ch_qos_logback_logback_classic_1_2_4.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__ch_qos_logback_logback_core_1_2_4.xml b/.idea/libraries/Maven__ch_qos_logback_logback_core_1_2_4.xml new file mode 100644 index 0000000..1e5c99e --- /dev/null +++ b/.idea/libraries/Maven__ch_qos_logback_logback_core_1_2_4.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_esotericsoftware_kryo_kryo_2_24_0.xml b/.idea/libraries/Maven__com_esotericsoftware_kryo_kryo_2_24_0.xml new file mode 100644 index 0000000..28097c4 --- /dev/null +++ b/.idea/libraries/Maven__com_esotericsoftware_kryo_kryo_2_24_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_esotericsoftware_minlog_minlog_1_2.xml b/.idea/libraries/Maven__com_esotericsoftware_minlog_minlog_1_2.xml new file mode 100644 index 0000000..f926eec --- /dev/null +++ b/.idea/libraries/Maven__com_esotericsoftware_minlog_minlog_1_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_12_4.xml b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_12_4.xml new file mode 100644 index 0000000..5351aad --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_annotations_2_12_4.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_12_4.xml b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_12_4.xml new file mode 100644 index 0000000..b61928e --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_core_2_12_4.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_12_4.xml b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_12_4.xml new file mode 100644 index 0000000..3088e4d --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_jackson_core_jackson_databind_2_12_4.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_12_4.xml b/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_12_4.xml new file mode 100644 index 0000000..03661ab --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_12_4.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_12_4.xml b/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_12_4.xml new file mode 100644 index 0000000..518a6c9 --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_12_4.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_12_4.xml b/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_12_4.xml new file mode 100644 index 0000000..9c5251c --- /dev/null +++ b/.idea/libraries/Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_12_4.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_github_luben_zstd_jni_1_4_3_1.xml b/.idea/libraries/Maven__com_github_luben_zstd_jni_1_4_3_1.xml new file mode 100644 index 0000000..dfa7e53 --- /dev/null +++ b/.idea/libraries/Maven__com_github_luben_zstd_jni_1_4_3_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_github_scopt_scopt_2_11_3_5_0.xml b/.idea/libraries/Maven__com_github_scopt_scopt_2_11_3_5_0.xml new file mode 100644 index 0000000..e52bec4 --- /dev/null +++ b/.idea/libraries/Maven__com_github_scopt_scopt_2_11_3_5_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_google_code_findbugs_jsr305_1_3_9.xml b/.idea/libraries/Maven__com_google_code_findbugs_jsr305_1_3_9.xml new file mode 100644 index 0000000..0e66824 --- /dev/null +++ b/.idea/libraries/Maven__com_google_code_findbugs_jsr305_1_3_9.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_twitter_chill_2_11_0_7_6.xml b/.idea/libraries/Maven__com_twitter_chill_2_11_0_7_6.xml new file mode 100644 index 0000000..ea68d3c --- /dev/null +++ b/.idea/libraries/Maven__com_twitter_chill_2_11_0_7_6.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_twitter_chill_java_0_7_6.xml b/.idea/libraries/Maven__com_twitter_chill_java_0_7_6.xml new file mode 100644 index 0000000..c08e25c --- /dev/null +++ b/.idea/libraries/Maven__com_twitter_chill_java_0_7_6.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_typesafe_akka_akka_actor_2_11_2_5_21.xml b/.idea/libraries/Maven__com_typesafe_akka_akka_actor_2_11_2_5_21.xml new file mode 100644 index 0000000..215c2c0 --- /dev/null +++ b/.idea/libraries/Maven__com_typesafe_akka_akka_actor_2_11_2_5_21.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_typesafe_akka_akka_protobuf_2_11_2_5_21.xml b/.idea/libraries/Maven__com_typesafe_akka_akka_protobuf_2_11_2_5_21.xml new file mode 100644 index 0000000..96dbc63 --- /dev/null +++ b/.idea/libraries/Maven__com_typesafe_akka_akka_protobuf_2_11_2_5_21.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_typesafe_akka_akka_slf4j_2_11_2_5_21.xml b/.idea/libraries/Maven__com_typesafe_akka_akka_slf4j_2_11_2_5_21.xml new file mode 100644 index 0000000..6153dc3 --- /dev/null +++ b/.idea/libraries/Maven__com_typesafe_akka_akka_slf4j_2_11_2_5_21.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_typesafe_akka_akka_stream_2_11_2_5_21.xml b/.idea/libraries/Maven__com_typesafe_akka_akka_stream_2_11_2_5_21.xml new file mode 100644 index 0000000..dad652b --- /dev/null +++ b/.idea/libraries/Maven__com_typesafe_akka_akka_stream_2_11_2_5_21.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_typesafe_config_1_3_3.xml b/.idea/libraries/Maven__com_typesafe_config_1_3_3.xml new file mode 100644 index 0000000..8db5e62 --- /dev/null +++ b/.idea/libraries/Maven__com_typesafe_config_1_3_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_typesafe_ssl_config_core_2_11_0_3_7.xml b/.idea/libraries/Maven__com_typesafe_ssl_config_core_2_11_0_3_7.xml new file mode 100644 index 0000000..0f9d94e --- /dev/null +++ b/.idea/libraries/Maven__com_typesafe_ssl_config_core_2_11_0_3_7.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__commons_cli_commons_cli_1_3_1.xml b/.idea/libraries/Maven__commons_cli_commons_cli_1_3_1.xml new file mode 100644 index 0000000..a1510b9 --- /dev/null +++ b/.idea/libraries/Maven__commons_cli_commons_cli_1_3_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__commons_collections_commons_collections_3_2_2.xml b/.idea/libraries/Maven__commons_collections_commons_collections_3_2_2.xml new file mode 100644 index 0000000..13afda2 --- /dev/null +++ b/.idea/libraries/Maven__commons_collections_commons_collections_3_2_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__commons_io_commons_io_2_7.xml b/.idea/libraries/Maven__commons_io_commons_io_2_7.xml new file mode 100644 index 0000000..ded72c9 --- /dev/null +++ b/.idea/libraries/Maven__commons_io_commons_io_2_7.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__jakarta_annotation_jakarta_annotation_api_1_3_5.xml b/.idea/libraries/Maven__jakarta_annotation_jakarta_annotation_api_1_3_5.xml new file mode 100644 index 0000000..cba9dd2 --- /dev/null +++ b/.idea/libraries/Maven__jakarta_annotation_jakarta_annotation_api_1_3_5.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_calcite_avatica_avatica_core_1_17_0.xml b/.idea/libraries/Maven__org_apache_calcite_avatica_avatica_core_1_17_0.xml new file mode 100644 index 0000000..409cae9 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_calcite_avatica_avatica_core_1_17_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_commons_commons_compress_1_20.xml b/.idea/libraries/Maven__org_apache_commons_commons_compress_1_20.xml new file mode 100644 index 0000000..b762f0e --- /dev/null +++ b/.idea/libraries/Maven__org_apache_commons_commons_compress_1_20.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_3_2.xml b/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_3_2.xml new file mode 100644 index 0000000..83cba3e --- /dev/null +++ b/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_3_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_commons_commons_math3_3_5.xml b/.idea/libraries/Maven__org_apache_commons_commons_math3_3_5.xml new file mode 100644 index 0000000..0575123 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_commons_commons_math3_3_5.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_flink_flink_annotations_1_13_0.xml b/.idea/libraries/Maven__org_apache_flink_flink_annotations_1_13_0.xml new file mode 100644 index 0000000..ebf65f5 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_flink_flink_annotations_1_13_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_flink_flink_clients_2_11_1_13_0.xml b/.idea/libraries/Maven__org_apache_flink_flink_clients_2_11_1_13_0.xml new file mode 100644 index 0000000..232be22 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_flink_flink_clients_2_11_1_13_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_flink_flink_connector_base_1_13_0.xml b/.idea/libraries/Maven__org_apache_flink_flink_connector_base_1_13_0.xml new file mode 100644 index 0000000..e2e37b0 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_flink_flink_connector_base_1_13_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_flink_flink_connector_files_1_13_0.xml b/.idea/libraries/Maven__org_apache_flink_flink_connector_files_1_13_0.xml new file mode 100644 index 0000000..dcc4ba8 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_flink_flink_connector_files_1_13_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_flink_flink_connector_kafka_2_11_1_13_0.xml b/.idea/libraries/Maven__org_apache_flink_flink_connector_kafka_2_11_1_13_0.xml new file mode 100644 index 0000000..5e1db12 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_flink_flink_connector_kafka_2_11_1_13_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_flink_flink_core_1_13_0.xml b/.idea/libraries/Maven__org_apache_flink_flink_core_1_13_0.xml new file mode 100644 index 0000000..b95e64c --- /dev/null +++ b/.idea/libraries/Maven__org_apache_flink_flink_core_1_13_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_flink_flink_file_sink_common_1_13_0.xml b/.idea/libraries/Maven__org_apache_flink_flink_file_sink_common_1_13_0.xml new file mode 100644 index 0000000..c1c9f1c --- /dev/null +++ b/.idea/libraries/Maven__org_apache_flink_flink_file_sink_common_1_13_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_flink_flink_hadoop_fs_1_13_0.xml b/.idea/libraries/Maven__org_apache_flink_flink_hadoop_fs_1_13_0.xml new file mode 100644 index 0000000..040c9ef --- /dev/null +++ b/.idea/libraries/Maven__org_apache_flink_flink_hadoop_fs_1_13_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_flink_flink_java_1_13_0.xml b/.idea/libraries/Maven__org_apache_flink_flink_java_1_13_0.xml new file mode 100644 index 0000000..362f8bc --- /dev/null +++ b/.idea/libraries/Maven__org_apache_flink_flink_java_1_13_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_flink_flink_metrics_core_1_13_0.xml b/.idea/libraries/Maven__org_apache_flink_flink_metrics_core_1_13_0.xml new file mode 100644 index 0000000..698be44 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_flink_flink_metrics_core_1_13_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_flink_flink_optimizer_2_11_1_13_0.xml b/.idea/libraries/Maven__org_apache_flink_flink_optimizer_2_11_1_13_0.xml new file mode 100644 index 0000000..599b3eb --- /dev/null +++ b/.idea/libraries/Maven__org_apache_flink_flink_optimizer_2_11_1_13_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_flink_flink_queryable_state_client_java_1_13_0.xml b/.idea/libraries/Maven__org_apache_flink_flink_queryable_state_client_java_1_13_0.xml new file mode 100644 index 0000000..6c7078a --- /dev/null +++ b/.idea/libraries/Maven__org_apache_flink_flink_queryable_state_client_java_1_13_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_flink_flink_runtime_2_11_1_13_0.xml b/.idea/libraries/Maven__org_apache_flink_flink_runtime_2_11_1_13_0.xml new file mode 100644 index 0000000..cce9abf --- /dev/null +++ b/.idea/libraries/Maven__org_apache_flink_flink_runtime_2_11_1_13_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_flink_flink_scala_2_11_1_13_0.xml b/.idea/libraries/Maven__org_apache_flink_flink_scala_2_11_1_13_0.xml new file mode 100644 index 0000000..66d771b --- /dev/null +++ b/.idea/libraries/Maven__org_apache_flink_flink_scala_2_11_1_13_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_flink_flink_shaded_asm_7_7_1_13_0.xml b/.idea/libraries/Maven__org_apache_flink_flink_shaded_asm_7_7_1_13_0.xml new file mode 100644 index 0000000..8103dcf --- /dev/null +++ b/.idea/libraries/Maven__org_apache_flink_flink_shaded_asm_7_7_1_13_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_flink_flink_shaded_guava_18_0_13_0.xml b/.idea/libraries/Maven__org_apache_flink_flink_shaded_guava_18_0_13_0.xml new file mode 100644 index 0000000..1f8766a --- /dev/null +++ b/.idea/libraries/Maven__org_apache_flink_flink_shaded_guava_18_0_13_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_flink_flink_shaded_jackson_2_12_1_13_0.xml b/.idea/libraries/Maven__org_apache_flink_flink_shaded_jackson_2_12_1_13_0.xml new file mode 100644 index 0000000..bf67e2e --- /dev/null +++ b/.idea/libraries/Maven__org_apache_flink_flink_shaded_jackson_2_12_1_13_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_flink_flink_shaded_netty_4_1_49_Final_13_0.xml b/.idea/libraries/Maven__org_apache_flink_flink_shaded_netty_4_1_49_Final_13_0.xml new file mode 100644 index 0000000..a11d2b0 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_flink_flink_shaded_netty_4_1_49_Final_13_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_flink_flink_shaded_zookeeper_3_3_4_14_13_0.xml b/.idea/libraries/Maven__org_apache_flink_flink_shaded_zookeeper_3_3_4_14_13_0.xml new file mode 100644 index 0000000..f944e1a --- /dev/null +++ b/.idea/libraries/Maven__org_apache_flink_flink_shaded_zookeeper_3_3_4_14_13_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_flink_flink_streaming_java_2_11_1_13_0.xml b/.idea/libraries/Maven__org_apache_flink_flink_streaming_java_2_11_1_13_0.xml new file mode 100644 index 0000000..4247a00 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_flink_flink_streaming_java_2_11_1_13_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_flink_flink_streaming_scala_2_11_1_13_0.xml b/.idea/libraries/Maven__org_apache_flink_flink_streaming_scala_2_11_1_13_0.xml new file mode 100644 index 0000000..c2cd9ef --- /dev/null +++ b/.idea/libraries/Maven__org_apache_flink_flink_streaming_scala_2_11_1_13_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_flink_flink_table_api_java_1_13_0.xml b/.idea/libraries/Maven__org_apache_flink_flink_table_api_java_1_13_0.xml new file mode 100644 index 0000000..dfd0ea5 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_flink_flink_table_api_java_1_13_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_flink_flink_table_api_java_bridge_2_11_1_13_0.xml b/.idea/libraries/Maven__org_apache_flink_flink_table_api_java_bridge_2_11_1_13_0.xml new file mode 100644 index 0000000..137fbad --- /dev/null +++ b/.idea/libraries/Maven__org_apache_flink_flink_table_api_java_bridge_2_11_1_13_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_flink_flink_table_api_scala_2_11_1_13_0.xml b/.idea/libraries/Maven__org_apache_flink_flink_table_api_scala_2_11_1_13_0.xml new file mode 100644 index 0000000..0a40224 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_flink_flink_table_api_scala_2_11_1_13_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_flink_flink_table_api_scala_bridge_2_11_1_13_0.xml b/.idea/libraries/Maven__org_apache_flink_flink_table_api_scala_bridge_2_11_1_13_0.xml new file mode 100644 index 0000000..29d4108 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_flink_flink_table_api_scala_bridge_2_11_1_13_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_flink_flink_table_common_1_13_0.xml b/.idea/libraries/Maven__org_apache_flink_flink_table_common_1_13_0.xml new file mode 100644 index 0000000..f431c42 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_flink_flink_table_common_1_13_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_flink_flink_table_planner_2_11_1_13_0.xml b/.idea/libraries/Maven__org_apache_flink_flink_table_planner_2_11_1_13_0.xml new file mode 100644 index 0000000..68d9922 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_flink_flink_table_planner_2_11_1_13_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_flink_flink_table_planner_blink_2_11_1_13_0.xml b/.idea/libraries/Maven__org_apache_flink_flink_table_planner_blink_2_11_1_13_0.xml new file mode 100644 index 0000000..b0e4a2e --- /dev/null +++ b/.idea/libraries/Maven__org_apache_flink_flink_table_planner_blink_2_11_1_13_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_flink_flink_table_runtime_blink_2_11_1_13_0.xml b/.idea/libraries/Maven__org_apache_flink_flink_table_runtime_blink_2_11_1_13_0.xml new file mode 100644 index 0000000..163ab47 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_flink_flink_table_runtime_blink_2_11_1_13_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_flink_flink_walkthrough_common_2_11_1_13_0.xml b/.idea/libraries/Maven__org_apache_flink_flink_walkthrough_common_2_11_1_13_0.xml new file mode 100644 index 0000000..c6b9d9e --- /dev/null +++ b/.idea/libraries/Maven__org_apache_flink_flink_walkthrough_common_2_11_1_13_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_flink_force_shading_1_13_0.xml b/.idea/libraries/Maven__org_apache_flink_force_shading_1_13_0.xml new file mode 100644 index 0000000..540f0a6 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_flink_force_shading_1_13_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_kafka_kafka_clients_2_4_1.xml b/.idea/libraries/Maven__org_apache_kafka_kafka_clients_2_4_1.xml new file mode 100644 index 0000000..8da5c0b --- /dev/null +++ b/.idea/libraries/Maven__org_apache_kafka_kafka_clients_2_4_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_12_1.xml b/.idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_12_1.xml new file mode 100644 index 0000000..ad03854 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_logging_log4j_log4j_api_2_12_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_logging_log4j_log4j_core_2_12_1.xml b/.idea/libraries/Maven__org_apache_logging_log4j_log4j_core_2_12_1.xml new file mode 100644 index 0000000..c1d6a13 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_logging_log4j_log4j_core_2_12_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_logging_log4j_log4j_slf4j_impl_2_12_1.xml b/.idea/libraries/Maven__org_apache_logging_log4j_log4j_slf4j_impl_2_12_1.xml new file mode 100644 index 0000000..c4b9506 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_logging_log4j_log4j_slf4j_impl_2_12_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_logging_log4j_log4j_to_slf4j_2_14_1.xml b/.idea/libraries/Maven__org_apache_logging_log4j_log4j_to_slf4j_2_14_1.xml new file mode 100644 index 0000000..ae5c0b5 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_logging_log4j_log4j_to_slf4j_2_14_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_core_9_0_50.xml b/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_core_9_0_50.xml new file mode 100644 index 0000000..add4136 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_core_9_0_50.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_el_9_0_50.xml b/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_el_9_0_50.xml new file mode 100644 index 0000000..f3aab20 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_el_9_0_50.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_websocket_9_0_50.xml b/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_websocket_9_0_50.xml new file mode 100644 index 0000000..149da37 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_tomcat_embed_tomcat_embed_websocket_9_0_50.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_clapper_grizzled_slf4j_2_11_1_3_2.xml b/.idea/libraries/Maven__org_clapper_grizzled_slf4j_2_11_1_3_2.xml new file mode 100644 index 0000000..3bda224 --- /dev/null +++ b/.idea/libraries/Maven__org_clapper_grizzled_slf4j_2_11_1_3_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_codehaus_janino_commons_compiler_3_0_11.xml b/.idea/libraries/Maven__org_codehaus_janino_commons_compiler_3_0_11.xml new file mode 100644 index 0000000..ed3fac2 --- /dev/null +++ b/.idea/libraries/Maven__org_codehaus_janino_commons_compiler_3_0_11.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_codehaus_janino_janino_3_0_11.xml b/.idea/libraries/Maven__org_codehaus_janino_janino_3_0_11.xml new file mode 100644 index 0000000..d3306e3 --- /dev/null +++ b/.idea/libraries/Maven__org_codehaus_janino_janino_3_0_11.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_javassist_javassist_3_24_0_GA.xml b/.idea/libraries/Maven__org_javassist_javassist_3_24_0_GA.xml new file mode 100644 index 0000000..a9de551 --- /dev/null +++ b/.idea/libraries/Maven__org_javassist_javassist_3_24_0_GA.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_lz4_lz4_java_1_6_0.xml b/.idea/libraries/Maven__org_lz4_lz4_java_1_6_0.xml new file mode 100644 index 0000000..f73a838 --- /dev/null +++ b/.idea/libraries/Maven__org_lz4_lz4_java_1_6_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_objenesis_objenesis_2_1.xml b/.idea/libraries/Maven__org_objenesis_objenesis_2_1.xml new file mode 100644 index 0000000..7ab319b --- /dev/null +++ b/.idea/libraries/Maven__org_objenesis_objenesis_2_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_projectlombok_lombok_1_18_20.xml b/.idea/libraries/Maven__org_projectlombok_lombok_1_18_20.xml new file mode 100644 index 0000000..138abdc --- /dev/null +++ b/.idea/libraries/Maven__org_projectlombok_lombok_1_18_20.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_reactivestreams_reactive_streams_1_0_2.xml b/.idea/libraries/Maven__org_reactivestreams_reactive_streams_1_0_2.xml new file mode 100644 index 0000000..457c7b7 --- /dev/null +++ b/.idea/libraries/Maven__org_reactivestreams_reactive_streams_1_0_2.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_scala_lang_modules_scala_java8_compat_2_11_0_7_0.xml b/.idea/libraries/Maven__org_scala_lang_modules_scala_java8_compat_2_11_0_7_0.xml new file mode 100644 index 0000000..f4b289b --- /dev/null +++ b/.idea/libraries/Maven__org_scala_lang_modules_scala_java8_compat_2_11_0_7_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_scala_lang_modules_scala_parser_combinators_2_11_1_0_4.xml b/.idea/libraries/Maven__org_scala_lang_modules_scala_parser_combinators_2_11_1_0_4.xml new file mode 100644 index 0000000..536c927 --- /dev/null +++ b/.idea/libraries/Maven__org_scala_lang_modules_scala_parser_combinators_2_11_1_0_4.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_scala_lang_modules_scala_xml_2_11_1_0_5.xml b/.idea/libraries/Maven__org_scala_lang_modules_scala_xml_2_11_1_0_5.xml new file mode 100644 index 0000000..50fb8f0 --- /dev/null +++ b/.idea/libraries/Maven__org_scala_lang_modules_scala_xml_2_11_1_0_5.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_scala_lang_scala_compiler_2_11_12.xml b/.idea/libraries/Maven__org_scala_lang_scala_compiler_2_11_12.xml new file mode 100644 index 0000000..db4ebd6 --- /dev/null +++ b/.idea/libraries/Maven__org_scala_lang_scala_compiler_2_11_12.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_scala_lang_scala_library_2_11_12.xml b/.idea/libraries/Maven__org_scala_lang_scala_library_2_11_12.xml new file mode 100644 index 0000000..6f45ebc --- /dev/null +++ b/.idea/libraries/Maven__org_scala_lang_scala_library_2_11_12.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_scala_lang_scala_reflect_2_11_12.xml b/.idea/libraries/Maven__org_scala_lang_scala_reflect_2_11_12.xml new file mode 100644 index 0000000..e1fe4d2 --- /dev/null +++ b/.idea/libraries/Maven__org_scala_lang_scala_reflect_2_11_12.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_32.xml b/.idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_32.xml new file mode 100644 index 0000000..a758eac --- /dev/null +++ b/.idea/libraries/Maven__org_slf4j_jul_to_slf4j_1_7_32.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_15.xml b/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_15.xml new file mode 100644 index 0000000..9468916 --- /dev/null +++ b/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_15.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_2_5_3.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_2_5_3.xml new file mode 100644 index 0000000..9692f2c --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_2_5_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_2_5_3.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_2_5_3.xml new file mode 100644 index 0000000..2de3bc4 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_autoconfigure_2_5_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_2_5_3.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_2_5_3.xml new file mode 100644 index 0000000..b31fb3d --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_2_5_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_json_2_5_3.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_json_2_5_3.xml new file mode 100644 index 0000000..d70f5b2 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_json_2_5_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_2_5_3.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_2_5_3.xml new file mode 100644 index 0000000..c26578f --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_logging_2_5_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_tomcat_2_5_3.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_tomcat_2_5_3.xml new file mode 100644 index 0000000..a8e470e --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_tomcat_2_5_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_web_2_5_3.xml b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_web_2_5_3.xml new file mode 100644 index 0000000..a5e1c5d --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_boot_spring_boot_starter_web_2_5_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_aop_5_3_8.xml b/.idea/libraries/Maven__org_springframework_spring_aop_5_3_8.xml new file mode 100644 index 0000000..bb8ab5e --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_aop_5_3_8.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_beans_5_3_8.xml b/.idea/libraries/Maven__org_springframework_spring_beans_5_3_8.xml new file mode 100644 index 0000000..4f174a5 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_beans_5_3_8.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_context_5_3_8.xml b/.idea/libraries/Maven__org_springframework_spring_context_5_3_8.xml new file mode 100644 index 0000000..80365ee --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_context_5_3_8.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_core_5_3_8.xml b/.idea/libraries/Maven__org_springframework_spring_core_5_3_8.xml new file mode 100644 index 0000000..33d5fb1 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_core_5_3_8.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_expression_5_3_8.xml b/.idea/libraries/Maven__org_springframework_spring_expression_5_3_8.xml new file mode 100644 index 0000000..7f848e0 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_expression_5_3_8.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_jcl_5_3_8.xml b/.idea/libraries/Maven__org_springframework_spring_jcl_5_3_8.xml new file mode 100644 index 0000000..704e936 --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_jcl_5_3_8.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_web_5_3_9.xml b/.idea/libraries/Maven__org_springframework_spring_web_5_3_9.xml new file mode 100644 index 0000000..eeb831a --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_web_5_3_9.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_springframework_spring_webmvc_5_3_9.xml b/.idea/libraries/Maven__org_springframework_spring_webmvc_5_3_9.xml new file mode 100644 index 0000000..b4ee97b --- /dev/null +++ b/.idea/libraries/Maven__org_springframework_spring_webmvc_5_3_9.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_xerial_snappy_snappy_java_1_1_8_3.xml b/.idea/libraries/Maven__org_xerial_snappy_snappy_java_1_1_8_3.xml new file mode 100644 index 0000000..e411463 --- /dev/null +++ b/.idea/libraries/Maven__org_xerial_snappy_snappy_java_1_1_8_3.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_yaml_snakeyaml_1_28.xml b/.idea/libraries/Maven__org_yaml_snakeyaml_1_28.xml new file mode 100644 index 0000000..1f853f7 --- /dev/null +++ b/.idea/libraries/Maven__org_yaml_snakeyaml_1_28.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..e8942bd --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..c9e3681 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/data.txt/1 b/data.txt/1 new file mode 100644 index 0000000..cc98e9a --- /dev/null +++ b/data.txt/1 @@ -0,0 +1,39 @@ +DeviceInfo{name='device_8', status=1, catNum=71, time=1626007474} +DeviceInfo{name='device_6', status=0, catNum=74, time=1626007475} +DeviceInfo{name='device_9', status=1, catNum=29, time=1626007475} +DeviceInfo{name='device_4', status=0, catNum=98, time=1626007476} +DeviceInfo{name='device_2', status=1, catNum=13, time=1626007477} +DeviceInfo{name='device_8', status=1, catNum=59, time=1626007478} +DeviceInfo{name='device_6', status=1, catNum=45, time=1626007479} +DeviceInfo{name='device_9', status=1, catNum=45, time=1626007479} +DeviceInfo{name='device_4', status=1, catNum=61, time=1626007480} +DeviceInfo{name='device_2', status=0, catNum=6, time=1626007481} +DeviceInfo{name='device_8', status=1, catNum=13, time=1626007482} +DeviceInfo{name='device_6', status=0, catNum=98, time=1626007483} +DeviceInfo{name='device_9', status=1, catNum=31, time=1626007483} +DeviceInfo{name='device_4', status=0, catNum=28, time=1626007484} +DeviceInfo{name='device_2', status=1, catNum=91, time=1626007485} +DeviceInfo{name='device_8', status=0, catNum=24, time=1626007486} +DeviceInfo{name='device_6', status=1, catNum=33, time=1626007487} +DeviceInfo{name='device_9', status=1, catNum=87, time=1626007487} +DeviceInfo{name='device_4', status=0, catNum=94, time=1626007488} +DeviceInfo{name='device_2', status=0, catNum=54, time=1626007489} +DeviceInfo{name='device_8', status=0, catNum=44, time=1626007490} +DeviceInfo{name='device_6', status=0, catNum=20, time=1626007491} +DeviceInfo{name='device_9', status=0, catNum=2, time=1626007491} +DeviceInfo{name='device_4', status=0, catNum=96, time=1626007492} +DeviceInfo{name='device_2', status=1, catNum=39, time=1626007493} +DeviceInfo{name='device_8', status=0, catNum=60, time=1626007494} +DeviceInfo{name='device_6', status=1, catNum=1, time=1626007495} +DeviceInfo{name='device_9', status=1, catNum=23, time=1626007495} +DeviceInfo{name='device_4', status=0, catNum=66, time=1626007496} +DeviceInfo{name='device_2', status=0, catNum=44, time=1626007497} +DeviceInfo{name='device_8', status=1, catNum=73, time=1626007498} +DeviceInfo{name='device_6', status=0, catNum=68, time=1626007499} +DeviceInfo{name='device_9', status=0, catNum=42, time=1626007499} +DeviceInfo{name='device_4', status=1, catNum=83, time=1626007500} +DeviceInfo{name='device_2', status=1, catNum=73, time=1626007501} +DeviceInfo{name='device_8', status=0, catNum=4, time=1626007502} +DeviceInfo{name='device_6', status=0, catNum=54, time=1626007503} +DeviceInfo{name='device_9', status=0, catNum=40, time=1626007503} +DeviceInfo{name='device_4', status=1, catNum=95, time=1626007504} diff --git a/data.txt/2 b/data.txt/2 new file mode 100644 index 0000000..520842e --- /dev/null +++ b/data.txt/2 @@ -0,0 +1,39 @@ +DeviceInfo{name='device_1', status=1, catNum=83, time=1626007474} +DeviceInfo{name='device_7', status=1, catNum=73, time=1626007475} +DeviceInfo{name='device_5', status=0, catNum=46, time=1626007476} +DeviceInfo{name='device_10', status=1, catNum=23, time=1626007476} +DeviceInfo{name='device_3', status=1, catNum=23, time=1626007477} +DeviceInfo{name='device_1', status=1, catNum=67, time=1626007478} +DeviceInfo{name='device_7', status=1, catNum=41, time=1626007479} +DeviceInfo{name='device_5', status=1, catNum=31, time=1626007480} +DeviceInfo{name='device_10', status=0, catNum=24, time=1626007480} +DeviceInfo{name='device_3', status=0, catNum=8, time=1626007481} +DeviceInfo{name='device_1', status=1, catNum=29, time=1626007482} +DeviceInfo{name='device_7', status=0, catNum=6, time=1626007483} +DeviceInfo{name='device_5', status=1, catNum=17, time=1626007484} +DeviceInfo{name='device_10', status=1, catNum=17, time=1626007484} +DeviceInfo{name='device_3', status=1, catNum=35, time=1626007485} +DeviceInfo{name='device_1', status=1, catNum=5, time=1626007486} +DeviceInfo{name='device_7', status=1, catNum=23, time=1626007487} +DeviceInfo{name='device_5', status=0, catNum=66, time=1626007488} +DeviceInfo{name='device_10', status=1, catNum=11, time=1626007488} +DeviceInfo{name='device_3', status=1, catNum=69, time=1626007489} +DeviceInfo{name='device_1', status=1, catNum=95, time=1626007490} +DeviceInfo{name='device_7', status=1, catNum=79, time=1626007491} +DeviceInfo{name='device_5', status=0, catNum=98, time=1626007492} +DeviceInfo{name='device_10', status=0, catNum=72, time=1626007492} +DeviceInfo{name='device_3', status=1, catNum=29, time=1626007493} +DeviceInfo{name='device_1', status=0, catNum=22, time=1626007494} +DeviceInfo{name='device_7', status=0, catNum=8, time=1626007495} +DeviceInfo{name='device_5', status=0, catNum=92, time=1626007496} +DeviceInfo{name='device_10', status=0, catNum=56, time=1626007496} +DeviceInfo{name='device_3', status=0, catNum=22, time=1626007497} +DeviceInfo{name='device_1', status=0, catNum=58, time=1626007498} +DeviceInfo{name='device_7', status=1, catNum=37, time=1626007499} +DeviceInfo{name='device_5', status=1, catNum=61, time=1626007500} +DeviceInfo{name='device_10', status=1, catNum=25, time=1626007500} +DeviceInfo{name='device_3', status=0, catNum=42, time=1626007501} +DeviceInfo{name='device_1', status=0, catNum=32, time=1626007502} +DeviceInfo{name='device_7', status=0, catNum=34, time=1626007503} +DeviceInfo{name='device_5', status=0, catNum=88, time=1626007504} +DeviceInfo{name='device_10', status=1, catNum=49, time=1626007504} diff --git a/data.txt/3 b/data.txt/3 new file mode 100644 index 0000000..50077e5 --- /dev/null +++ b/data.txt/3 @@ -0,0 +1,39 @@ +DeviceInfo{name='device_2', status=1, catNum=97, time=1626007474} +DeviceInfo{name='device_8', status=1, catNum=69, time=1626007475} +DeviceInfo{name='device_6', status=1, catNum=33, time=1626007476} +DeviceInfo{name='device_9', status=1, catNum=9, time=1626007476} +DeviceInfo{name='device_4', status=1, catNum=55, time=1626007477} +DeviceInfo{name='device_2', status=1, catNum=3, time=1626007478} +DeviceInfo{name='device_8', status=0, catNum=30, time=1626007479} +DeviceInfo{name='device_6', status=0, catNum=80, time=1626007480} +DeviceInfo{name='device_9', status=1, catNum=23, time=1626007480} +DeviceInfo{name='device_4', status=0, catNum=28, time=1626007481} +DeviceInfo{name='device_2', status=1, catNum=79, time=1626007482} +DeviceInfo{name='device_8', status=0, catNum=42, time=1626007483} +DeviceInfo{name='device_6', status=1, catNum=47, time=1626007484} +DeviceInfo{name='device_9', status=0, catNum=42, time=1626007484} +DeviceInfo{name='device_4', status=0, catNum=36, time=1626007485} +DeviceInfo{name='device_2', status=1, catNum=19, time=1626007486} +DeviceInfo{name='device_8', status=0, catNum=76, time=1626007487} +DeviceInfo{name='device_6', status=0, catNum=60, time=1626007488} +DeviceInfo{name='device_9', status=1, catNum=53, time=1626007488} +DeviceInfo{name='device_4', status=0, catNum=76, time=1626007489} +DeviceInfo{name='device_2', status=0, catNum=70, time=1626007490} +DeviceInfo{name='device_8', status=1, catNum=67, time=1626007491} +DeviceInfo{name='device_6', status=1, catNum=89, time=1626007492} +DeviceInfo{name='device_9', status=0, catNum=70, time=1626007492} +DeviceInfo{name='device_4', status=0, catNum=60, time=1626007493} +DeviceInfo{name='device_2', status=1, catNum=11, time=1626007494} +DeviceInfo{name='device_8', status=1, catNum=25, time=1626007495} +DeviceInfo{name='device_6', status=1, catNum=43, time=1626007496} +DeviceInfo{name='device_9', status=0, catNum=32, time=1626007496} +DeviceInfo{name='device_4', status=0, catNum=8, time=1626007497} +DeviceInfo{name='device_2', status=0, catNum=84, time=1626007498} +DeviceInfo{name='device_8', status=0, catNum=36, time=1626007499} +DeviceInfo{name='device_6', status=0, catNum=28, time=1626007500} +DeviceInfo{name='device_9', status=1, catNum=79, time=1626007500} +DeviceInfo{name='device_4', status=0, catNum=48, time=1626007501} +DeviceInfo{name='device_2', status=1, catNum=27, time=1626007502} +DeviceInfo{name='device_8', status=0, catNum=66, time=1626007503} +DeviceInfo{name='device_6', status=1, catNum=23, time=1626007504} +DeviceInfo{name='device_9', status=1, catNum=49, time=1626007504} diff --git a/data.txt/4 b/data.txt/4 new file mode 100644 index 0000000..e238506 --- /dev/null +++ b/data.txt/4 @@ -0,0 +1,38 @@ +DeviceInfo{name='device_3', status=0, catNum=10, time=1626007474} +DeviceInfo{name='device_1', status=1, catNum=83, time=1626007475} +DeviceInfo{name='device_7', status=1, catNum=37, time=1626007476} +DeviceInfo{name='device_5', status=0, catNum=68, time=1626007477} +DeviceInfo{name='device_10', status=0, catNum=54, time=1626007477} +DeviceInfo{name='device_3', status=1, catNum=89, time=1626007478} +DeviceInfo{name='device_1', status=0, catNum=16, time=1626007479} +DeviceInfo{name='device_7', status=1, catNum=15, time=1626007480} +DeviceInfo{name='device_5', status=1, catNum=75, time=1626007481} +DeviceInfo{name='device_10', status=0, catNum=94, time=1626007481} +DeviceInfo{name='device_3', status=0, catNum=34, time=1626007482} +DeviceInfo{name='device_1', status=0, catNum=70, time=1626007483} +DeviceInfo{name='device_7', status=1, catNum=49, time=1626007484} +DeviceInfo{name='device_5', status=1, catNum=27, time=1626007485} +DeviceInfo{name='device_10', status=1, catNum=89, time=1626007485} +DeviceInfo{name='device_3', status=0, catNum=60, time=1626007486} +DeviceInfo{name='device_1', status=1, catNum=23, time=1626007487} +DeviceInfo{name='device_7', status=0, catNum=96, time=1626007488} +DeviceInfo{name='device_5', status=0, catNum=36, time=1626007489} +DeviceInfo{name='device_10', status=0, catNum=4, time=1626007489} +DeviceInfo{name='device_3', status=1, catNum=11, time=1626007490} +DeviceInfo{name='device_1', status=0, catNum=84, time=1626007491} +DeviceInfo{name='device_7', status=1, catNum=17, time=1626007492} +DeviceInfo{name='device_5', status=0, catNum=38, time=1626007493} +DeviceInfo{name='device_10', status=0, catNum=84, time=1626007493} +DeviceInfo{name='device_3', status=1, catNum=35, time=1626007494} +DeviceInfo{name='device_1', status=1, catNum=39, time=1626007495} +DeviceInfo{name='device_7', status=0, catNum=58, time=1626007496} +DeviceInfo{name='device_5', status=0, catNum=74, time=1626007497} +DeviceInfo{name='device_10', status=1, catNum=87, time=1626007497} +DeviceInfo{name='device_3', status=0, catNum=68, time=1626007498} +DeviceInfo{name='device_1', status=1, catNum=55, time=1626007499} +DeviceInfo{name='device_7', status=1, catNum=35, time=1626007500} +DeviceInfo{name='device_5', status=1, catNum=11, time=1626007501} +DeviceInfo{name='device_10', status=0, catNum=34, time=1626007501} +DeviceInfo{name='device_3', status=0, catNum=88, time=1626007502} +DeviceInfo{name='device_1', status=0, catNum=28, time=1626007503} +DeviceInfo{name='device_7', status=1, catNum=47, time=1626007504} diff --git a/data.txt/5 b/data.txt/5 new file mode 100644 index 0000000..ad4242b --- /dev/null +++ b/data.txt/5 @@ -0,0 +1,38 @@ +DeviceInfo{name='device_4', status=1, catNum=45, time=1626007474} +DeviceInfo{name='device_2', status=1, catNum=33, time=1626007475} +DeviceInfo{name='device_8', status=0, catNum=14, time=1626007476} +DeviceInfo{name='device_6', status=0, catNum=76, time=1626007477} +DeviceInfo{name='device_9', status=0, catNum=42, time=1626007477} +DeviceInfo{name='device_4', status=0, catNum=90, time=1626007478} +DeviceInfo{name='device_2', status=0, catNum=76, time=1626007479} +DeviceInfo{name='device_8', status=1, catNum=43, time=1626007480} +DeviceInfo{name='device_6', status=1, catNum=13, time=1626007481} +DeviceInfo{name='device_9', status=1, catNum=9, time=1626007481} +DeviceInfo{name='device_4', status=1, catNum=93, time=1626007482} +DeviceInfo{name='device_2', status=0, catNum=12, time=1626007483} +DeviceInfo{name='device_8', status=0, catNum=56, time=1626007484} +DeviceInfo{name='device_6', status=0, catNum=66, time=1626007485} +DeviceInfo{name='device_9', status=1, catNum=11, time=1626007485} +DeviceInfo{name='device_4', status=0, catNum=74, time=1626007486} +DeviceInfo{name='device_2', status=0, catNum=82, time=1626007487} +DeviceInfo{name='device_8', status=1, catNum=1, time=1626007488} +DeviceInfo{name='device_6', status=1, catNum=81, time=1626007489} +DeviceInfo{name='device_9', status=0, catNum=64, time=1626007489} +DeviceInfo{name='device_4', status=0, catNum=10, time=1626007490} +DeviceInfo{name='device_2', status=0, catNum=74, time=1626007491} +DeviceInfo{name='device_8', status=1, catNum=99, time=1626007492} +DeviceInfo{name='device_6', status=0, catNum=70, time=1626007493} +DeviceInfo{name='device_9', status=1, catNum=1, time=1626007493} +DeviceInfo{name='device_4', status=1, catNum=49, time=1626007494} +DeviceInfo{name='device_2', status=1, catNum=53, time=1626007495} +DeviceInfo{name='device_8', status=0, catNum=20, time=1626007496} +DeviceInfo{name='device_6', status=1, catNum=69, time=1626007497} +DeviceInfo{name='device_9', status=1, catNum=17, time=1626007497} +DeviceInfo{name='device_4', status=1, catNum=99, time=1626007498} +DeviceInfo{name='device_2', status=1, catNum=23, time=1626007499} +DeviceInfo{name='device_8', status=1, catNum=75, time=1626007500} +DeviceInfo{name='device_6', status=1, catNum=39, time=1626007501} +DeviceInfo{name='device_9', status=0, catNum=30, time=1626007501} +DeviceInfo{name='device_4', status=1, catNum=21, time=1626007502} +DeviceInfo{name='device_2', status=0, catNum=4, time=1626007503} +DeviceInfo{name='device_8', status=1, catNum=1, time=1626007504} diff --git a/data.txt/6 b/data.txt/6 new file mode 100644 index 0000000..5e6f2c4 --- /dev/null +++ b/data.txt/6 @@ -0,0 +1,39 @@ +DeviceInfo{name='device_5', status=1, catNum=91, time=1626007474} +DeviceInfo{name='device_10', status=1, catNum=43, time=1626007474} +DeviceInfo{name='device_3', status=1, catNum=3, time=1626007475} +DeviceInfo{name='device_1', status=0, catNum=66, time=1626007476} +DeviceInfo{name='device_7', status=1, catNum=97, time=1626007477} +DeviceInfo{name='device_5', status=0, catNum=50, time=1626007478} +DeviceInfo{name='device_10', status=0, catNum=94, time=1626007478} +DeviceInfo{name='device_3', status=0, catNum=12, time=1626007479} +DeviceInfo{name='device_1', status=0, catNum=38, time=1626007480} +DeviceInfo{name='device_7', status=1, catNum=31, time=1626007481} +DeviceInfo{name='device_5', status=0, catNum=58, time=1626007482} +DeviceInfo{name='device_10', status=1, catNum=19, time=1626007482} +DeviceInfo{name='device_3', status=0, catNum=94, time=1626007483} +DeviceInfo{name='device_1', status=1, catNum=45, time=1626007484} +DeviceInfo{name='device_7', status=0, catNum=52, time=1626007485} +DeviceInfo{name='device_5', status=1, catNum=9, time=1626007486} +DeviceInfo{name='device_10', status=1, catNum=29, time=1626007486} +DeviceInfo{name='device_3', status=0, catNum=52, time=1626007487} +DeviceInfo{name='device_1', status=0, catNum=86, time=1626007488} +DeviceInfo{name='device_7', status=1, catNum=5, time=1626007489} +DeviceInfo{name='device_5', status=0, catNum=10, time=1626007490} +DeviceInfo{name='device_10', status=1, catNum=11, time=1626007490} +DeviceInfo{name='device_3', status=1, catNum=49, time=1626007491} +DeviceInfo{name='device_1', status=0, catNum=54, time=1626007492} +DeviceInfo{name='device_7', status=1, catNum=3, time=1626007493} +DeviceInfo{name='device_5', status=0, catNum=18, time=1626007494} +DeviceInfo{name='device_10', status=0, catNum=60, time=1626007494} +DeviceInfo{name='device_3', status=1, catNum=81, time=1626007495} +DeviceInfo{name='device_1', status=1, catNum=57, time=1626007496} +DeviceInfo{name='device_7', status=1, catNum=33, time=1626007497} +DeviceInfo{name='device_5', status=0, catNum=70, time=1626007498} +DeviceInfo{name='device_10', status=0, catNum=56, time=1626007498} +DeviceInfo{name='device_3', status=0, catNum=16, time=1626007499} +DeviceInfo{name='device_1', status=1, catNum=61, time=1626007500} +DeviceInfo{name='device_7', status=1, catNum=31, time=1626007501} +DeviceInfo{name='device_5', status=1, catNum=19, time=1626007502} +DeviceInfo{name='device_10', status=1, catNum=51, time=1626007502} +DeviceInfo{name='device_3', status=1, catNum=11, time=1626007503} +DeviceInfo{name='device_1', status=0, catNum=92, time=1626007504} diff --git a/data.txt/7 b/data.txt/7 new file mode 100644 index 0000000..2134718 --- /dev/null +++ b/data.txt/7 @@ -0,0 +1,39 @@ +DeviceInfo{name='device_6', status=1, catNum=43, time=1626007474} +DeviceInfo{name='device_9', status=0, catNum=44, time=1626007474} +DeviceInfo{name='device_4', status=1, catNum=35, time=1626007475} +DeviceInfo{name='device_2', status=1, catNum=73, time=1626007476} +DeviceInfo{name='device_8', status=0, catNum=80, time=1626007477} +DeviceInfo{name='device_6', status=0, catNum=96, time=1626007478} +DeviceInfo{name='device_9', status=1, catNum=1, time=1626007478} +DeviceInfo{name='device_4', status=0, catNum=34, time=1626007479} +DeviceInfo{name='device_2', status=1, catNum=37, time=1626007480} +DeviceInfo{name='device_8', status=1, catNum=85, time=1626007481} +DeviceInfo{name='device_6', status=0, catNum=50, time=1626007482} +DeviceInfo{name='device_9', status=1, catNum=13, time=1626007482} +DeviceInfo{name='device_4', status=0, catNum=12, time=1626007483} +DeviceInfo{name='device_2', status=1, catNum=31, time=1626007484} +DeviceInfo{name='device_8', status=1, catNum=5, time=1626007485} +DeviceInfo{name='device_6', status=1, catNum=35, time=1626007486} +DeviceInfo{name='device_9', status=1, catNum=67, time=1626007486} +DeviceInfo{name='device_4', status=0, catNum=20, time=1626007487} +DeviceInfo{name='device_2', status=1, catNum=63, time=1626007488} +DeviceInfo{name='device_8', status=0, catNum=2, time=1626007489} +DeviceInfo{name='device_6', status=0, catNum=52, time=1626007490} +DeviceInfo{name='device_9', status=1, catNum=11, time=1626007490} +DeviceInfo{name='device_4', status=0, catNum=44, time=1626007491} +DeviceInfo{name='device_2', status=0, catNum=78, time=1626007492} +DeviceInfo{name='device_8', status=0, catNum=38, time=1626007493} +DeviceInfo{name='device_6', status=1, catNum=21, time=1626007494} +DeviceInfo{name='device_9', status=1, catNum=41, time=1626007494} +DeviceInfo{name='device_4', status=1, catNum=89, time=1626007495} +DeviceInfo{name='device_2', status=1, catNum=3, time=1626007496} +DeviceInfo{name='device_8', status=0, catNum=38, time=1626007497} +DeviceInfo{name='device_6', status=0, catNum=52, time=1626007498} +DeviceInfo{name='device_9', status=0, catNum=54, time=1626007498} +DeviceInfo{name='device_4', status=1, catNum=85, time=1626007499} +DeviceInfo{name='device_2', status=1, catNum=39, time=1626007500} +DeviceInfo{name='device_8', status=1, catNum=15, time=1626007501} +DeviceInfo{name='device_6', status=1, catNum=99, time=1626007502} +DeviceInfo{name='device_9', status=1, catNum=33, time=1626007502} +DeviceInfo{name='device_4', status=1, catNum=87, time=1626007503} +DeviceInfo{name='device_2', status=0, catNum=28, time=1626007504} diff --git a/data.txt/8 b/data.txt/8 new file mode 100644 index 0000000..9d7c5e1 --- /dev/null +++ b/data.txt/8 @@ -0,0 +1,39 @@ +DeviceInfo{name='device_7', status=0, catNum=80, time=1626007474} +DeviceInfo{name='device_5', status=0, catNum=36, time=1626007475} +DeviceInfo{name='device_10', status=0, catNum=66, time=1626007475} +DeviceInfo{name='device_3', status=1, catNum=91, time=1626007476} +DeviceInfo{name='device_1', status=0, catNum=66, time=1626007477} +DeviceInfo{name='device_7', status=1, catNum=57, time=1626007478} +DeviceInfo{name='device_5', status=0, catNum=96, time=1626007479} +DeviceInfo{name='device_10', status=0, catNum=36, time=1626007479} +DeviceInfo{name='device_3', status=0, catNum=98, time=1626007480} +DeviceInfo{name='device_1', status=1, catNum=27, time=1626007481} +DeviceInfo{name='device_7', status=1, catNum=19, time=1626007482} +DeviceInfo{name='device_5', status=1, catNum=75, time=1626007483} +DeviceInfo{name='device_10', status=1, catNum=59, time=1626007483} +DeviceInfo{name='device_3', status=1, catNum=33, time=1626007484} +DeviceInfo{name='device_1', status=0, catNum=90, time=1626007485} +DeviceInfo{name='device_7', status=0, catNum=52, time=1626007486} +DeviceInfo{name='device_5', status=1, catNum=95, time=1626007487} +DeviceInfo{name='device_10', status=0, catNum=16, time=1626007487} +DeviceInfo{name='device_3', status=1, catNum=99, time=1626007488} +DeviceInfo{name='device_1', status=0, catNum=0, time=1626007489} +DeviceInfo{name='device_7', status=1, catNum=63, time=1626007490} +DeviceInfo{name='device_5', status=0, catNum=12, time=1626007491} +DeviceInfo{name='device_10', status=1, catNum=51, time=1626007491} +DeviceInfo{name='device_3', status=1, catNum=35, time=1626007492} +DeviceInfo{name='device_1', status=1, catNum=5, time=1626007493} +DeviceInfo{name='device_7', status=0, catNum=22, time=1626007494} +DeviceInfo{name='device_5', status=1, catNum=17, time=1626007495} +DeviceInfo{name='device_10', status=0, catNum=82, time=1626007495} +DeviceInfo{name='device_3', status=1, catNum=79, time=1626007496} +DeviceInfo{name='device_1', status=1, catNum=35, time=1626007497} +DeviceInfo{name='device_7', status=0, catNum=0, time=1626007498} +DeviceInfo{name='device_5', status=0, catNum=4, time=1626007499} +DeviceInfo{name='device_10', status=1, catNum=21, time=1626007499} +DeviceInfo{name='device_3', status=1, catNum=79, time=1626007500} +DeviceInfo{name='device_1', status=1, catNum=81, time=1626007501} +DeviceInfo{name='device_7', status=1, catNum=37, time=1626007502} +DeviceInfo{name='device_5', status=0, catNum=20, time=1626007503} +DeviceInfo{name='device_10', status=0, catNum=16, time=1626007503} +DeviceInfo{name='device_3', status=0, catNum=80, time=1626007504} diff --git a/flink-test.iml b/flink-test.iml new file mode 100644 index 0000000..83a4e4e --- /dev/null +++ b/flink-test.iml @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..be956f1 --- /dev/null +++ b/pom.xml @@ -0,0 +1,127 @@ + + + 4.0.0 + + org.kedacom + flink-test + 1.0-SNAPSHOT + + + UTF-8 + 1.13.0 + 1.8 + 2.11 + 8 + 8 + 2.12.1 + + + + + + org.apache.flink + flink-java + ${flink.version} + + + + + org.apache.flink + flink-walkthrough-common_${scala.binary.version} + ${flink.version} + + + + + org.apache.flink + flink-streaming-java_${scala.binary.version} + ${flink.version} + + + + org.apache.flink + flink-clients_${scala.binary.version} + ${flink.version} + + + + org.apache.flink + flink-table-planner-blink_${scala.binary.version} + ${flink.version} + + + + org.apache.flink + flink-table-api-java-bridge_${scala.binary.version} + ${flink.version} + + + org.apache.flink + flink-table-planner_${scala.binary.version} + ${flink.version} + + + org.apache.flink + flink-table-planner-blink_${scala.binary.version} + ${flink.version} + + + org.apache.flink + flink-table-common + ${flink.version} + + + + + + + + + + org.apache.logging.log4j + log4j-slf4j-impl + ${log4j.version} + runtime + + + org.apache.logging.log4j + log4j-api + ${log4j.version} + runtime + + + org.apache.logging.log4j + log4j-core + ${log4j.version} + runtime + + + org.projectlombok + lombok + RELEASE + compile + + + org.projectlombok + lombok + RELEASE + compile + + + org.apache.flink + flink-connector-kafka_${scala.binary.version} + ${flink.version} + + + + + \ No newline at end of file diff --git a/src/main/java/com/kedacom/apitest/function/StatusStatisticsByDay.java b/src/main/java/com/kedacom/apitest/function/StatusStatisticsByDay.java new file mode 100644 index 0000000..ed5f243 --- /dev/null +++ b/src/main/java/com/kedacom/apitest/function/StatusStatisticsByDay.java @@ -0,0 +1,159 @@ +package com.kedacom.apitest.function; + +import com.kedacom.pojo.DeviceInfo; +import com.kedacom.pojo.DeviceStatusStt; +import org.apache.flink.api.common.state.MapState; +import org.apache.flink.api.common.state.MapStateDescriptor; +import org.apache.flink.api.common.state.ValueState; +import org.apache.flink.api.common.state.ValueStateDescriptor; +import org.apache.flink.api.java.tuple.Tuple2; +import org.apache.flink.configuration.Configuration; +import org.apache.flink.shaded.curator4.com.google.common.collect.Lists; +import org.apache.flink.streaming.api.TimeCharacteristic; +import org.apache.flink.streaming.api.datastream.DataStream; +import org.apache.flink.streaming.api.datastream.DataStreamSource; +import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator; +import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; +import org.apache.flink.streaming.api.functions.timestamps.BoundedOutOfOrdernessTimestampExtractor; +import org.apache.flink.streaming.api.functions.windowing.ProcessWindowFunction; +import org.apache.flink.streaming.api.windowing.assigners.TumblingEventTimeWindows; +import org.apache.flink.streaming.api.windowing.time.Time; +import org.apache.flink.streaming.api.windowing.windows.TimeWindow; +import org.apache.flink.util.Collector; + +import java.net.URL; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Comparator; + +public class StatusStatisticsByDay { + public static void main(String[] args) throws Exception { + StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); + env.setParallelism(1); + env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime); + env.getConfig().setAutoWatermarkInterval(100); + + // 文件转流 + URL resource = TopNFunction.class.getResource("/deviceinfo.txt"); + DataStreamSource inputStream = env.readTextFile(resource.getPath()); + + // 转换pojo + DataStream dataStream = inputStream.map(line -> { + String[] fields = line.split(","); + return new DeviceInfo(fields[0], new Integer(fields[1]), new Integer(fields[2]), new Long(fields[3])); + }).assignTimestampsAndWatermarks(new BoundedOutOfOrdernessTimestampExtractor(Time.seconds(10)) { + @Override + public long extractTimestamp(DeviceInfo deviceInfo) { + return deviceInfo.getTime() * 1000; + } + }); + + // 自定义keyed state,统计不同name个数,窗口聚合结果 + SingleOutputStreamOperator> resultStrem = dataStream + .keyBy(DeviceInfo::getName) + .window(TumblingEventTimeWindows.of(Time.days(1), Time.hours(-8))) +// .window(TumblingEventTimeWindows.of(Time.seconds(10))) + .allowedLateness(Time.seconds(10)) + .process(new ProcessDayStt()); + + resultStrem.print("daystt"); + + env.execute("day statistics job"); + } + + public static class ProcessDayStt extends ProcessWindowFunction, String, TimeWindow> { + + private static MapState daySttMap; // 保持每一天统计数据,可用来做周、月统计。。。 + private static ValueState dayStt; + + + @Override + public void open(Configuration parameters) throws Exception { + daySttMap = getRuntimeContext().getMapState(new MapStateDescriptor("day-status-stt", + Long.class, DeviceStatusStt.class)); + + dayStt = getRuntimeContext().getState(new ValueStateDescriptor("day-status-latest-stt", DeviceStatusStt.class)); + } + + @Override + public void process(String s, Context context, Iterable iterable, Collector> collector) throws Exception { + DeviceStatusStt latestDayStt = null; + DeviceStatusStt curDayStt = new DeviceStatusStt(); + + boolean firstDayStt = false; + + // 获取统计时间,以窗口开始时间作为统计时间 + long beginTime = context.window().getStart(); + long countTime = context.window().getEnd(); + + if(dayStt.value() == null){ + // 第一次状态填充 + firstDayStt = true; + }else{ + // 赋值前一天日统计数据 + latestDayStt = dayStt.value(); + } + + // 先对集合按照时间升序排序 + ArrayList deviceInfos = Lists.newArrayList(iterable); + + deviceInfos.sort(new Comparator() { + @Override + public int compare(DeviceInfo o1, DeviceInfo o2) { + if (o1.getTime() > o2.getTime()) + return 1; + else if (o1.getTime() == o2.getTime()) + return 0; + else + return -1; + } + }); + + for(int index = 0; index < deviceInfos.size(); index++){ + if(0 == index){ + // 第一个状态,且为第一天统计 + if(firstDayStt){ + curDayStt.setContinueDurationTime(0);// 持续时间设置为0 + }else { + // 需要和上次状态比较,计算持续时长 + if(latestDayStt.getStatus() == deviceInfos.get(index).getStatus()){ + // 持续时长为当前事件时间-上次时间 + 上次持续时长 + curDayStt.setContinueDurationTime(deviceInfos.get(index).getTime() - + beginTime/1000 + latestDayStt.getContinueDurationTime()); + }else{ + // 否则状态改变,设置时间为0 + curDayStt.setContinueDurationTime(0); + } + } + curDayStt.setTotalCarNum(deviceInfos.get(index).getCarNum());// 过车总数设置为第一条数据过车数据 + }else{ + // 和当前日统计上一次数据比较 + if(curDayStt.getStatus() == deviceInfos.get(index).getStatus()){ + // 状态不变,持续时长增加 + curDayStt.setContinueDurationTime(deviceInfos.get(index).getTime() - + curDayStt.getTime() + curDayStt.getContinueDurationTime()); + }else{ + // 状态改变,持续时长为0 + curDayStt.setContinueDurationTime(0); + } + // 过车统计 + curDayStt.setTotalCarNum(curDayStt.getTotalCarNum() + deviceInfos.get(index).getCarNum()); + } + // 赋值其它属性 + curDayStt.setName(deviceInfos.get(index).getName()); + curDayStt.setTime(deviceInfos.get(index).getTime()); + curDayStt.setStatus(deviceInfos.get(index).getStatus()); + } + // 日统计,截止时间要到当天24点,需要计算最后一条记录和24点之间的状态 + if(deviceInfos.get(deviceInfos.size()-1).getTime() < countTime/1000){ + curDayStt.setContinueDurationTime(countTime/1000 - deviceInfos.get(deviceInfos.size()-1).getTime() + curDayStt.getContinueDurationTime()); + } + + // 输出集合 + collector.collect(new Tuple2<>(new Timestamp(countTime).toString(), curDayStt)); + // 更新状态数据 + dayStt.update(curDayStt); + } + } + +} diff --git a/src/main/java/com/kedacom/apitest/function/TopNFunction.java b/src/main/java/com/kedacom/apitest/function/TopNFunction.java new file mode 100644 index 0000000..f07b018 --- /dev/null +++ b/src/main/java/com/kedacom/apitest/function/TopNFunction.java @@ -0,0 +1,161 @@ +package com.kedacom.apitest.function; + +import com.kedacom.pojo.CarNumCount; +import com.kedacom.pojo.DeviceInfo; +import org.apache.commons.compress.utils.Lists; +import org.apache.flink.api.common.functions.AggregateFunction; +import org.apache.flink.api.common.state.ListState; +import org.apache.flink.api.common.state.ListStateDescriptor; +import org.apache.flink.configuration.Configuration; +import org.apache.flink.streaming.api.datastream.DataStream; +import org.apache.flink.streaming.api.datastream.DataStreamSource; +import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator; +import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; +import org.apache.flink.streaming.api.functions.KeyedProcessFunction; +import org.apache.flink.streaming.api.functions.timestamps.AscendingTimestampExtractor; +import org.apache.flink.streaming.api.functions.windowing.WindowFunction; +import org.apache.flink.streaming.api.windowing.time.Time; +import org.apache.flink.streaming.api.windowing.windows.TimeWindow; +import org.apache.flink.util.Collector; + +import java.net.URL; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.concurrent.TimeUnit; + +// topN 过车数据 +public class TopNFunction { + public static void main(String[] args) throws Exception { + StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); + env.setParallelism(1); + + // 文件转流 + URL resource = TopNFunction.class.getResource("/deviceinfo.txt"); + //String file = "E:\\practice\\flink-test\\src\\main\\resources\\deviceinfo.txt"; + DataStreamSource inputStream = env.readTextFile(resource.getPath()); + + // 转换pojo + DataStream dataStream = inputStream.map(line -> { + String[] fields = line.split(","); + return new DeviceInfo(fields[0], new Integer(fields[1]), new Integer(fields[2]), new Long(fields[3])); + }).assignTimestampsAndWatermarks(new AscendingTimestampExtractor(){ + + @Override + public long extractAscendingTimestamp(DeviceInfo deviceInfo) { + return deviceInfo.getTime() * 1000; + } + }); + + // 自定义keyed state,统计不同name个数,窗口聚合结果 + SingleOutputStreamOperator windowAggStream = dataStream.keyBy(DeviceInfo::getName) + .timeWindow(Time.seconds(10)) + .aggregate(new CarCountAgg(), new ResultWindow()); + + // 收集统一窗口所有设备过车数,输出topN + SingleOutputStreamOperator resultStream = windowAggStream.keyBy(CarNumCount::getTimewindowEnd) + .process(new TopNHotCarNum(5)); + + resultStream.print(); + + env.execute(); + } + + // 自定义聚合 + public static class CarCountAgg implements AggregateFunction { + + @Override + public Long createAccumulator() { + return 0L; + } + + @Override + public Long add(DeviceInfo deviceInfo, Long aLong) { + return aLong + 1; + } + + @Override + public Long getResult(Long aLong) { + return aLong; + } + + @Override + public Long merge(Long aLong, Long acc1) { + return aLong + acc1; + } + } + + // 自定义全窗口函数 + public static class ResultWindow implements WindowFunction { + + @Override + public void apply(String s, TimeWindow timeWindow, java.lang.Iterable iterable, Collector collector) throws Exception { + String name = s; + Long windowEnd = timeWindow.getEnd(); + Integer count = iterable.iterator().next().intValue(); + + collector.collect(new CarNumCount(name, count, windowEnd)); + } + } + + // 自定义processfunciton + public static class TopNHotCarNum extends KeyedProcessFunction { + + private int topN = 5; + + public TopNHotCarNum(int topN) { + this.topN = topN; + } + + // 保持当前窗口类所有输出的CarNumCount + ListState carNumCountListState; + + @Override + public void open(Configuration parameters) throws Exception { + carNumCountListState = getRuntimeContext().getListState(new ListStateDescriptor("carnum-count-list", CarNumCount.class)); + } + + @Override + public void processElement(CarNumCount carNumCount, Context context, Collector collector) throws Exception { + carNumCountListState.add(carNumCount); + + context.timerService().registerEventTimeTimer(carNumCount.getTimewindowEnd() + 1); + } + + @Override + public void onTimer(long timestamp, OnTimerContext ctx, Collector out) throws Exception { + ArrayList countArrayList = Lists.newArrayList(carNumCountListState.get().iterator()); + + countArrayList.sort(new Comparator() { + @Override + public int compare(CarNumCount o1, CarNumCount o2) { + if (o1.getTotalCarNum() > o2.getTotalCarNum()) + return -1; + else if (o1.getTotalCarNum() == o2.getTotalCarNum()) + return 0; + else + return 1; + } + }); + + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("===================\n"); + stringBuilder.append("窗口结束时间:").append(new Timestamp(timestamp - 1)).append("\n"); + + for (int index = 0; index < Math.min(topN, countArrayList.size()); index++) { + CarNumCount carNumCount = countArrayList.get(index); + stringBuilder.append("NO ").append(index + 1).append(":\n") + .append("name = ").append(carNumCount.getName()).append("\n") + .append("totalCatNum = ").append(carNumCount.getTotalCarNum()) + .append("\n\n"); + } + stringBuilder.append("==========================\n\n"); + + TimeUnit.SECONDS.sleep(1); + + out.collect(stringBuilder.toString()); + + carNumCountListState.clear(); + } + } +} diff --git a/src/main/java/com/kedacom/apitest/sink/KafkaSinkTest.java b/src/main/java/com/kedacom/apitest/sink/KafkaSinkTest.java new file mode 100644 index 0000000..31ec750 --- /dev/null +++ b/src/main/java/com/kedacom/apitest/sink/KafkaSinkTest.java @@ -0,0 +1,62 @@ +package com.kedacom.apitest.sink; + +import com.kedacom.apitest.source.SelfSourceTest; +import com.kedacom.pojo.DeviceInfo; +import org.apache.flink.api.common.serialization.SerializationSchema; +import org.apache.flink.api.common.serialization.SimpleStringSchema; +import org.apache.flink.streaming.api.datastream.DataStream; +import org.apache.flink.streaming.api.datastream.KeyedStream; +import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; +import org.apache.flink.streaming.api.functions.source.SourceFunction; +import org.apache.flink.streaming.connectors.kafka.FlinkKafkaProducer; +import org.apache.flink.streaming.util.serialization.KeyedSerializationSchema; + +import java.time.Instant; +import java.util.HashMap; +import java.util.Map; +import java.util.Random; +import java.util.concurrent.TimeUnit; + +public class KafkaSinkTest { + public static void main(String[] args) throws Exception { + StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); + + + DataStream device = env.addSource(new DeviceSource()); + + DataStream transformStream = device.map(dev -> dev.toString()); + + transformStream.addSink(new FlinkKafkaProducer("172.16.64.85:9092", "deviceout", new SimpleStringSchema())); + + transformStream.print(); + + env.execute("device job"); + } + + public static class DeviceSource implements SourceFunction { + + private boolean running = true; + + @Override + public void run(SourceContext sourceContext) throws Exception { + while (running) { + Random random = new Random(); + + Map devsMap = new HashMap<>(); + for (int index = 0; index < 10; index++) { + devsMap.put("device_" + (index + 1), (int) random.nextInt(100)); + } + for (String dev : devsMap.keySet()) { + int status = devsMap.get(dev) % 2 == 0 ? 0 : 1; + sourceContext.collect(new DeviceInfo(dev, status, devsMap.get(dev), Instant.now().getEpochSecond())); + } + TimeUnit.SECONDS.sleep(1); + } + } + + @Override + public void cancel() { + running = false; + } + } +} diff --git a/src/main/java/com/kedacom/apitest/source/DeviceInfoReading.java b/src/main/java/com/kedacom/apitest/source/DeviceInfoReading.java new file mode 100644 index 0000000..135c1a1 --- /dev/null +++ b/src/main/java/com/kedacom/apitest/source/DeviceInfoReading.java @@ -0,0 +1,30 @@ +package com.kedacom.apitest.source; + +import com.kedacom.pojo.DeviceInfo; +import org.apache.flink.streaming.api.datastream.DataStream; +import org.apache.flink.streaming.api.datastream.DataStreamSource; +import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; + +import java.lang.reflect.Array; +import java.util.Arrays; + +public class DeviceInfoReading { + public static void main(String[] args) throws Exception { + StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); + + DataStream inputDevInfoStream = env.fromCollection(Arrays.asList(new DeviceInfo("dev1", 0, 10, 1625819869), + new DeviceInfo("dev2", 1, 20, 1625819869), + new DeviceInfo("dev3", 0, 40, 1625819869), + new DeviceInfo("dev4", 1, 2, 1625819869), + new DeviceInfo("dev5", 1, 5, 1625819869))); + + DataStream integerDataStream = env.fromElements(1, 2, 10, 100, 250, 500); + + + inputDevInfoStream.print("device"); + + integerDataStream.print("int").setParallelism(1); + + env.execute("device job"); + } +} diff --git a/src/main/java/com/kedacom/apitest/source/KafkaSourceTest.java b/src/main/java/com/kedacom/apitest/source/KafkaSourceTest.java new file mode 100644 index 0000000..5fab6f3 --- /dev/null +++ b/src/main/java/com/kedacom/apitest/source/KafkaSourceTest.java @@ -0,0 +1,55 @@ +package com.kedacom.apitest.source; + +import com.kedacom.pojo.DeviceInfo; +import org.apache.flink.api.common.serialization.SimpleStringSchema; +import org.apache.flink.connector.kafka.source.KafkaSource; +import org.apache.flink.streaming.api.datastream.DataStream; +import org.apache.flink.streaming.api.datastream.DataStreamSource; +import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator; +import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; +import org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer; + +import java.util.Arrays; +import java.util.Properties; + +public class KafkaSourceTest { + public static void main(String[] args) throws Exception { + StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); + + Properties prop = new Properties(); + prop.setProperty("bootstrap.servers","172.16.64.85:9092");//多个的话可以指定 + prop.setProperty("key.deserializer","org.apache.kafka.common.serialization.StringDeserializer"); + prop.setProperty("value.deserializer","org.apache.kafka.common.serialization.StringDeserializer"); + // 指定kafka的消费者从哪里开始消费数据 + // 共有三种方式, + // #earliest + // 当各分区下有已提交的offset时,从提交的offset开始消费; + // 无提交的offset时,从头开始消费 + // #latest + // 当各分区下有已提交的offset时,从提交的offset开始消费; + // 无提交的offset时,消费新产生的该分区下的数据 + // #none + // topic各分区都存在已提交的offset时, + // 从offset后开始消费; + // 只要有一个分区不存在已提交的offset,则抛出异常 + prop.setProperty("auto.offset.reset","latest"); + + //设置checkpoint后在提交offset,即oncheckpoint模式 + // 该值默认为true, + FlinkKafkaConsumer devinfoConsumer = new FlinkKafkaConsumer<>("deviceinfo", new SimpleStringSchema(), prop); + devinfoConsumer.setCommitOffsetsOnCheckpoints(true); + + DataStream deviceStream = env.addSource(new FlinkKafkaConsumer("deviceinfo", new SimpleStringSchema(), prop)); + + DataStream map = deviceStream.map(dev -> { + String[] fields = dev.split(","); + return new DeviceInfo(fields[0], new Integer(fields[1]), new Integer(fields[2]), new Long(fields[3])); + }); + + deviceStream.print("devicd").setParallelism(2); + + map.print("map"); + + env.execute("device job"); + } +} diff --git a/src/main/java/com/kedacom/apitest/source/ReduceTest.java b/src/main/java/com/kedacom/apitest/source/ReduceTest.java new file mode 100644 index 0000000..23c5034 --- /dev/null +++ b/src/main/java/com/kedacom/apitest/source/ReduceTest.java @@ -0,0 +1,60 @@ +package com.kedacom.apitest.source; + +import com.kedacom.pojo.DeviceInfo; +import org.apache.flink.streaming.api.datastream.DataStream; +import org.apache.flink.streaming.api.datastream.KeyedStream; +import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; +import org.apache.flink.streaming.api.functions.source.SourceFunction; + +import java.time.Instant; +import java.util.HashMap; +import java.util.Map; +import java.util.Random; +import java.util.concurrent.TimeUnit; + +public class ReduceTest { + public static void main(String[] args) throws Exception { + StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); + env.setParallelism(1); + + DataStream device = env.addSource(new DeviceSource()); + + DataStream reduce = device. + filter(dev -> dev.getName().startsWith("device_2")). + keyBy(dev -> dev.getName()). + reduce((curStatus,newStatus) -> + new DeviceInfo(curStatus.getName(), newStatus.getStatus(), curStatus.getCarNum()+newStatus.getCarNum(), newStatus.getTime())); + + reduce.print("reduce"); + + env.execute("device job"); + } + + + public static class DeviceSource implements SourceFunction { + + private boolean running = true; + + @Override + public void run(SourceContext sourceContext) throws Exception { + while (running) { + Random random = new Random(); + + Map devsMap = new HashMap<>(); + for (int index = 0; index < 10; index++) { + devsMap.put("device_" + (index + 1), (int) random.nextInt(100)); + } + for (String dev : devsMap.keySet()) { + int status = devsMap.get(dev) % 2 == 0 ? 0 : 1; + sourceContext.collect(new DeviceInfo(dev, status, devsMap.get(dev), Instant.now().getEpochSecond())); + } + TimeUnit.SECONDS.sleep(1); + } + } + + @Override + public void cancel() { + running = false; + } + } +} diff --git a/src/main/java/com/kedacom/apitest/source/SelfSourceTest.java b/src/main/java/com/kedacom/apitest/source/SelfSourceTest.java new file mode 100644 index 0000000..924d6e6 --- /dev/null +++ b/src/main/java/com/kedacom/apitest/source/SelfSourceTest.java @@ -0,0 +1,76 @@ +package com.kedacom.apitest.source; + +import com.kedacom.pojo.DeviceInfo; +import org.apache.flink.api.common.functions.FilterFunction; +import org.apache.flink.api.common.functions.MapFunction; +import org.apache.flink.api.common.serialization.SimpleStringSchema; +import org.apache.flink.streaming.api.datastream.DataStream; +import org.apache.flink.streaming.api.datastream.DataStreamSource; +import org.apache.flink.streaming.api.datastream.KeyedStream; +import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator; +import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; +import org.apache.flink.streaming.api.functions.source.SourceFunction; +import org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer; + +import javax.xml.crypto.Data; +import java.time.Instant; +import java.util.HashMap; +import java.util.Map; +import java.util.Properties; +import java.util.Random; +import java.util.concurrent.TimeUnit; + +public class SelfSourceTest { + public static void main(String[] args) throws Exception { + StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); + + + DataStream device = env.addSource(new DeviceSource()); + + DataStream filterStream = device. +// map( deviceInfo -> deviceInfo). + filter(s -> s.getName().startsWith("device_1")); + + KeyedStream keyedStream = device. + filter(s -> s.getName().startsWith("device_1")). + keyBy(deviceInfo -> deviceInfo.getName()); + DataStream max = keyedStream.max("carNum"); + DataStream sum = keyedStream.sum("carNum"); + +// device.print("devicd").setParallelism(1); + filterStream.print("filter"); +// keyedStream.print("keyby"); + max.print("max").setParallelism(1); + sum.print("sum").setParallelism(1); + + + env.execute("device job"); + } + + public static class DeviceSource implements SourceFunction { + + private boolean running = true; + + @Override + public void run(SourceContext sourceContext) throws Exception { + while (running) { + Random random = new Random(); + + Map devsMap = new HashMap<>(); + for (int index = 0; index < 10; index++) { + devsMap.put("device_" + (index + 1), (int) random.nextInt(100)); + } + for (String dev : devsMap.keySet()) { + int status = devsMap.get(dev) % 2 == 0 ? 0 : 1; + sourceContext.collect(new DeviceInfo(dev, status, devsMap.get(dev), Instant.now().getEpochSecond())); + } + TimeUnit.SECONDS.sleep(1); + } + } + + @Override + public void cancel() { + running = false; + } + } +} diff --git a/src/main/java/com/kedacom/apitest/source/SplitStreamTest.java b/src/main/java/com/kedacom/apitest/source/SplitStreamTest.java new file mode 100644 index 0000000..d707f8f --- /dev/null +++ b/src/main/java/com/kedacom/apitest/source/SplitStreamTest.java @@ -0,0 +1,103 @@ +package com.kedacom.apitest.source; + +import com.kedacom.pojo.DeviceInfo; +import org.apache.flink.api.common.functions.MapFunction; +import org.apache.flink.api.common.typeinfo.TypeInformation; +import org.apache.flink.api.java.tuple.Tuple2; +import org.apache.flink.api.java.tuple.Tuple3; +import org.apache.flink.streaming.api.datastream.ConnectedStreams; +import org.apache.flink.streaming.api.datastream.DataStream; +import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator; +import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; +import org.apache.flink.streaming.api.functions.ProcessFunction; +import org.apache.flink.streaming.api.functions.co.CoMapFunction; +import org.apache.flink.streaming.api.functions.source.SourceFunction; +import org.apache.flink.util.Collector; +import org.apache.flink.util.OutputTag; + +import java.time.Instant; +import java.util.HashMap; +import java.util.Map; +import java.util.Random; +import java.util.concurrent.TimeUnit; + +public class SplitStreamTest { + public static void main(String[] args) throws Exception { + StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); + env.setParallelism(1); + + DataStream device = env.addSource(new DeviceSource()); + + final OutputTag onlineTag = new OutputTag<>("online", TypeInformation.of(DeviceInfo.class)); + final OutputTag offlineTag = new OutputTag<>("offline", TypeInformation.of(DeviceInfo.class)); + + // 1 分流,online、offline + SingleOutputStreamOperator process = device.process(new ProcessFunction() { + @Override + public void processElement(DeviceInfo deviceInfo, Context context, Collector collector) throws Exception { + if (deviceInfo.getStatus() == 1) { + context.output(onlineTag, deviceInfo); + } else { + context.output(offlineTag, deviceInfo); + } + } + }); + + process.getSideOutput(onlineTag).print("online"); + process.getSideOutput(offlineTag).print("offline"); + + + // 2 合流 connect,将在线流转换成元组 + SingleOutputStreamOperator> onlineStream = process.getSideOutput(onlineTag).map(new MapFunction>() { + @Override + public Tuple3 map(DeviceInfo deviceInfo) throws Exception { + return new Tuple3<>(deviceInfo.getName(), deviceInfo.getCarNum(), deviceInfo.getTime()); + } + }); + + ConnectedStreams, DeviceInfo> connect = onlineStream.connect(process.getSideOutput(offlineTag)); + SingleOutputStreamOperator coMap = connect.map(new CoMapFunction, DeviceInfo, Object>() { + @Override + public Object map1(Tuple3 value) throws Exception { + return new Tuple3<>(value.f0, value.f2, "onlineItem"); + } + + @Override + public Object map2(DeviceInfo deviceInfo) throws Exception { + return new Tuple2<>(deviceInfo.getName(), "offlineItme"); + } + }); + + coMap.print("coMap"); + + env.execute("device job"); + } + + + public static class DeviceSource implements SourceFunction { + + private boolean running = true; + + @Override + public void run(SourceContext sourceContext) throws Exception { + while (running) { + Random random = new Random(); + + Map devsMap = new HashMap<>(); + for (int index = 0; index < 10; index++) { + devsMap.put("device_" + (index + 1), (int) random.nextInt(100)); + } + for (String dev : devsMap.keySet()) { + int status = devsMap.get(dev) % 2 == 0 ? 0 : 1; + sourceContext.collect(new DeviceInfo(dev, status, devsMap.get(dev), Instant.now().getEpochSecond())); + } + TimeUnit.SECONDS.sleep(1); + } + } + + @Override + public void cancel() { + running = false; + } + } +} diff --git a/src/main/java/com/kedacom/apitest/state/KeyedStateApplicationTest.java b/src/main/java/com/kedacom/apitest/state/KeyedStateApplicationTest.java new file mode 100644 index 0000000..8f0ed6b --- /dev/null +++ b/src/main/java/com/kedacom/apitest/state/KeyedStateApplicationTest.java @@ -0,0 +1,88 @@ +package com.kedacom.apitest.state; + +import com.kedacom.pojo.DeviceInfo; +import com.kedacom.pojo.DeviceStatusStt; +import org.apache.flink.api.common.functions.RichFlatMapFunction; +import org.apache.flink.api.common.state.ValueState; +import org.apache.flink.api.common.state.ValueStateDescriptor; +import org.apache.flink.configuration.Configuration; +import org.apache.flink.streaming.api.datastream.DataStream; +import org.apache.flink.streaming.api.datastream.DataStreamSource; +import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; +import org.apache.flink.util.Collector; + +import static jdk.nashorn.internal.runtime.regexp.joni.Config.log; + +// +public class KeyedStateApplicationTest { + public static void main(String[] args) throws Exception { + StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); + env.setParallelism(1); + + // 文件转流 + + String file = "E:\\practice\\flink-test\\src\\main\\resources\\deviceinfo.txt"; + DataStreamSource inputStream = env.readTextFile(file); + + // 转换pojo + DataStream dataStream = inputStream.map(line -> { + String[] fields = line.split(","); + return new DeviceInfo(fields[0], new Integer(fields[1]), new Integer(fields[2]), new Long(fields[3])); + }); + + // 自定义keyed state,统计不同name个数 + dataStream.keyBy(DeviceInfo::getName) + .flatMap(new StatusSttFunction()).print(); + + + env.execute(); + } + + public static class StatusSttFunction extends RichFlatMapFunction{ + + private ValueState deviceStatusSttValueState; + + @Override + public void open(Configuration parameters) throws Exception { + deviceStatusSttValueState = getRuntimeContext().getState(new ValueStateDescriptor("status-stt", DeviceStatusStt.class)); + } + +// @Override +// public void close() throws Exception { +// deviceStatusSttValueState.clear(); +// } + + // 实时计算设备状态,持续时长、过车统计 + @Override + public void flatMap(DeviceInfo deviceInfo, Collector collector) throws Exception { + DeviceStatusStt devStatusStt = deviceStatusSttValueState.value(); + if(devStatusStt == null){ + devStatusStt = new DeviceStatusStt(); + devStatusStt.setName(deviceInfo.getName()); + devStatusStt.setStatus(deviceInfo.getStatus()); + devStatusStt.setTotalCarNum(deviceInfo.getCarNum()); + devStatusStt.setContinueDurationTime(0); + devStatusStt.setTime(deviceInfo.getTime()); + }else{ + if(devStatusStt.getTime() >= deviceInfo.getTime()){// 乱序数据,丢弃 + log.println("time error!!"); + return; + } + if(devStatusStt.getStatus() == deviceInfo.getStatus()){ + // 状态相同,去重,持续时长相加 + devStatusStt.setContinueDurationTime(devStatusStt.getContinueDurationTime() + deviceInfo.getTime() - devStatusStt.getTime()); + }else{ + // 状态不同,改变状态,重置持续时长 + devStatusStt.setContinueDurationTime(deviceInfo.getTime() - devStatusStt.getTime()); + devStatusStt.setStatus(deviceInfo.getStatus()); + } + // 过车总数增加 + devStatusStt.setTotalCarNum(devStatusStt.getTotalCarNum() + deviceInfo.getCarNum()); + // 时间设置为最新 + devStatusStt.setTime(deviceInfo.getTime()); + } + deviceStatusSttValueState.update(devStatusStt); + collector.collect(devStatusStt); + } + } +} diff --git a/src/main/java/com/kedacom/apitest/state/KeyedStateTest.java b/src/main/java/com/kedacom/apitest/state/KeyedStateTest.java new file mode 100644 index 0000000..58e4136 --- /dev/null +++ b/src/main/java/com/kedacom/apitest/state/KeyedStateTest.java @@ -0,0 +1,64 @@ +package com.kedacom.apitest.state; + +import com.kedacom.pojo.DeviceInfo; +import org.apache.flink.api.common.functions.RichMapFunction; +import org.apache.flink.api.common.state.ValueState; +import org.apache.flink.api.common.state.ValueStateDescriptor; +import org.apache.flink.api.java.tuple.Tuple2; +import org.apache.flink.configuration.Configuration; +import org.apache.flink.streaming.api.datastream.DataStream; +import org.apache.flink.streaming.api.datastream.DataStreamSource; +import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator; +import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; + +public class KeyedStateTest { + public static void main(String[] args) throws Exception { + StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); + env.setParallelism(1); + + // 文件转流 + String file = "E:\\practice\\flink-test\\src\\main\\resources\\deviceinfo.txt"; + DataStreamSource inputStream = env.readTextFile(file); + + // 转换pojo + DataStream dataStream = inputStream.map(line -> { + String[] fields = line.split(","); + return new DeviceInfo(fields[0], new Integer(fields[1]), new Integer(fields[2]), new Long(fields[3])); + }); + + // 自定义keyed state,统计不同name个数 + dataStream.keyBy("name") + .map(new MyKeyedState()).print(); + + + env.execute(); + } + + public static class MyKeyedState extends RichMapFunction> { + + private ValueState keyCountState; + + @Override + public void open(Configuration parameters) throws Exception { + keyCountState = getRuntimeContext().getState(new ValueStateDescriptor("key-count", Integer.class)); + } + + @Override + public void close() throws Exception { + keyCountState.clear(); + } + + @Override + public Tuple2 map(DeviceInfo deviceInfo) throws Exception { + Integer count = keyCountState.value(); + if(count == null){ + count = 0; + } + count++; + keyCountState.update(count); + + return new Tuple2<>(deviceInfo.getName(), count); + } + } + +} diff --git a/src/main/java/com/kedacom/apitest/state/OpetateStateTest.java b/src/main/java/com/kedacom/apitest/state/OpetateStateTest.java new file mode 100644 index 0000000..bea71f6 --- /dev/null +++ b/src/main/java/com/kedacom/apitest/state/OpetateStateTest.java @@ -0,0 +1,87 @@ +package com.kedacom.apitest.state; + +import com.kedacom.pojo.DeviceInfo; +import org.apache.flink.api.common.functions.MapFunction; +import org.apache.flink.api.common.functions.RichMapFunction; +import org.apache.flink.api.common.state.ValueState; +import org.apache.flink.api.common.state.ValueStateDescriptor; +import org.apache.flink.api.java.tuple.Tuple; +import org.apache.flink.api.java.tuple.Tuple2; +import org.apache.flink.configuration.Configuration; +import org.apache.flink.streaming.api.checkpoint.ListCheckpointed; +import org.apache.flink.streaming.api.datastream.DataStream; +import org.apache.flink.streaming.api.datastream.DataStreamSource; +import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator; +import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; +import org.apache.flink.table.expressions.In; + +import java.util.Collections; +import java.util.List; + +public class OpetateStateTest { + public static void main(String[] args) throws Exception { + StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); + env.setParallelism(1); + + // 文件转流 + String file = "E:\\practice\\flink-test\\src\\main\\resources\\deviceinfo.txt"; + DataStreamSource inputStream = env.readTextFile(file); + + // 转换pojo + DataStream dataStream = inputStream.map(line -> { + String[] fields = line.split(","); + return new DeviceInfo(fields[0], new Integer(fields[1]), new Integer(fields[2]), new Long(fields[3])); + }); + + + // 自定义mapper + SingleOutputStreamOperator countMap = dataStream + .keyBy(DeviceInfo::getName) + .map(new CountMapper()); + + countMap.print(); + + env.execute(); + } + + public static class MyCountMapper extends RichMapFunction>{ + + ValueState countState; + + @Override + public void open(Configuration parameters) throws Exception { + countState = getRuntimeContext().getState(new ValueStateDescriptor("count-value", Integer.class, 0)); + } + + @Override + public Tuple2 map(DeviceInfo deviceInfo) throws Exception { + int count = countState.value(); + count++; + countState.update(count); + return new Tuple2<>(deviceInfo.getName(), count); + } + } + + // 聚合求和,采用ListCheckpointed + public static class CountMapper implements MapFunction, ListCheckpointed { + + private Integer count = 0; + + @Override + public Integer map(DeviceInfo deviceInfo) throws Exception { + return count++; + } + + @Override + public List snapshotState(long l, long l1) throws Exception { + return Collections.singletonList(count); + } + + @Override + public void restoreState(List list) throws Exception { + for(Integer num : list){ + count += num; + } + } + } +} diff --git a/src/main/java/com/kedacom/apitest/tableapi/TableTest1.java b/src/main/java/com/kedacom/apitest/tableapi/TableTest1.java new file mode 100644 index 0000000..e642a58 --- /dev/null +++ b/src/main/java/com/kedacom/apitest/tableapi/TableTest1.java @@ -0,0 +1,73 @@ +package com.kedacom.apitest.tableapi; + +import com.kedacom.pojo.DeviceInfo; +import org.apache.flink.streaming.api.datastream.DataStream; +import org.apache.flink.streaming.api.datastream.DataStreamSource; +import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; +import org.apache.flink.streaming.api.functions.timestamps.BoundedOutOfOrdernessTimestampExtractor; +import org.apache.flink.streaming.api.windowing.time.Time; +import org.apache.flink.table.api.Over; +import org.apache.flink.table.api.Table; +import org.apache.flink.table.api.Tumble; +import org.apache.flink.table.api.bridge.java.StreamTableEnvironment; +import org.apache.flink.types.Row; + +public class TableTest1 { + public static void main(String[] args) throws Exception { + StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); + env.setParallelism(1); + + // 文件转流 + String file = "E:\\practice\\flink-test\\src\\main\\resources\\deviceinfo.txt"; + DataStreamSource inputStream = env.readTextFile(file); + + // 转换pojo + DataStream dataStream = inputStream.map(line -> { + String[] fields = line.split(","); + return new DeviceInfo(fields[0], new Integer(fields[1]), new Integer(fields[2]), new Long(fields[3])); + }).assignTimestampsAndWatermarks(new BoundedOutOfOrdernessTimestampExtractor(Time.seconds(30)) { + @Override + public long extractTimestamp(DeviceInfo deviceInfo) { + return deviceInfo.getTime() * 1000; + } + }); + + // 创建表环境,定义时间特性 + StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env); + // 采用pt.proctime +// Table dataTable = tableEnv.fromDataStream(dataStream, "name, status, carNum, time as ts, pt.proctime"); + + // 定义schema,采用rt作为rowtime + Table dataTable = tableEnv.fromDataStream(dataStream, "name, status, carNum, time as ts, rt.rowtime"); + + tableEnv.createTemporaryView("device", dataTable); + + // 窗口操作 + // group window + Table resultTable = dataTable.window(Tumble.over("10.seconds").on("rt").as("tw")) + .groupBy("name, tw") + .select("name, carNum.count, carNum.avg, tw.end");// 此处只能选择聚合字段 +// +// // sql + Table resultQuery = tableEnv.sqlQuery("select name, count(name), avg(carNum) as avtCarNum, tumble_end(rt, interval '10' second) from" + + " device group by name, tumble(rt, interval '10' second)"); + + // over window + Table overResult = dataTable.window(Over.partitionBy("name").orderBy("rt").preceding("2.rows").as("ow")) + .select("name, carNum.count over ow, carNum.avg over ow"); + + Table overSql = tableEnv.sqlQuery("select name, rt, count(name) over ow, avg(carNum) over ow " + + "from device " + + " window ow as (partition by name order by rt rows between 2 preceding and current row)"); + + + dataTable.printSchema(); + tableEnv.toAppendStream(dataTable, Row.class).print("stream"); + tableEnv.toRetractStream(resultTable, Row.class).print("result"); + tableEnv.toRetractStream(resultQuery, Row.class).print("query"); + tableEnv.toRetractStream(overResult, Row.class).print("overResult"); + tableEnv.toRetractStream(overSql, Row.class).print("oversql"); + + env.execute(); + } +} diff --git a/src/main/java/com/kedacom/apitest/tableapi/udf/UdfAggregateFunctionTest.java b/src/main/java/com/kedacom/apitest/tableapi/udf/UdfAggregateFunctionTest.java new file mode 100644 index 0000000..4ca434b --- /dev/null +++ b/src/main/java/com/kedacom/apitest/tableapi/udf/UdfAggregateFunctionTest.java @@ -0,0 +1,75 @@ +package com.kedacom.apitest.tableapi.udf; + +import com.kedacom.pojo.DeviceInfo; +import org.apache.flink.api.java.tuple.Tuple2; +import org.apache.flink.streaming.api.datastream.DataStream; +import org.apache.flink.streaming.api.datastream.DataStreamSource; +import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; +import org.apache.flink.table.api.Table; +import org.apache.flink.table.api.bridge.java.StreamTableEnvironment; +import org.apache.flink.table.codegen.GeneratedAggregationsFunction; +import org.apache.flink.table.expressions.In; +import org.apache.flink.table.functions.AggregateFunction; +import org.apache.flink.table.runtime.aggregate.AggregateAggFunction; +import org.apache.flink.types.Row; + +public class UdfAggregateFunctionTest { + public static void main(String[] args) throws Exception { + StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); + env.setParallelism(1); + + // 文件转流 + String file = "E:\\practice\\flink-test\\src\\main\\resources\\deviceinfo.txt"; + DataStreamSource inputStream = env.readTextFile(file); + + // 转换pojo + DataStream dataStream = inputStream.map(line -> { + String[] fields = line.split(","); + return new DeviceInfo(fields[0], new Integer(fields[1]), new Integer(fields[2]), new Long(fields[3])); + }); + + // 创建表环境,定义时间特性 + StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env); + // 流转换成表 + Table dataTable = tableEnv.fromDataStream(dataStream, "name, status, carNum, time as ts, pt.proctime"); + + // 自定义聚合函数,求carNum平均值 + AverageCarNum averageCarNum = new AverageCarNum(); + // table Api + tableEnv.registerFunction("avgCarNum", averageCarNum); + Table resultTable = dataTable + .groupBy("name") + .aggregate("avgCarNum(carNum) as avgNum") + .select("name, avgNum"); + + // sql + // 注册表 + tableEnv.createTemporaryView("device", dataTable); + Table sqlResult = tableEnv.sqlQuery("select name, avgCarNum(carNum) from device group by name"); + + tableEnv.toRetractStream(resultTable, Row.class).print("result"); + tableEnv.toRetractStream(sqlResult, Row.class).print("sql"); + + env.execute(); + + } + + public static class AverageCarNum extends AggregateFunction>{ + + @Override + public Double getValue(Tuple2 agg) { + return agg.f0 / agg.f1; + } + + @Override + public Tuple2 createAccumulator() { + return new Tuple2<>(0.0, 0); + } + + // 必须实现accumulate方法,来数据后更新状态 + public void accumulate(Tuple2 accumulator, Integer tmp){ + accumulator.f0 += tmp; + accumulator.f1 ++; + } + } +} diff --git a/src/main/java/com/kedacom/apitest/tableapi/udf/UdfScalarFunctionTest.java b/src/main/java/com/kedacom/apitest/tableapi/udf/UdfScalarFunctionTest.java new file mode 100644 index 0000000..5895127 --- /dev/null +++ b/src/main/java/com/kedacom/apitest/tableapi/udf/UdfScalarFunctionTest.java @@ -0,0 +1,63 @@ +package com.kedacom.apitest.tableapi.udf; + +import com.kedacom.pojo.DeviceInfo; +import org.apache.flink.streaming.api.datastream.DataStream; +import org.apache.flink.streaming.api.datastream.DataStreamSource; +import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; +import org.apache.flink.table.api.Table; +import org.apache.flink.table.api.bridge.java.StreamTableEnvironment; +import org.apache.flink.table.functions.ScalarFunction; +import org.apache.flink.types.Row; + +public class UdfScalarFunctionTest { + public static void main(String[] args) throws Exception { + StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); + env.setParallelism(1); + + // 文件转流 + String file = "E:\\practice\\flink-test\\src\\main\\resources\\deviceinfo.txt"; + DataStreamSource inputStream = env.readTextFile(file); + + // 转换pojo + DataStream dataStream = inputStream.map(line -> { + String[] fields = line.split(","); + return new DeviceInfo(fields[0], new Integer(fields[1]), new Integer(fields[2]), new Long(fields[3])); + }); + + // 创建表环境,定义时间特性 + StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env); + // 流转换成表 + Table dataTable = tableEnv.fromDataStream(dataStream, "name, status, carNum, time as ts, pt.proctime"); + + // 自定义标量函数,实现name的hash值 + HashCode hashCode = new HashCode(5); + // table Api + tableEnv.registerFunction("hashCode", hashCode); + Table resultTable = dataTable.select("name, carNum, hashCode(name), ts"); + + // sql + // 注册表 + tableEnv.createTemporaryView("device", dataTable); + Table sqlResult = tableEnv.sqlQuery("select name, carNum, hashCode(name), ts from device"); + + tableEnv.toAppendStream(resultTable, Row.class).print("result"); + tableEnv.toAppendStream(sqlResult, Row.class).print("sql"); + + env.execute(); + + } + + // 自定义scalar function + public static class HashCode extends ScalarFunction{ + private int factor = 3; + + public HashCode(int factor) { + this.factor = factor; + } + + // 必须实现 eval 函数 + public int eval(String name){ + return name.hashCode() * factor; + } + } +} diff --git a/src/main/java/com/kedacom/apitest/tableapi/udf/UdfTableFunctionTest.java b/src/main/java/com/kedacom/apitest/tableapi/udf/UdfTableFunctionTest.java new file mode 100644 index 0000000..2143093 --- /dev/null +++ b/src/main/java/com/kedacom/apitest/tableapi/udf/UdfTableFunctionTest.java @@ -0,0 +1,70 @@ +package com.kedacom.apitest.tableapi.udf; + +import com.kedacom.pojo.DeviceInfo; +import org.apache.flink.api.java.tuple.Tuple2; +import org.apache.flink.streaming.api.datastream.DataStream; +import org.apache.flink.streaming.api.datastream.DataStreamSource; +import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; +import org.apache.flink.table.api.Table; +import org.apache.flink.table.api.bridge.java.StreamTableEnvironment; +import org.apache.flink.table.functions.TableFunction; +import org.apache.flink.types.Row; + +public class UdfTableFunctionTest { + public static void main(String[] args) throws Exception { + StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); + env.setParallelism(1); + + // 文件转流 + String file = "E:\\practice\\flink-test\\src\\main\\resources\\deviceinfo.txt"; + DataStreamSource inputStream = env.readTextFile(file); + + // 转换pojo + DataStream dataStream = inputStream.map(line -> { + String[] fields = line.split(","); + return new DeviceInfo(fields[0], new Integer(fields[1]), new Integer(fields[2]), new Long(fields[3])); + }); + + // 创建表环境,定义时间特性 + StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env); + // 流转换成表 + Table dataTable = tableEnv.fromDataStream(dataStream, "name, status, carNum, time as ts, pt.proctime"); + + // 将name拆分,拆成名字+数字 + SplitName splitName = new SplitName("_"); + // table Api + tableEnv.registerFunction("splitName", splitName); + Table resultTable = dataTable + .joinLateral("splitName(name) as (word, length)") + .select("name, carNum, word, length"); + + // sql + // 注册表 + tableEnv.createTemporaryView("device", dataTable); + Table sqlResult = tableEnv.sqlQuery("select name, carNum, word, length, ts from device " + + ", lateral table(splitName(name)) as split(word, length)"); + + tableEnv.toAppendStream(resultTable, Row.class).print("result"); + tableEnv.toAppendStream(sqlResult, Row.class).print("sql"); + + env.execute(); + + } + + // 自定义table function + public static class SplitName extends TableFunction> { + + private String seprator = "_"; + + public SplitName(String seprator) { + this.seprator = seprator; + } + + public void eval(String name) { + String[] fields = name.split(seprator); + for (String str : fields) { + collect(new Tuple2(str, str.length())); + } + } + } +} diff --git a/src/main/java/com/kedacom/apitest/window/SocketWindowTest.java b/src/main/java/com/kedacom/apitest/window/SocketWindowTest.java new file mode 100644 index 0000000..895426d --- /dev/null +++ b/src/main/java/com/kedacom/apitest/window/SocketWindowTest.java @@ -0,0 +1,115 @@ +package com.kedacom.apitest.window; + +import com.kedacom.pojo.CarNumCount; +import com.kedacom.pojo.DeviceInfo; +import org.apache.flink.api.common.functions.AggregateFunction; +import org.apache.flink.api.common.functions.MapFunction; +import org.apache.flink.api.java.tuple.Tuple2; +import org.apache.flink.api.java.utils.ParameterTool; +import org.apache.flink.streaming.api.TimeCharacteristic; +import org.apache.flink.streaming.api.datastream.DataStream; +import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator; +import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; +import org.apache.flink.streaming.api.functions.aggregation.AggregationFunction; +import org.apache.flink.streaming.api.functions.source.SourceFunction; +import org.apache.flink.streaming.api.functions.timestamps.BoundedOutOfOrdernessTimestampExtractor; +import org.apache.flink.streaming.api.functions.windowing.ProcessWindowFunction; +import org.apache.flink.streaming.api.functions.windowing.WindowFunction; +import org.apache.flink.streaming.api.windowing.assigners.TumblingEventTimeWindows; +import org.apache.flink.streaming.api.windowing.time.Time; +import org.apache.flink.streaming.api.windowing.windows.TimeWindow; +import org.apache.flink.util.Collector; + +import java.time.Instant; +import java.util.HashMap; +import java.util.Map; +import java.util.Random; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicReference; + +public class SocketWindowTest { + public static void main(String[] args) throws Exception { + StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); + env.setParallelism(1); + + // 1 设置socket信息 + ParameterTool parameterTool = ParameterTool.fromArgs(args); +// String host = parameterTool.get("host"); +// int port = parameterTool.getInt("port"); + String host = "172.16.64.85"; + int port = 8888; + + + // 2 从socket读取数据 + DataStream inputDataStream = env.socketTextStream(host, port); + + DataStream mapStream = inputDataStream.map(new MapFunction() { + @Override + public DeviceInfo map(String s) throws Exception { + String[] fields = s.split(","); + return new DeviceInfo(fields[0], new Integer(fields[1]), new Integer(fields[2]), new Long(fields[3])); + } + }); + + SingleOutputStreamOperator> resultStream = mapStream + .assignTimestampsAndWatermarks( + new BoundedOutOfOrdernessTimestampExtractor(Time.seconds(2)) { + @Override + public long extractTimestamp(DeviceInfo deviceInfo) { + return deviceInfo.getTime() * 1000; + } + }) + .keyBy(DeviceInfo::getName) + .window(TumblingEventTimeWindows.of(Time.seconds(10))) + .aggregate(new AggregateFunction, Tuple2>() { + @Override + public Tuple2 createAccumulator() { + return new Tuple2<>("", 0L); + } + + @Override + public Tuple2 add(DeviceInfo deviceInfo, Tuple2 value) { + value.f0 = deviceInfo.getName(); + value.f1 += deviceInfo.getCarNum(); + return value; + } + + @Override + public Tuple2 getResult(Tuple2 stringLongTuple2) { + return stringLongTuple2; + } + + @Override + public Tuple2 merge(Tuple2 stringLongTuple2, Tuple2 acc1) { + stringLongTuple2.f1 += acc1.f1; + return stringLongTuple2; + } + }); + mapStream.print("data"); + resultStream.print("sum"); +// +// // 2 全窗口测试 +// SingleOutputStreamOperator apply = deviceStream.keyBy(devic -> devic.getName()) +// .timeWindow(Time.seconds(5)) +// .apply(new WindowFunction() { +// @Override +// public void apply(String s, TimeWindow timeWindow, Iterable iterable, Collector collector) throws Exception { +// AtomicInteger total = new AtomicInteger(); +// AtomicReference deviceInfo = new AtomicReference<>(); +// iterable.forEach(dev -> { +// total.addAndGet(dev.getCarNum()); +// deviceInfo.set(dev); +// }); +// if (deviceInfo != null) { +// deviceInfo.get().setCarNum(total.get()); +// } +// +// collector.collect(deviceInfo.get()); +// } +// }); +// apply.print("apply"); +// + env.execute("device job"); + } +} diff --git a/src/main/java/com/kedacom/apitest/window/WatermarkTest.java b/src/main/java/com/kedacom/apitest/window/WatermarkTest.java new file mode 100644 index 0000000..603b3ee --- /dev/null +++ b/src/main/java/com/kedacom/apitest/window/WatermarkTest.java @@ -0,0 +1,262 @@ +package com.kedacom.apitest.window; + +import com.kedacom.pojo.CarNumCount; +import com.kedacom.pojo.DeviceInfo; +import com.kedacom.pojo.DeviceStatusStt; +import org.apache.commons.compress.utils.Lists; +import org.apache.flink.api.common.eventtime.*; +import org.apache.flink.api.common.functions.AggregateFunction; +import org.apache.flink.api.common.state.ListState; +import org.apache.flink.api.common.state.ListStateDescriptor; +import org.apache.flink.api.java.tuple.Tuple; +import org.apache.flink.configuration.Configuration; +import org.apache.flink.streaming.api.datastream.DataStream; +import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator; +import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; +import org.apache.flink.streaming.api.functions.KeyedProcessFunction; +import org.apache.flink.streaming.api.functions.source.SourceFunction; +import org.apache.flink.streaming.api.functions.windowing.WindowFunction; +import org.apache.flink.streaming.api.windowing.assigners.TumblingEventTimeWindows; +import org.apache.flink.streaming.api.windowing.time.Time; +import org.apache.flink.streaming.api.windowing.windows.TimeWindow; +import org.apache.flink.streaming.api.windowing.windows.Window; +import org.apache.flink.table.runtime.aggregate.AggregateAggFunction; +import org.apache.flink.util.Collector; +import org.apache.flink.util.OutputTag; +import scala.collection.Iterable; + +import java.awt.*; +import java.sql.Timestamp; +import java.time.Instant; +import java.util.*; +import java.util.concurrent.TimeUnit; + +public class WatermarkTest { + public static void main(String[] args) throws Exception { + StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); + + DataStream deviceStream = env.addSource(new DeviceSource()); +// +// env.setStreamTimeCharacteristic(TimeCharacteristic.ProcessingTime); +// env.getConfig().setAutoWatermarkInterval(100); + +// // 1 开窗测试,按照process时间来开窗 +// SingleOutputStreamOperator dataStream = deviceStream +// .keyBy(dev -> dev.getName()) +// .window(TumblingProcessingTimeWindows.of(Time.seconds(10))) +// .min("carNum"); +// +// deviceStream.print("data"); +// dataStream.print("window"); + + // 2 按照eventTime开窗 +// SingleOutputStreamOperator carNum = deviceStream.assignTimestampsAndWatermarks( +// WatermarkStrategy +// .forBoundedOutOfOrderness(Duration.ofSeconds(2)) +// .withTimestampAssigner(new MyTimeAssigner())) +// .keyBy(dev -> dev.getName()) +//// .timeWindow(Time.seconds(10)) +// .window(TumblingEventTimeWindows.of(Time.seconds(10))) +// .min("carNum"); +// +// deviceStream.print("data"); +// carNum.print("window"); + + // 3 自定义函数watermark + SingleOutputStreamOperator resultStream = deviceStream.assignTimestampsAndWatermarks( + new MyTimestampAndWatermarks().withTimestampAssigner(new MyTimeAssigner()) + ) + .keyBy(dev -> dev.getName()) + .timeWindow(Time.seconds(60), Time.seconds(10)) +// .aggregate(new CarCountAgg(), new ResultWindow()); + .min("carNum"); + + + deviceStream.print("data"); + resultStream.print("min"); + +// deviceStream.print("data"); +// carNum.print("window"); + + // 4 延迟和侧输出流 +// OutputTag outputTag = new OutputTag<>("late"); +// SingleOutputStreamOperator outputStreamOperator = deviceStream.assignTimestampsAndWatermarks( +// new MyTimestampAndWatermarks().withTimestampAssigner(new MyTimeAssigner())) +// .keyBy(dev -> dev.getName()) +// .window(TumblingEventTimeWindows.of(Time.seconds(10))) +// .allowedLateness(Time.minutes(1)) +// .sideOutputLateData(outputTag) +// .min("carNum"); +// +// outputStreamOperator.getSideOutput(outputTag).print("output"); + + + env.execute("device job"); + } + + public static class MyTimeAssigner implements TimestampAssignerSupplier { + + @Override + public TimestampAssigner createTimestampAssigner(Context context) { + return new TimestampAssigner() { + @Override + public long extractTimestamp(DeviceInfo deviceInfo, long l) { + return deviceInfo.getTime() * 1000; + } + }; + } + } + + public static class MyTimestampAndWatermarks implements WatermarkStrategy { + + @Override + public WatermarkGenerator createWatermarkGenerator(WatermarkGeneratorSupplier.Context context) { + return new WatermarkGenerator() { + + private long delay = 10000; + private long maxTimestamp = Long.MIN_VALUE + delay + 1L; + + @Override + // 每条数据都会调用OnEvent,在这个方法里定义maxTimestamp + public void onEvent(DeviceInfo deviceInfo, long l, WatermarkOutput watermarkOutput) { + maxTimestamp = Math.max(maxTimestamp, deviceInfo.getTime() * 1000); + } + + // 周期性生成watermark + @Override + public void onPeriodicEmit(WatermarkOutput watermarkOutput) { + watermarkOutput.emitWatermark(new Watermark(maxTimestamp - delay)); + } + }; + } + } + + // 自定义聚合 + public static class CarCountAgg implements AggregateFunction { + + @Override + public Long createAccumulator() { + return 0L; + } + + @Override + public Long add(DeviceInfo deviceInfo, Long aLong) { + return aLong + 1; + } + + @Override + public Long getResult(Long aLong) { + return aLong; + } + + @Override + public Long merge(Long aLong, Long acc1) { + return aLong + acc1; + } + } + + // 自定义全窗口函数 + public static class ResultWindow implements WindowFunction { + + @Override + public void apply(String s, TimeWindow timeWindow, java.lang.Iterable iterable, Collector collector) throws Exception { + String name = s; + Long windowEnd = timeWindow.getEnd(); + Integer count = iterable.iterator().next().intValue(); + + collector.collect(new CarNumCount(name, count, windowEnd)); + } + } + + // 自定义processfunciton + public static class TopNHotCarNum extends KeyedProcessFunction { + + private int topN = 5; + + public TopNHotCarNum(int topN) { + this.topN = topN; + } + + // 保持当前窗口类所有输出的CarNumCount + ListState carNumCountListState; + + @Override + public void open(Configuration parameters) throws Exception { + carNumCountListState = getRuntimeContext().getListState(new ListStateDescriptor("carnum-count-list", CarNumCount.class)); + } + + @Override + public void processElement(CarNumCount carNumCount, Context context, Collector collector) throws Exception { + carNumCountListState.add(carNumCount); + + context.timerService().registerEventTimeTimer(carNumCount.getTimewindowEnd() + 1); + } + + @Override + public void onTimer(long timestamp, OnTimerContext ctx, Collector out) throws Exception { + ArrayList countArrayList = Lists.newArrayList(carNumCountListState.get().iterator()); + + countArrayList.sort(new Comparator() { + @Override + public int compare(CarNumCount o1, CarNumCount o2) { + if (o1.getTotalCarNum() > o2.getTotalCarNum()) + return -1; + else if (o1.getTotalCarNum() == o2.getTotalCarNum()) + return 0; + else + return 1; + } + }); + + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("===================\n"); + stringBuilder.append("窗口结束时间:").append(new Timestamp(timestamp - 1)).append("\n"); + + for (int index = 0; index < Math.min(topN, countArrayList.size()); index++) { + CarNumCount carNumCount = countArrayList.get(index); + stringBuilder.append("NO ").append(index + 1).append(":\n") + .append("name = ").append(carNumCount.getName()).append("\n") + .append("totalCatNum = ").append(carNumCount.getTotalCarNum()) + .append("\n\n"); + } + stringBuilder.append("==========================\n\n"); + + TimeUnit.SECONDS.sleep(1); + + out.collect(stringBuilder.toString()); + + carNumCountListState.clear(); + } + } + + public static class DeviceSource implements SourceFunction { + + private boolean running = true; + + @Override + public void run(SourceContext sourceContext) throws Exception { + while (running) { + Random random = new Random(); + + Map devsMap = new HashMap<>(); + for (int index = 0; index < 4; index++) { + if (random.nextInt(5) % 2 == 0) { + devsMap.put("device_" + (index + 1), (int) random.nextInt(100)); + } + } + for (String dev : devsMap.keySet()) { + int status = devsMap.get(dev) % 2 == 0 ? 0 : 1; + sourceContext.collect(new DeviceInfo(dev, status, devsMap.get(dev), Instant.now().getEpochSecond())); + } + TimeUnit.SECONDS.sleep(1); + } + } + + @Override + public void cancel() { + running = false; + } + } + + +} diff --git a/src/main/java/com/kedacom/apitest/window/WindowTest1.java b/src/main/java/com/kedacom/apitest/window/WindowTest1.java new file mode 100644 index 0000000..e7315bf --- /dev/null +++ b/src/main/java/com/kedacom/apitest/window/WindowTest1.java @@ -0,0 +1,116 @@ +package com.kedacom.apitest.window; + +import com.kedacom.apitest.source.SelfSourceTest; +import com.kedacom.pojo.DeviceInfo; +import org.apache.flink.api.common.functions.AggregateFunction; +import org.apache.flink.streaming.api.TimeCharacteristic; +import org.apache.flink.streaming.api.datastream.DataStream; +import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator; +import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; +import org.apache.flink.streaming.api.functions.source.SourceFunction; +import org.apache.flink.streaming.api.functions.windowing.WindowFunction; +import org.apache.flink.streaming.api.windowing.time.Time; +import org.apache.flink.streaming.api.windowing.windows.TimeWindow; +import org.apache.flink.util.Collector; + +import java.time.Instant; +import java.util.HashMap; +import java.util.Map; +import java.util.Random; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicReference; + +public class WindowTest1 { + public static void main(String[] args) throws Exception { + StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); + env.setStreamTimeCharacteristic(TimeCharacteristic.ProcessingTime); + env.setParallelism(1); + + + DataStream deviceStream = env.addSource(new DeviceSource()); + + // 1 开窗测试,增量聚合 + SingleOutputStreamOperator aggregate = deviceStream.keyBy(device -> device.getName()). +// window(EventTimeSessionWindows.withGap(Time.seconds(30))); +// countWindow(30); + timeWindow(Time.seconds(5)). +// window(TumblingEventTimeWindows.of(Time.seconds(30))). +// min("carNum"); + aggregate(new AggregateFunction() { + + @Override + public DeviceInfo createAccumulator() { + return new DeviceInfo(); + } + + @Override + public DeviceInfo add(DeviceInfo deviceInfo, DeviceInfo deviceInfo2) { + deviceInfo.setCarNum(deviceInfo.getCarNum() + deviceInfo2.getCarNum()); + return deviceInfo; + } + + @Override + public DeviceInfo getResult(DeviceInfo deviceInfo) { + return deviceInfo; + } + + @Override + public DeviceInfo merge(DeviceInfo deviceInfo, DeviceInfo acc1) { + return null; + } + }); + deviceStream.print("data"); + aggregate.print("agg"); + + // 2 全窗口测试 + SingleOutputStreamOperator apply = deviceStream.keyBy(devic -> devic.getName()) + .timeWindow(Time.seconds(5)) + .apply(new WindowFunction() { + @Override + public void apply(String s, TimeWindow timeWindow, Iterable iterable, Collector collector) throws Exception { + AtomicInteger total = new AtomicInteger(); + AtomicReference deviceInfo = new AtomicReference<>(); + iterable.forEach(dev -> { + total.addAndGet(dev.getCarNum()); + deviceInfo.set(dev); + }); + if(deviceInfo != null){ + deviceInfo.get().setCarNum(total.get()); + } + + collector.collect(deviceInfo.get()); + } + }); + apply.print("apply"); + + env.execute("device job"); + } + + public static class DeviceSource implements SourceFunction { + + private boolean running = true; + + @Override + public void run(SourceContext sourceContext) throws Exception { + while (running) { + Random random = new Random(); + + Map devsMap = new HashMap<>(); + for (int index = 0; index < 2; index++) { + devsMap.put("device_" + (index + 1), (int) random.nextInt(100)); + } + for (String dev : devsMap.keySet()) { + int status = devsMap.get(dev) % 2 == 0 ? 0 : 1; + sourceContext.collect(new DeviceInfo(dev, status, devsMap.get(dev), Instant.now().getEpochSecond())); + } + TimeUnit.SECONDS.sleep(2); + } + } + + @Override + public void cancel() { + running = false; + } + } +} diff --git a/src/main/java/com/kedacom/pojo/CarNumCount.java b/src/main/java/com/kedacom/pojo/CarNumCount.java new file mode 100644 index 0000000..fa1de2d --- /dev/null +++ b/src/main/java/com/kedacom/pojo/CarNumCount.java @@ -0,0 +1,14 @@ +package com.kedacom.pojo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class CarNumCount { + private String name; + private int totalCarNum; // 过车数量 + private Long timewindowEnd; +} diff --git a/src/main/java/com/kedacom/pojo/DeviceInfo.java b/src/main/java/com/kedacom/pojo/DeviceInfo.java new file mode 100644 index 0000000..86e866b --- /dev/null +++ b/src/main/java/com/kedacom/pojo/DeviceInfo.java @@ -0,0 +1,16 @@ +package com.kedacom.pojo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class DeviceInfo { + private String name; + private int status; + private int carNum; // 过车数量 + private long time; + +} diff --git a/src/main/java/com/kedacom/pojo/DeviceStatusStt.java b/src/main/java/com/kedacom/pojo/DeviceStatusStt.java new file mode 100644 index 0000000..c5a7f9f --- /dev/null +++ b/src/main/java/com/kedacom/pojo/DeviceStatusStt.java @@ -0,0 +1,16 @@ +package com.kedacom.pojo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class DeviceStatusStt { + private String name; + private int status; + private long continueDurationTime; // 持续在线/离线时长 + private int totalCarNum; // 过车数量 + private long time; // 最新时间 +} diff --git a/src/main/java/com/kedacom/wc/SocketWordCount.java b/src/main/java/com/kedacom/wc/SocketWordCount.java new file mode 100644 index 0000000..30aa5f6 --- /dev/null +++ b/src/main/java/com/kedacom/wc/SocketWordCount.java @@ -0,0 +1,52 @@ +package com.kedacom.wc; + +import lombok.extern.slf4j.Slf4j; +import org.apache.flink.api.common.functions.FlatMapFunction; +import org.apache.flink.api.java.tuple.Tuple2; +import org.apache.flink.api.java.utils.ParameterTool; +import org.apache.flink.streaming.api.datastream.DataStream; +import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; +import org.apache.flink.util.Collector; + +@Slf4j +// 提交参数 +// com.kedacom.wc.StreamWordCount +// --host 172.16.64.85 --port 9999 +public class SocketWordCount { + public static void main(String[] args) throws Exception { + System.out.println("test"); + log.info("socket wrod count test!"); + StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); + env.setParallelism(1); + + // 1 设置socket信息 + ParameterTool parameterTool = ParameterTool.fromArgs(args); + String host = parameterTool.get("host"); + int port = parameterTool.getInt("port"); +// String host = "172.16.64.85"; +// int port = 9999; + + + // 2 从socket读取数据 + DataStream inputDataStream = env.socketTextStream(host, port); + + DataStream> sum = inputDataStream.flatMap(new MyFlatMap()) + .keyBy(0) + .sum(1); + + sum.print("sum"); + + env.execute("socket stream word count job"); + } + + public static class MyFlatMap implements FlatMapFunction> { + + @Override + public void flatMap(String s, Collector> out) throws Exception { + String words[] = s.split(" "); + for(String word : words){ + out.collect(new Tuple2<>(word, 1)); + } + } + } +} diff --git a/src/main/java/com/kedacom/wc/StreamWordCount.java b/src/main/java/com/kedacom/wc/StreamWordCount.java new file mode 100644 index 0000000..00507e3 --- /dev/null +++ b/src/main/java/com/kedacom/wc/StreamWordCount.java @@ -0,0 +1,42 @@ +package com.kedacom.wc; + +import org.apache.flink.api.common.functions.FlatMapFunction; +import org.apache.flink.api.java.tuple.Tuple2; +import org.apache.flink.api.java.utils.ParameterTool; +import org.apache.flink.streaming.api.datastream.DataStream; +import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; +import org.apache.flink.util.Collector; + +// 提交参数 +// com.kedacom.wc.StreamWordCount +// --host 172.16.64.85 --port 9999 +public class StreamWordCount { + public static void main(String[] args) throws Exception { + System.out.println("test"); + StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); + env.setParallelism(2); + + // 1 用文件模拟流数据 + String file = "E:\\practice\\flink-test\\src\\main\\resources\\hello.txt"; + DataStream inputDataStream = env.readTextFile(file); + + DataStream> sum = inputDataStream.flatMap(new MyFlatMap()) + .keyBy(0) + .sum(1); + + sum.print(); + + env.execute(); + } + + public static class MyFlatMap implements FlatMapFunction> { + + @Override + public void flatMap(String s, Collector> out) throws Exception { + String words[] = s.split(" "); + for(String word : words){ + out.collect(new Tuple2<>(word, 1)); + } + } + } +} diff --git a/src/main/java/com/kedacom/wc/WordCount.java b/src/main/java/com/kedacom/wc/WordCount.java new file mode 100644 index 0000000..7d3f95b --- /dev/null +++ b/src/main/java/com/kedacom/wc/WordCount.java @@ -0,0 +1,35 @@ +package com.kedacom.wc; + +import org.apache.flink.api.common.functions.FlatMapFunction; +import org.apache.flink.api.java.DataSet; +import org.apache.flink.api.java.ExecutionEnvironment; +import org.apache.flink.api.java.tuple.Tuple2; +import org.apache.flink.util.Collector; + +public class WordCount { + public static void main(String[] args) throws Exception { + System.out.println("test"); + ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment(); + + String file = "E:\\practice\\flink-test\\src\\main\\resources\\hello.txt"; + DataSet data = env.readTextFile(file); + + DataSet> out = data + .flatMap(new MyFlatMap()) + .groupBy(0) + .sum(1); + + out.print(); + } + + public static class MyFlatMap implements FlatMapFunction> { + + @Override + public void flatMap(String s, Collector> out) throws Exception { + String words[] = s.split(" "); + for(String word : words){ + out.collect(new Tuple2<>(word, 1)); + } + } + } +} diff --git a/src/main/resources/carnum.txt b/src/main/resources/carnum.txt new file mode 100644 index 0000000..2be74d3 --- /dev/null +++ b/src/main/resources/carnum.txt @@ -0,0 +1,12 @@ +"dev_1",0,10,1625819869 +"dev_2",1,20,1625819869 +"dev_3",0,40,1625819869 +"dev_4",1,2,1625819869 +"dev_5",1,5,1625819869 +"dev_3",0,40,1625819870 +"dev_1",0,60,1625819873 +"dev_1",0,30,1625819875 +"dev_1",1,30,1625819880 +"dev_1",1,10,1625819895 +"dev_1",1,10,1625819869 +"dev_1",1,10,1625819999 \ No newline at end of file diff --git a/src/main/resources/deviceinfo.txt b/src/main/resources/deviceinfo.txt new file mode 100644 index 0000000..b4523df --- /dev/null +++ b/src/main/resources/deviceinfo.txt @@ -0,0 +1,12 @@ +"dev_1",0,10,1625819869 +"dev_1",0,10,1625819865 +"dev_2",1,20,1625819869 +"dev_3",0,40,1625819869 +"dev_4",1,2,1625819869 +"dev_5",1,5,1625819869 +"dev_3",0,40,1625819870 +"dev_1",0,60,1625819873 +"dev_1",0,30,1625819875 +"dev_1",1,30,1625819880 +"dev_1",1,10,1625819895 +"dev_1",1,10,1625857320 \ No newline at end of file diff --git a/src/main/resources/hello.txt b/src/main/resources/hello.txt new file mode 100644 index 0000000..4c3331a --- /dev/null +++ b/src/main/resources/hello.txt @@ -0,0 +1,6 @@ +hello world +hello scala +hello java +hello flink +test for flink +nothing \ No newline at end of file diff --git a/src/main/resources/log4j2.properties b/src/main/resources/log4j2.properties new file mode 100644 index 0000000..8e59a23 --- /dev/null +++ b/src/main/resources/log4j2.properties @@ -0,0 +1,28 @@ +################################################################################ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +################################################################################ + +rootLogger.level = WARNING +rootLogger.appenderRef.console.ref = ConsoleAppender + +logger.sink.name = org.apache.flink.walkthrough.common.sink.AlertSink +logger.sink.level = INFO + +appender.console.name = ConsoleAppender +appender.console.type = CONSOLE +appender.console.layout.type = PatternLayout +appender.console.layout.pattern = %d{HH:mm:ss,SSS} %-5p %-60c %x - %m%n diff --git a/target/classes/carnum.txt b/target/classes/carnum.txt new file mode 100644 index 0000000..2be74d3 --- /dev/null +++ b/target/classes/carnum.txt @@ -0,0 +1,12 @@ +"dev_1",0,10,1625819869 +"dev_2",1,20,1625819869 +"dev_3",0,40,1625819869 +"dev_4",1,2,1625819869 +"dev_5",1,5,1625819869 +"dev_3",0,40,1625819870 +"dev_1",0,60,1625819873 +"dev_1",0,30,1625819875 +"dev_1",1,30,1625819880 +"dev_1",1,10,1625819895 +"dev_1",1,10,1625819869 +"dev_1",1,10,1625819999 \ No newline at end of file diff --git a/target/classes/com/kedacom/apitest/function/StatusStatisticsByDay$1.class b/target/classes/com/kedacom/apitest/function/StatusStatisticsByDay$1.class new file mode 100644 index 0000000..2fe6ecf Binary files /dev/null and b/target/classes/com/kedacom/apitest/function/StatusStatisticsByDay$1.class differ diff --git a/target/classes/com/kedacom/apitest/function/StatusStatisticsByDay$ProcessDayStt$1.class b/target/classes/com/kedacom/apitest/function/StatusStatisticsByDay$ProcessDayStt$1.class new file mode 100644 index 0000000..2c8671b Binary files /dev/null and b/target/classes/com/kedacom/apitest/function/StatusStatisticsByDay$ProcessDayStt$1.class differ diff --git a/target/classes/com/kedacom/apitest/function/StatusStatisticsByDay$ProcessDayStt.class b/target/classes/com/kedacom/apitest/function/StatusStatisticsByDay$ProcessDayStt.class new file mode 100644 index 0000000..41791bb Binary files /dev/null and b/target/classes/com/kedacom/apitest/function/StatusStatisticsByDay$ProcessDayStt.class differ diff --git a/target/classes/com/kedacom/apitest/function/StatusStatisticsByDay.class b/target/classes/com/kedacom/apitest/function/StatusStatisticsByDay.class new file mode 100644 index 0000000..2e4f317 Binary files /dev/null and b/target/classes/com/kedacom/apitest/function/StatusStatisticsByDay.class differ diff --git a/target/classes/com/kedacom/apitest/function/TopNFunction$1.class b/target/classes/com/kedacom/apitest/function/TopNFunction$1.class new file mode 100644 index 0000000..b957315 Binary files /dev/null and b/target/classes/com/kedacom/apitest/function/TopNFunction$1.class differ diff --git a/target/classes/com/kedacom/apitest/function/TopNFunction$CarCountAgg.class b/target/classes/com/kedacom/apitest/function/TopNFunction$CarCountAgg.class new file mode 100644 index 0000000..ca694c5 Binary files /dev/null and b/target/classes/com/kedacom/apitest/function/TopNFunction$CarCountAgg.class differ diff --git a/target/classes/com/kedacom/apitest/function/TopNFunction$ResultWindow.class b/target/classes/com/kedacom/apitest/function/TopNFunction$ResultWindow.class new file mode 100644 index 0000000..a1b0a1a Binary files /dev/null and b/target/classes/com/kedacom/apitest/function/TopNFunction$ResultWindow.class differ diff --git a/target/classes/com/kedacom/apitest/function/TopNFunction$TopNHotCarNum$1.class b/target/classes/com/kedacom/apitest/function/TopNFunction$TopNHotCarNum$1.class new file mode 100644 index 0000000..0221c49 Binary files /dev/null and b/target/classes/com/kedacom/apitest/function/TopNFunction$TopNHotCarNum$1.class differ diff --git a/target/classes/com/kedacom/apitest/function/TopNFunction$TopNHotCarNum.class b/target/classes/com/kedacom/apitest/function/TopNFunction$TopNHotCarNum.class new file mode 100644 index 0000000..2711fc3 Binary files /dev/null and b/target/classes/com/kedacom/apitest/function/TopNFunction$TopNHotCarNum.class differ diff --git a/target/classes/com/kedacom/apitest/function/TopNFunction.class b/target/classes/com/kedacom/apitest/function/TopNFunction.class new file mode 100644 index 0000000..622c9d5 Binary files /dev/null and b/target/classes/com/kedacom/apitest/function/TopNFunction.class differ diff --git a/target/classes/com/kedacom/apitest/sink/KafkaSinkTest$DeviceSource.class b/target/classes/com/kedacom/apitest/sink/KafkaSinkTest$DeviceSource.class new file mode 100644 index 0000000..58c7ede Binary files /dev/null and b/target/classes/com/kedacom/apitest/sink/KafkaSinkTest$DeviceSource.class differ diff --git a/target/classes/com/kedacom/apitest/sink/KafkaSinkTest.class b/target/classes/com/kedacom/apitest/sink/KafkaSinkTest.class new file mode 100644 index 0000000..6079998 Binary files /dev/null and b/target/classes/com/kedacom/apitest/sink/KafkaSinkTest.class differ diff --git a/target/classes/com/kedacom/apitest/source/DeviceInfoReading.class b/target/classes/com/kedacom/apitest/source/DeviceInfoReading.class new file mode 100644 index 0000000..a711642 Binary files /dev/null and b/target/classes/com/kedacom/apitest/source/DeviceInfoReading.class differ diff --git a/target/classes/com/kedacom/apitest/source/KafkaSourceTest.class b/target/classes/com/kedacom/apitest/source/KafkaSourceTest.class new file mode 100644 index 0000000..2025ff3 Binary files /dev/null and b/target/classes/com/kedacom/apitest/source/KafkaSourceTest.class differ diff --git a/target/classes/com/kedacom/apitest/source/ReduceTest$DeviceSource.class b/target/classes/com/kedacom/apitest/source/ReduceTest$DeviceSource.class new file mode 100644 index 0000000..2143cf3 Binary files /dev/null and b/target/classes/com/kedacom/apitest/source/ReduceTest$DeviceSource.class differ diff --git a/target/classes/com/kedacom/apitest/source/ReduceTest.class b/target/classes/com/kedacom/apitest/source/ReduceTest.class new file mode 100644 index 0000000..dfdda5c Binary files /dev/null and b/target/classes/com/kedacom/apitest/source/ReduceTest.class differ diff --git a/target/classes/com/kedacom/apitest/source/SelfSourceTest$DeviceSource.class b/target/classes/com/kedacom/apitest/source/SelfSourceTest$DeviceSource.class new file mode 100644 index 0000000..ed62de7 Binary files /dev/null and b/target/classes/com/kedacom/apitest/source/SelfSourceTest$DeviceSource.class differ diff --git a/target/classes/com/kedacom/apitest/source/SelfSourceTest.class b/target/classes/com/kedacom/apitest/source/SelfSourceTest.class new file mode 100644 index 0000000..ba6e5f7 Binary files /dev/null and b/target/classes/com/kedacom/apitest/source/SelfSourceTest.class differ diff --git a/target/classes/com/kedacom/apitest/source/SplitStreamTest$1.class b/target/classes/com/kedacom/apitest/source/SplitStreamTest$1.class new file mode 100644 index 0000000..a5dc441 Binary files /dev/null and b/target/classes/com/kedacom/apitest/source/SplitStreamTest$1.class differ diff --git a/target/classes/com/kedacom/apitest/source/SplitStreamTest$2.class b/target/classes/com/kedacom/apitest/source/SplitStreamTest$2.class new file mode 100644 index 0000000..b25e7d2 Binary files /dev/null and b/target/classes/com/kedacom/apitest/source/SplitStreamTest$2.class differ diff --git a/target/classes/com/kedacom/apitest/source/SplitStreamTest$3.class b/target/classes/com/kedacom/apitest/source/SplitStreamTest$3.class new file mode 100644 index 0000000..8eb2b08 Binary files /dev/null and b/target/classes/com/kedacom/apitest/source/SplitStreamTest$3.class differ diff --git a/target/classes/com/kedacom/apitest/source/SplitStreamTest$DeviceSource.class b/target/classes/com/kedacom/apitest/source/SplitStreamTest$DeviceSource.class new file mode 100644 index 0000000..ae27ffd Binary files /dev/null and b/target/classes/com/kedacom/apitest/source/SplitStreamTest$DeviceSource.class differ diff --git a/target/classes/com/kedacom/apitest/source/SplitStreamTest.class b/target/classes/com/kedacom/apitest/source/SplitStreamTest.class new file mode 100644 index 0000000..4724414 Binary files /dev/null and b/target/classes/com/kedacom/apitest/source/SplitStreamTest.class differ diff --git a/target/classes/com/kedacom/apitest/state/KeyedStateApplicationTest$StatusSttFunction.class b/target/classes/com/kedacom/apitest/state/KeyedStateApplicationTest$StatusSttFunction.class new file mode 100644 index 0000000..d416c34 Binary files /dev/null and b/target/classes/com/kedacom/apitest/state/KeyedStateApplicationTest$StatusSttFunction.class differ diff --git a/target/classes/com/kedacom/apitest/state/KeyedStateApplicationTest.class b/target/classes/com/kedacom/apitest/state/KeyedStateApplicationTest.class new file mode 100644 index 0000000..28a9b21 Binary files /dev/null and b/target/classes/com/kedacom/apitest/state/KeyedStateApplicationTest.class differ diff --git a/target/classes/com/kedacom/apitest/state/KeyedStateTest$MyKeyedState.class b/target/classes/com/kedacom/apitest/state/KeyedStateTest$MyKeyedState.class new file mode 100644 index 0000000..c00fbdd Binary files /dev/null and b/target/classes/com/kedacom/apitest/state/KeyedStateTest$MyKeyedState.class differ diff --git a/target/classes/com/kedacom/apitest/state/KeyedStateTest.class b/target/classes/com/kedacom/apitest/state/KeyedStateTest.class new file mode 100644 index 0000000..7b1ffae Binary files /dev/null and b/target/classes/com/kedacom/apitest/state/KeyedStateTest.class differ diff --git a/target/classes/com/kedacom/apitest/state/OpetateStateTest$CountMapper.class b/target/classes/com/kedacom/apitest/state/OpetateStateTest$CountMapper.class new file mode 100644 index 0000000..d7048e3 Binary files /dev/null and b/target/classes/com/kedacom/apitest/state/OpetateStateTest$CountMapper.class differ diff --git a/target/classes/com/kedacom/apitest/state/OpetateStateTest$MyCountMapper.class b/target/classes/com/kedacom/apitest/state/OpetateStateTest$MyCountMapper.class new file mode 100644 index 0000000..10ad1ed Binary files /dev/null and b/target/classes/com/kedacom/apitest/state/OpetateStateTest$MyCountMapper.class differ diff --git a/target/classes/com/kedacom/apitest/state/OpetateStateTest.class b/target/classes/com/kedacom/apitest/state/OpetateStateTest.class new file mode 100644 index 0000000..afdce7f Binary files /dev/null and b/target/classes/com/kedacom/apitest/state/OpetateStateTest.class differ diff --git a/target/classes/com/kedacom/apitest/tableapi/TableTest1$1.class b/target/classes/com/kedacom/apitest/tableapi/TableTest1$1.class new file mode 100644 index 0000000..1b824d1 Binary files /dev/null and b/target/classes/com/kedacom/apitest/tableapi/TableTest1$1.class differ diff --git a/target/classes/com/kedacom/apitest/tableapi/TableTest1.class b/target/classes/com/kedacom/apitest/tableapi/TableTest1.class new file mode 100644 index 0000000..0b11fca Binary files /dev/null and b/target/classes/com/kedacom/apitest/tableapi/TableTest1.class differ diff --git a/target/classes/com/kedacom/apitest/tableapi/udf/UdfAggregateFunctionTest$AverageCarNum.class b/target/classes/com/kedacom/apitest/tableapi/udf/UdfAggregateFunctionTest$AverageCarNum.class new file mode 100644 index 0000000..e60ca43 Binary files /dev/null and b/target/classes/com/kedacom/apitest/tableapi/udf/UdfAggregateFunctionTest$AverageCarNum.class differ diff --git a/target/classes/com/kedacom/apitest/tableapi/udf/UdfAggregateFunctionTest.class b/target/classes/com/kedacom/apitest/tableapi/udf/UdfAggregateFunctionTest.class new file mode 100644 index 0000000..e30272d Binary files /dev/null and b/target/classes/com/kedacom/apitest/tableapi/udf/UdfAggregateFunctionTest.class differ diff --git a/target/classes/com/kedacom/apitest/tableapi/udf/UdfScalarFunctionTest$HashCode.class b/target/classes/com/kedacom/apitest/tableapi/udf/UdfScalarFunctionTest$HashCode.class new file mode 100644 index 0000000..dc446ee Binary files /dev/null and b/target/classes/com/kedacom/apitest/tableapi/udf/UdfScalarFunctionTest$HashCode.class differ diff --git a/target/classes/com/kedacom/apitest/tableapi/udf/UdfScalarFunctionTest.class b/target/classes/com/kedacom/apitest/tableapi/udf/UdfScalarFunctionTest.class new file mode 100644 index 0000000..a979ec1 Binary files /dev/null and b/target/classes/com/kedacom/apitest/tableapi/udf/UdfScalarFunctionTest.class differ diff --git a/target/classes/com/kedacom/apitest/tableapi/udf/UdfTableFunctionTest$SplitName.class b/target/classes/com/kedacom/apitest/tableapi/udf/UdfTableFunctionTest$SplitName.class new file mode 100644 index 0000000..36d4190 Binary files /dev/null and b/target/classes/com/kedacom/apitest/tableapi/udf/UdfTableFunctionTest$SplitName.class differ diff --git a/target/classes/com/kedacom/apitest/tableapi/udf/UdfTableFunctionTest.class b/target/classes/com/kedacom/apitest/tableapi/udf/UdfTableFunctionTest.class new file mode 100644 index 0000000..eeaebde Binary files /dev/null and b/target/classes/com/kedacom/apitest/tableapi/udf/UdfTableFunctionTest.class differ diff --git a/target/classes/com/kedacom/apitest/window/SocketWindowTest$1.class b/target/classes/com/kedacom/apitest/window/SocketWindowTest$1.class new file mode 100644 index 0000000..d813a37 Binary files /dev/null and b/target/classes/com/kedacom/apitest/window/SocketWindowTest$1.class differ diff --git a/target/classes/com/kedacom/apitest/window/SocketWindowTest$2.class b/target/classes/com/kedacom/apitest/window/SocketWindowTest$2.class new file mode 100644 index 0000000..348aa97 Binary files /dev/null and b/target/classes/com/kedacom/apitest/window/SocketWindowTest$2.class differ diff --git a/target/classes/com/kedacom/apitest/window/SocketWindowTest$3.class b/target/classes/com/kedacom/apitest/window/SocketWindowTest$3.class new file mode 100644 index 0000000..4dd419b Binary files /dev/null and b/target/classes/com/kedacom/apitest/window/SocketWindowTest$3.class differ diff --git a/target/classes/com/kedacom/apitest/window/SocketWindowTest.class b/target/classes/com/kedacom/apitest/window/SocketWindowTest.class new file mode 100644 index 0000000..f27dffe Binary files /dev/null and b/target/classes/com/kedacom/apitest/window/SocketWindowTest.class differ diff --git a/target/classes/com/kedacom/apitest/window/WatermarkTest$CarCountAgg.class b/target/classes/com/kedacom/apitest/window/WatermarkTest$CarCountAgg.class new file mode 100644 index 0000000..f378db6 Binary files /dev/null and b/target/classes/com/kedacom/apitest/window/WatermarkTest$CarCountAgg.class differ diff --git a/target/classes/com/kedacom/apitest/window/WatermarkTest$DeviceSource.class b/target/classes/com/kedacom/apitest/window/WatermarkTest$DeviceSource.class new file mode 100644 index 0000000..dfb90a0 Binary files /dev/null and b/target/classes/com/kedacom/apitest/window/WatermarkTest$DeviceSource.class differ diff --git a/target/classes/com/kedacom/apitest/window/WatermarkTest$MyTimeAssigner$1.class b/target/classes/com/kedacom/apitest/window/WatermarkTest$MyTimeAssigner$1.class new file mode 100644 index 0000000..80b18cf Binary files /dev/null and b/target/classes/com/kedacom/apitest/window/WatermarkTest$MyTimeAssigner$1.class differ diff --git a/target/classes/com/kedacom/apitest/window/WatermarkTest$MyTimeAssigner.class b/target/classes/com/kedacom/apitest/window/WatermarkTest$MyTimeAssigner.class new file mode 100644 index 0000000..f3a879b Binary files /dev/null and b/target/classes/com/kedacom/apitest/window/WatermarkTest$MyTimeAssigner.class differ diff --git a/target/classes/com/kedacom/apitest/window/WatermarkTest$MyTimestampAndWatermarks$1.class b/target/classes/com/kedacom/apitest/window/WatermarkTest$MyTimestampAndWatermarks$1.class new file mode 100644 index 0000000..a748f01 Binary files /dev/null and b/target/classes/com/kedacom/apitest/window/WatermarkTest$MyTimestampAndWatermarks$1.class differ diff --git a/target/classes/com/kedacom/apitest/window/WatermarkTest$MyTimestampAndWatermarks.class b/target/classes/com/kedacom/apitest/window/WatermarkTest$MyTimestampAndWatermarks.class new file mode 100644 index 0000000..5718ab2 Binary files /dev/null and b/target/classes/com/kedacom/apitest/window/WatermarkTest$MyTimestampAndWatermarks.class differ diff --git a/target/classes/com/kedacom/apitest/window/WatermarkTest$ResultWindow.class b/target/classes/com/kedacom/apitest/window/WatermarkTest$ResultWindow.class new file mode 100644 index 0000000..9a3dcef Binary files /dev/null and b/target/classes/com/kedacom/apitest/window/WatermarkTest$ResultWindow.class differ diff --git a/target/classes/com/kedacom/apitest/window/WatermarkTest$TopNHotCarNum$1.class b/target/classes/com/kedacom/apitest/window/WatermarkTest$TopNHotCarNum$1.class new file mode 100644 index 0000000..deae124 Binary files /dev/null and b/target/classes/com/kedacom/apitest/window/WatermarkTest$TopNHotCarNum$1.class differ diff --git a/target/classes/com/kedacom/apitest/window/WatermarkTest$TopNHotCarNum.class b/target/classes/com/kedacom/apitest/window/WatermarkTest$TopNHotCarNum.class new file mode 100644 index 0000000..54026c3 Binary files /dev/null and b/target/classes/com/kedacom/apitest/window/WatermarkTest$TopNHotCarNum.class differ diff --git a/target/classes/com/kedacom/apitest/window/WatermarkTest.class b/target/classes/com/kedacom/apitest/window/WatermarkTest.class new file mode 100644 index 0000000..0c79465 Binary files /dev/null and b/target/classes/com/kedacom/apitest/window/WatermarkTest.class differ diff --git a/target/classes/com/kedacom/apitest/window/WindowTest1$1.class b/target/classes/com/kedacom/apitest/window/WindowTest1$1.class new file mode 100644 index 0000000..70b1697 Binary files /dev/null and b/target/classes/com/kedacom/apitest/window/WindowTest1$1.class differ diff --git a/target/classes/com/kedacom/apitest/window/WindowTest1$2.class b/target/classes/com/kedacom/apitest/window/WindowTest1$2.class new file mode 100644 index 0000000..e57f71f Binary files /dev/null and b/target/classes/com/kedacom/apitest/window/WindowTest1$2.class differ diff --git a/target/classes/com/kedacom/apitest/window/WindowTest1$DeviceSource.class b/target/classes/com/kedacom/apitest/window/WindowTest1$DeviceSource.class new file mode 100644 index 0000000..c561a80 Binary files /dev/null and b/target/classes/com/kedacom/apitest/window/WindowTest1$DeviceSource.class differ diff --git a/target/classes/com/kedacom/apitest/window/WindowTest1.class b/target/classes/com/kedacom/apitest/window/WindowTest1.class new file mode 100644 index 0000000..cdf0aa5 Binary files /dev/null and b/target/classes/com/kedacom/apitest/window/WindowTest1.class differ diff --git a/target/classes/com/kedacom/pojo/CarNumCount.class b/target/classes/com/kedacom/pojo/CarNumCount.class new file mode 100644 index 0000000..90da894 Binary files /dev/null and b/target/classes/com/kedacom/pojo/CarNumCount.class differ diff --git a/target/classes/com/kedacom/pojo/DeviceInfo.class b/target/classes/com/kedacom/pojo/DeviceInfo.class new file mode 100644 index 0000000..724750c Binary files /dev/null and b/target/classes/com/kedacom/pojo/DeviceInfo.class differ diff --git a/target/classes/com/kedacom/pojo/DeviceStatusStt.class b/target/classes/com/kedacom/pojo/DeviceStatusStt.class new file mode 100644 index 0000000..46ce747 Binary files /dev/null and b/target/classes/com/kedacom/pojo/DeviceStatusStt.class differ diff --git a/target/classes/com/kedacom/wc/SocketWordCount$MyFlatMap.class b/target/classes/com/kedacom/wc/SocketWordCount$MyFlatMap.class new file mode 100644 index 0000000..93ac88e Binary files /dev/null and b/target/classes/com/kedacom/wc/SocketWordCount$MyFlatMap.class differ diff --git a/target/classes/com/kedacom/wc/SocketWordCount.class b/target/classes/com/kedacom/wc/SocketWordCount.class new file mode 100644 index 0000000..801a4d9 Binary files /dev/null and b/target/classes/com/kedacom/wc/SocketWordCount.class differ diff --git a/target/classes/com/kedacom/wc/StreamWordCount$MyFlatMap.class b/target/classes/com/kedacom/wc/StreamWordCount$MyFlatMap.class new file mode 100644 index 0000000..7b8d10a Binary files /dev/null and b/target/classes/com/kedacom/wc/StreamWordCount$MyFlatMap.class differ diff --git a/target/classes/com/kedacom/wc/StreamWordCount.class b/target/classes/com/kedacom/wc/StreamWordCount.class new file mode 100644 index 0000000..0c34fb6 Binary files /dev/null and b/target/classes/com/kedacom/wc/StreamWordCount.class differ diff --git a/target/classes/com/kedacom/wc/WordCount$MyFlatMap.class b/target/classes/com/kedacom/wc/WordCount$MyFlatMap.class new file mode 100644 index 0000000..6adac09 Binary files /dev/null and b/target/classes/com/kedacom/wc/WordCount$MyFlatMap.class differ diff --git a/target/classes/com/kedacom/wc/WordCount.class b/target/classes/com/kedacom/wc/WordCount.class new file mode 100644 index 0000000..7545839 Binary files /dev/null and b/target/classes/com/kedacom/wc/WordCount.class differ diff --git a/target/classes/deviceinfo.txt b/target/classes/deviceinfo.txt new file mode 100644 index 0000000..b4523df --- /dev/null +++ b/target/classes/deviceinfo.txt @@ -0,0 +1,12 @@ +"dev_1",0,10,1625819869 +"dev_1",0,10,1625819865 +"dev_2",1,20,1625819869 +"dev_3",0,40,1625819869 +"dev_4",1,2,1625819869 +"dev_5",1,5,1625819869 +"dev_3",0,40,1625819870 +"dev_1",0,60,1625819873 +"dev_1",0,30,1625819875 +"dev_1",1,30,1625819880 +"dev_1",1,10,1625819895 +"dev_1",1,10,1625857320 \ No newline at end of file diff --git a/target/classes/hello.txt b/target/classes/hello.txt new file mode 100644 index 0000000..4c3331a --- /dev/null +++ b/target/classes/hello.txt @@ -0,0 +1,6 @@ +hello world +hello scala +hello java +hello flink +test for flink +nothing \ No newline at end of file diff --git a/target/classes/log4j2.properties b/target/classes/log4j2.properties new file mode 100644 index 0000000..8e59a23 --- /dev/null +++ b/target/classes/log4j2.properties @@ -0,0 +1,28 @@ +################################################################################ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +################################################################################ + +rootLogger.level = WARNING +rootLogger.appenderRef.console.ref = ConsoleAppender + +logger.sink.name = org.apache.flink.walkthrough.common.sink.AlertSink +logger.sink.level = INFO + +appender.console.name = ConsoleAppender +appender.console.type = CONSOLE +appender.console.layout.type = PatternLayout +appender.console.layout.pattern = %d{HH:mm:ss,SSS} %-5p %-60c %x - %m%n diff --git a/target/flink-test-1.0-SNAPSHOT.jar b/target/flink-test-1.0-SNAPSHOT.jar new file mode 100644 index 0000000..1dc38dd Binary files /dev/null and b/target/flink-test-1.0-SNAPSHOT.jar differ diff --git a/target/maven-archiver/pom.properties b/target/maven-archiver/pom.properties new file mode 100644 index 0000000..f517484 --- /dev/null +++ b/target/maven-archiver/pom.properties @@ -0,0 +1,5 @@ +#Generated by Maven +#Tue Aug 10 17:07:38 CST 2021 +version=1.0-SNAPSHOT +groupId=org.kedacom +artifactId=flink-test diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..a649ebf --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,65 @@ +com\kedacom\apitest\window\SocketWindowTest$1.class +com\kedacom\apitest\window\WatermarkTest$MyTimeAssigner$1.class +com\kedacom\apitest\sink\KafkaSinkTest.class +com\kedacom\apitest\tableapi\TableTest1$1.class +com\kedacom\apitest\window\WatermarkTest$TopNHotCarNum.class +com\kedacom\apitest\function\StatusStatisticsByDay$ProcessDayStt$1.class +com\kedacom\apitest\source\SplitStreamTest$DeviceSource.class +com\kedacom\apitest\function\StatusStatisticsByDay$1.class +com\kedacom\apitest\source\SelfSourceTest.class +com\kedacom\wc\StreamWordCount$MyFlatMap.class +com\kedacom\apitest\source\KafkaSourceTest.class +com\kedacom\apitest\function\TopNFunction$1.class +com\kedacom\pojo\CarNumCount.class +com\kedacom\apitest\window\WatermarkTest.class +com\kedacom\apitest\function\TopNFunction$TopNHotCarNum.class +com\kedacom\apitest\window\WatermarkTest$MyTimestampAndWatermarks.class +com\kedacom\apitest\sink\KafkaSinkTest$DeviceSource.class +com\kedacom\apitest\state\OpetateStateTest$CountMapper.class +com\kedacom\apitest\tableapi\udf\UdfTableFunctionTest$SplitName.class +com\kedacom\apitest\source\SplitStreamTest$3.class +com\kedacom\apitest\source\SplitStreamTest$1.class +com\kedacom\apitest\tableapi\udf\UdfTableFunctionTest.class +com\kedacom\apitest\state\KeyedStateApplicationTest$StatusSttFunction.class +com\kedacom\apitest\window\WatermarkTest$TopNHotCarNum$1.class +com\kedacom\apitest\source\ReduceTest.class +com\kedacom\apitest\function\StatusStatisticsByDay.class +com\kedacom\apitest\source\SelfSourceTest$DeviceSource.class +com\kedacom\apitest\state\OpetateStateTest.class +com\kedacom\apitest\window\WindowTest1$1.class +com\kedacom\apitest\state\KeyedStateApplicationTest.class +com\kedacom\apitest\window\SocketWindowTest$3.class +com\kedacom\apitest\function\TopNFunction$ResultWindow.class +com\kedacom\apitest\tableapi\udf\UdfScalarFunctionTest$HashCode.class +com\kedacom\apitest\window\WatermarkTest$DeviceSource.class +com\kedacom\apitest\tableapi\udf\UdfAggregateFunctionTest$AverageCarNum.class +com\kedacom\apitest\window\WatermarkTest$CarCountAgg.class +com\kedacom\apitest\state\KeyedStateTest$MyKeyedState.class +com\kedacom\apitest\window\WatermarkTest$MyTimeAssigner.class +com\kedacom\wc\WordCount.class +com\kedacom\apitest\source\ReduceTest$DeviceSource.class +com\kedacom\apitest\source\DeviceInfoReading.class +com\kedacom\pojo\DeviceStatusStt.class +com\kedacom\apitest\function\StatusStatisticsByDay$ProcessDayStt.class +com\kedacom\apitest\window\SocketWindowTest$2.class +com\kedacom\apitest\window\WindowTest1$2.class +com\kedacom\apitest\window\WindowTest1$DeviceSource.class +com\kedacom\apitest\window\WatermarkTest$ResultWindow.class +com\kedacom\apitest\tableapi\TableTest1.class +com\kedacom\pojo\DeviceInfo.class +com\kedacom\apitest\tableapi\udf\UdfScalarFunctionTest.class +com\kedacom\wc\WordCount$MyFlatMap.class +com\kedacom\wc\StreamWordCount.class +com\kedacom\apitest\source\SplitStreamTest.class +com\kedacom\apitest\state\KeyedStateTest.class +com\kedacom\wc\SocketWordCount$MyFlatMap.class +com\kedacom\apitest\window\SocketWindowTest.class +com\kedacom\wc\SocketWordCount.class +com\kedacom\apitest\state\OpetateStateTest$MyCountMapper.class +com\kedacom\apitest\function\TopNFunction$CarCountAgg.class +com\kedacom\apitest\function\TopNFunction.class +com\kedacom\apitest\window\WindowTest1.class +com\kedacom\apitest\window\WatermarkTest$MyTimestampAndWatermarks$1.class +com\kedacom\apitest\function\TopNFunction$TopNHotCarNum$1.class +com\kedacom\apitest\source\SplitStreamTest$2.class +com\kedacom\apitest\tableapi\udf\UdfAggregateFunctionTest.class diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..30e5e02 --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,24 @@ +E:\practice\flink-test\src\main\java\com\kedacom\pojo\DeviceStatusStt.java +E:\practice\flink-test\src\main\java\com\kedacom\apitest\source\KafkaSourceTest.java +E:\practice\flink-test\src\main\java\com\kedacom\apitest\source\DeviceInfoReading.java +E:\practice\flink-test\src\main\java\com\kedacom\apitest\source\ReduceTest.java +E:\practice\flink-test\src\main\java\com\kedacom\wc\StreamWordCount.java +E:\practice\flink-test\src\main\java\com\kedacom\apitest\function\StatusStatisticsByDay.java +E:\practice\flink-test\src\main\java\com\kedacom\apitest\window\SocketWindowTest.java +E:\practice\flink-test\src\main\java\com\kedacom\apitest\sink\KafkaSinkTest.java +E:\practice\flink-test\src\main\java\com\kedacom\apitest\state\KeyedStateTest.java +E:\practice\flink-test\src\main\java\com\kedacom\pojo\DeviceInfo.java +E:\practice\flink-test\src\main\java\com\kedacom\apitest\tableapi\udf\UdfAggregateFunctionTest.java +E:\practice\flink-test\src\main\java\com\kedacom\apitest\function\TopNFunction.java +E:\practice\flink-test\src\main\java\com\kedacom\apitest\window\WatermarkTest.java +E:\practice\flink-test\src\main\java\com\kedacom\apitest\window\WindowTest1.java +E:\practice\flink-test\src\main\java\com\kedacom\apitest\source\SelfSourceTest.java +E:\practice\flink-test\src\main\java\com\kedacom\apitest\state\KeyedStateApplicationTest.java +E:\practice\flink-test\src\main\java\com\kedacom\apitest\tableapi\TableTest1.java +E:\practice\flink-test\src\main\java\com\kedacom\wc\SocketWordCount.java +E:\practice\flink-test\src\main\java\com\kedacom\pojo\CarNumCount.java +E:\practice\flink-test\src\main\java\com\kedacom\wc\WordCount.java +E:\practice\flink-test\src\main\java\com\kedacom\apitest\tableapi\udf\UdfScalarFunctionTest.java +E:\practice\flink-test\src\main\java\com\kedacom\apitest\source\SplitStreamTest.java +E:\practice\flink-test\src\main\java\com\kedacom\apitest\tableapi\udf\UdfTableFunctionTest.java +E:\practice\flink-test\src\main\java\com\kedacom\apitest\state\OpetateStateTest.java diff --git a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst new file mode 100644 index 0000000..e69de29