[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6ACDHGVH4F8ADMCFR7T34H8":3,"skill-same:01M6ACDHGVH4F8ADMCFR7T34H8":91},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":44,"commitSha":45,"skillDirectory":46,"forksCount":47,"repositoryHtmlUrl":48,"repositoryHomepageUrl":49,"ownerHtmlUrl":50,"ownerBlogUrl":51,"ownerDescription":6,"updatedAt":52,"install":53,"resources":66},"01M6ACDHGVH4F8ADMCFR7T34H8","io-connectors",null,"Guides development and usage of I\u002FO connectors in Apache Beam. Use when working with I\u002FO connectors, creating new connectors, or debugging data source\u002Fsink issues.","apache\u002Fbeam","apache","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F47359?v=4","01M6AC83E6K4FDKK7HZ8WNMQKE","The Apache Software Foundation","01M6ACCXED4SMY85J25QX8K9SY",8718,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fapache\u002Fbeam\u002Fblob\u002Fmaster\u002F.agent\u002Fskills\u002Fio-connectors\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[24,25,26,27,28,29,30,9,31,32,33,34,35,36,37,38],"connectors","io connectors","io","beam","debugging","development","issues","data","use","guides","with","usage","source","when","new","2026-11-10 10:12:30",false,"---\n# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE file\n# distributed with this work for additional information\n# regarding copyright ownership.  The ASF licenses this file\n# to you under the Apache License, Version 2.0 (the\n# \"License\"); you may not use this file except in compliance\n# with the License.  You may obtain a copy of the License at\n#\n#   http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing,\n# software distributed under the License is distributed on an\n# \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n# KIND, either express or implied.  See the License for the\n# specific language governing permissions and limitations\n# under the License.\n\nname: io-connectors\ndescription: Guides development and usage of I\u002FO connectors in Apache Beam. Use when working with I\u002FO connectors, creating new connectors, or debugging data source\u002Fsink issues.\n---\n\n# I\u002FO Connectors in Apache Beam\n\n## Overview\nI\u002FO connectors enable reading from and writing to external data sources. Beam provides 51+ Java I\u002FO connectors and several Python connectors.\n\n## Java I\u002FO Connectors Location\n`sdks\u002Fjava\u002Fio\u002F`\n\n### Available Connectors\n| Category | Connectors |\n|----------|------------|\n| Cloud Storage | google-cloud-platform (BigQuery, Bigtable, Spanner, Pub\u002FSub, GCS), amazon-web-services2, azure, azure-cosmos |\n| Databases | jdbc, mongodb, cassandra, hbase, redis, neo4j, clickhouse, influxdb, singlestore, elasticsearch |\n| Messaging | kafka, pulsar, rabbitmq, amqp, jms, mqtt, solace |\n| File Formats | parquet, csv, json, xml, thrift, iceberg |\n| Other | snowflake, splunk, cdap, debezium, hadoop-format, kudu, solr, tika |\n\n## Testing I\u002FO Connectors\n\n### Unit Tests\n```bash\n.\u002Fgradlew :sdks:java:io:kafka:test\n.\u002Fgradlew :sdks:java:io:jdbc:test\n```\n\n### Integration Tests\n\n#### On Direct Runner\n```bash\n.\u002Fgradlew :sdks:java:io:google-cloud-platform:integrationTest\n```\n\n#### With Custom GCP Settings\n```bash\n.\u002Fgradlew :sdks:java:io:google-cloud-platform:integrationTest \\\n  -PgcpProject=\u003Cproject> \\\n  -PgcpTempRoot=gs:\u002F\u002F\u003Cbucket>\u002Fpath\n```\n\n#### With Explicit Pipeline Options\n```bash\n.\u002Fgradlew :sdks:java:io:jdbc:integrationTest \\\n  -DbeamTestPipelineOptions='[\"--runner=TestDirectRunner\"]'\n```\n\n## Integration Test Framework\nLocated at `it\u002F` directory:\n- `it\u002Fcommon\u002F` - Common test utilities\n- `it\u002Fgoogle-cloud-platform\u002F` - GCP-specific test infrastructure\n- `it\u002Fjdbc\u002F` - JDBC test infrastructure\n- `it\u002Fkafka\u002F` - Kafka test infrastructure\n- `it\u002Ftestcontainers\u002F` - Testcontainers support\n\n## Writing Integration Tests\n\n### Basic Structure\n```java\n@RunWith(JUnit4.class)\npublic class MyIOIT {\n  @Rule public TestPipeline readPipeline = TestPipeline.create();\n  @Rule public TestPipeline writePipeline = TestPipeline.create();\n\n  @Test\n  public void testWriteAndRead() {\n    \u002F\u002F Write data\n    writePipeline.apply(Create.of(testData))\n                 .apply(MyIO.write().to(destination));\n    writePipeline.run().waitUntilFinish();\n\n    \u002F\u002F Read and verify\n    PCollection\u003CString> results = readPipeline.apply(MyIO.read().from(destination));\n    PAssert.that(results).containsInAnyOrder(expectedData);\n    readPipeline.run().waitUntilFinish();\n  }\n}\n```\n\n### Using TestPipeline\n```java\n@Rule public TestPipeline pipeline = TestPipeline.create();\n```\n\nTestPipeline:\n- Blocks on run by default (on TestDataflowRunner)\n- Has 15-minute default timeout\n- Reads options from `beamTestPipelineOptions` system property\n\n## GCP I\u002FO Connectors\n\n### BigQuery\n```java\n\u002F\u002F Read\npipeline.apply(BigQueryIO.readTableRows().from(\"project:dataset.table\"));\n\n\u002F\u002F Write\ndata.apply(BigQueryIO.writeTableRows()\n    .to(\"project:dataset.table\")\n    .withSchema(schema)\n    .withWriteDisposition(WriteDisposition.WRITE_APPEND));\n```\n\n### Pub\u002FSub\n```java\n\u002F\u002F Read\npipeline.apply(PubsubIO.readStrings().fromTopic(\"projects\u002Fproject\u002Ftopics\u002Ftopic\"));\n\n\u002F\u002F Write\ndata.apply(PubsubIO.writeStrings().to(\"projects\u002Fproject\u002Ftopics\u002Ftopic\"));\n```\n\n### Cloud Storage (TextIO)\n```java\n\u002F\u002F Read\npipeline.apply(TextIO.read().from(\"gs:\u002F\u002Fbucket\u002Fpath\u002F*.txt\"));\n\n\u002F\u002F Write\ndata.apply(TextIO.write().to(\"gs:\u002F\u002Fbucket\u002Foutput\").withSuffix(\".txt\"));\n```\n\n## Kafka Connector\n```java\n\u002F\u002F Read\npipeline.apply(KafkaIO.\u003CString, String>read()\n    .withBootstrapServers(\"localhost:9092\")\n    .withTopic(\"topic\")\n    .withKeyDeserializer(StringDeserializer.class)\n    .withValueDeserializer(StringDeserializer.class));\n\n\u002F\u002F Write\ndata.apply(KafkaIO.\u003CString, String>write()\n    .withBootstrapServers(\"localhost:9092\")\n    .withTopic(\"topic\")\n    .withKeySerializer(StringSerializer.class)\n    .withValueSerializer(StringSerializer.class));\n```\n\n## JDBC Connector\n```java\n\u002F\u002F Read\npipeline.apply(JdbcIO.\u003CRow>read()\n    .withDataSourceConfiguration(JdbcIO.DataSourceConfiguration\n        .create(\"org.postgresql.Driver\", \"jdbc:postgresql:\u002F\u002Fhost\u002Fdb\"))\n    .withQuery(\"SELECT * FROM table\"));\n\n\u002F\u002F Write\ndata.apply(JdbcIO.\u003CRow>write()\n    .withDataSourceConfiguration(config)\n    .withStatement(\"INSERT INTO table VALUES (?, ?)\"));\n```\n\n## Python I\u002FO Location\n`sdks\u002Fpython\u002Fapache_beam\u002Fio\u002F`\n\n### Common Python I\u002FOs\n- `textio` - Text files\n- `fileio` - General file operations\n- `avroio` - Avro files\n- `parquetio` - Parquet files\n- `gcp\u002F` - GCP connectors (BigQuery, Pub\u002FSub, Datastore, etc.)\n\n## Cross-language I\u002FO\nBeam supports using I\u002FO connectors from one SDK in another via the expansion service.\n\n```bash\n# Start Java expansion service\n.\u002Fgradlew :sdks:java:io:expansion-service:runExpansionService\n```\n\n## Creating New Connectors\n\nKey components:\n1. **Source** - Reads data (bounded or unbounded)\n2. **Sink** - Writes data\n3. **Read\u002FWrite transforms** - User-facing API\n\nFor more detailed information on developing new I\u002FO connectors see the [Developing new I\u002FO connectors SKILL](..\u002Fdeveloping-new-io-connectors\u002FSKILL.md).","# I\u002FO Connectors in Apache Beam\n\n## Overview\nI\u002FO connectors enable reading from and writing to external data sources. Beam provides 51+ Java I\u002FO connectors and several Python connectors.\n\n## Java I\u002FO Connectors Location\n`sdks\u002Fjava\u002Fio\u002F`\n\n### Available Connectors\n| Category | Connectors |\n|----------|------------|\n| Cloud Storage | google-cloud-platform (BigQuery, Bigtable, Spanner, Pub\u002FSub, GCS), amazon-web-services2, azure, azure-cosmos |\n| Databases | jdbc, mongodb, cassandra, hbase, redis, neo4j, clickhouse, influxdb, singlestore, elasticsearch |\n| Messaging | kafka, pulsar, rabbitmq, amqp, jms, mqtt, solace |\n| File Formats | parquet, csv, json, xml, thrift, iceberg |\n| Other | snowflake, splunk, cdap, debezium, hadoop-format, kudu, solr, tika |\n\n## Testing I\u002FO Connectors\n\n### Unit Tests\n```bash\n.\u002Fgradlew :sdks:java:io:kafka:test\n.\u002Fgradlew :sdks:java:io:jdbc:test\n```\n\n### Integration Tests\n\n#### On Direct Runner\n```bash\n.\u002Fgradlew :sdks:java:io:google-cloud-platform:integrationTest\n```\n\n#### With Custom GCP Settings\n```bash\n.\u002Fgradlew :sdks:java:io:google-cloud-platform:integrationTest \\\n  -PgcpProject=\u003Cproject> \\\n  -PgcpTempRoot=gs:\u002F\u002F\u003Cbucket>\u002Fpath\n```\n\n#### With Explicit Pipeline Options\n```bash\n.\u002Fgradlew :sdks:java:io:jdbc:integrationTest \\\n  -DbeamTestPipelineOptions='[\"--runner=TestDirectRunner\"]'\n```\n\n## Integration Test Framework\nLocated at `it\u002F` directory:\n- `it\u002Fcommon\u002F` - Common test utilities\n- `it\u002Fgoogle-cloud-platform\u002F` - GCP-specific test infrastructure\n- `it\u002Fjdbc\u002F` - JDBC test infrastructure\n- `it\u002Fkafka\u002F` - Kafka test infrastructure\n- `it\u002Ftestcontainers\u002F` - Testcontainers support\n\n## Writing Integration Tests\n\n### Basic Structure\n```java\n@RunWith(JUnit4.class)\npublic class MyIOIT {\n  @Rule public TestPipeline readPipeline = TestPipeline.create();\n  @Rule public TestPipeline writePipeline = TestPipeline.create();\n\n  @Test\n  public void testWriteAndRead() {\n    \u002F\u002F Write data\n    writePipeline.apply(Create.of(testData))\n                 .apply(MyIO.write().to(destination));\n    writePipeline.run().waitUntilFinish();\n\n    \u002F\u002F Read and verify\n    PCollection\u003CString> results = readPipeline.apply(MyIO.read().from(destination));\n    PAssert.that(results).containsInAnyOrder(expectedData);\n    readPipeline.run().waitUntilFinish();\n  }\n}\n```\n\n### Using TestPipeline\n```java\n@Rule public TestPipeline pipeline = TestPipeline.create();\n```\n\nTestPipeline:\n- Blocks on run by default (on TestDataflowRunner)\n- Has 15-minute default timeout\n- Reads options from `beamTestPipelineOptions` system property\n\n## GCP I\u002FO Connectors\n\n### BigQuery\n```java\n\u002F\u002F Read\npipeline.apply(BigQueryIO.readTableRows().from(\"project:dataset.table\"));\n\n\u002F\u002F Write\ndata.apply(BigQueryIO.writeTableRows()\n    .to(\"project:dataset.table\")\n    .withSchema(schema)\n    .withWriteDisposition(WriteDisposition.WRITE_APPEND));\n```\n\n### Pub\u002FSub\n```java\n\u002F\u002F Read\npipeline.apply(PubsubIO.readStrings().fromTopic(\"projects\u002Fproject\u002Ftopics\u002Ftopic\"));\n\n\u002F\u002F Write\ndata.apply(PubsubIO.writeStrings().to(\"projects\u002Fproject\u002Ftopics\u002Ftopic\"));\n```\n\n### Cloud Storage (TextIO)\n```java\n\u002F\u002F Read\npipeline.apply(TextIO.read().from(\"gs:\u002F\u002Fbucket\u002Fpath\u002F*.txt\"));\n\n\u002F\u002F Write\ndata.apply(TextIO.write().to(\"gs:\u002F\u002Fbucket\u002Foutput\").withSuffix(\".txt\"));\n```\n\n## Kafka Connector\n```java\n\u002F\u002F Read\npipeline.apply(KafkaIO.\u003CString, String>read()\n    .withBootstrapServers(\"localhost:9092\")\n    .withTopic(\"topic\")\n    .withKeyDeserializer(StringDeserializer.class)\n    .withValueDeserializer(StringDeserializer.class));\n\n\u002F\u002F Write\ndata.apply(KafkaIO.\u003CString, String>write()\n    .withBootstrapServers(\"localhost:9092\")\n    .withTopic(\"topic\")\n    .withKeySerializer(StringSerializer.class)\n    .withValueSerializer(StringSerializer.class));\n```\n\n## JDBC Connector\n```java\n\u002F\u002F Read\npipeline.apply(JdbcIO.\u003CRow>read()\n    .withDataSourceConfiguration(JdbcIO.DataSourceConfiguration\n        .create(\"org.postgresql.Driver\", \"jdbc:postgresql:\u002F\u002Fhost\u002Fdb\"))\n    .withQuery(\"SELECT * FROM table\"));\n\n\u002F\u002F Write\ndata.apply(JdbcIO.\u003CRow>write()\n    .withDataSourceConfiguration(config)\n    .withStatement(\"INSERT INTO table VALUES (?, ?)\"));\n```\n\n## Python I\u002FO Location\n`sdks\u002Fpython\u002Fapache_beam\u002Fio\u002F`\n\n### Common Python I\u002FOs\n- `textio` - Text files\n- `fileio` - General file operations\n- `avroio` - Avro files\n- `parquetio` - Parquet files\n- `gcp\u002F` - GCP connectors (BigQuery, Pub\u002FSub, Datastore, etc.)\n\n## Cross-language I\u002FO\nBeam supports using I\u002FO connectors from one SDK in another via the expansion service.\n\n```bash\n# Start Java expansion service\n.\u002Fgradlew :sdks:java:io:expansion-service:runExpansionService\n```\n\n## Creating New Connectors\n\nKey components:\n1. **Source** - Reads data (bounded or unbounded)\n2. **Sink** - Writes data\n3. **Read\u002FWrite transforms** - User-facing API\n\nFor more detailed information on developing new I\u002FO connectors see the [Developing new I\u002FO connectors SKILL](..\u002Fdeveloping-new-io-connectors\u002FSKILL.md).",{"name":5,"description":7},"master","aba9e790548a6870a46d2c085c817c2754f4a301",".agent\u002Fskills\u002Fio-connectors",4810,"https:\u002F\u002Fgithub.com\u002Fapache\u002Fbeam","https:\u002F\u002Fbeam.apache.org\u002F","https:\u002F\u002Fgithub.com\u002Fapache","https:\u002F\u002Fwww.apache.org\u002F","2026-11-14 06:08:33",{"source":8,"skillName":5,"commands":54,"prompt":64,"zipAvailable":65},[55,58,61],{"tool":56,"command":57},"npx","npx skills add apache\u002Fbeam --skill io-connectors",{"tool":59,"command":60},"bunx","bunx skills add apache\u002Fbeam --skill io-connectors",{"tool":62,"command":63},"pnpm","pnpm dlx skills add apache\u002Fbeam --skill io-connectors","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fapache\u002Fbeam\u002Fblob\u002Fmaster\u002F.agent\u002Fskills\u002Fio-connectors\u002FSKILL.md",true,[67,73,77,81,87],{"path":68,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":71,"sourceHtmlUrl":72},"README.md","REFERENCE","参考文档",7854,"https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fcreative-design\u002Fdraw-io\u002FREADME.md",{"path":74,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":75,"sourceHtmlUrl":76},"references\u002Faws-icons.md",28597,"https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fcreative-design\u002Fdraw-io\u002Freferences\u002Faws-icons.md",{"path":78,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":79,"sourceHtmlUrl":80},"references\u002Flayout-guidelines.md",1515,"https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fcreative-design\u002Fdraw-io\u002Freferences\u002Flayout-guidelines.md",{"path":82,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":85,"sourceHtmlUrl":86},"scripts\u002Fconvert-drawio-to-png.sh","SCRIPT","脚本",638,"https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fcreative-design\u002Fdraw-io\u002Fscripts\u002Fconvert-drawio-to-png.sh",{"path":88,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":89,"sourceHtmlUrl":90},"scripts\u002Ffind_aws_icon.py",2208,"https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fcreative-design\u002Fdraw-io\u002Fscripts\u002Ffind_aws_icon.py",[92,110,125,137,156,170],{"skillNo":93,"name":94,"nameZh":6,"description":95,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":96,"categories":97,"keywords":98,"publishedAt":39},"01M6ACDYBTKYKDP9Z0BQKF7XMZ","yaml-development","Guides YAML SDK development in Apache Beam, including environment setup, testing, and key concepts. Use when working with Beam YAML code in sdks\u002Fpython\u002Fapache_beam\u002Fyaml\u002F.","https:\u002F\u002Fgithub.com\u002Fapache\u002Fbeam\u002Fblob\u002Fmaster\u002F.agent\u002Fskills\u002Fyaml-development\u002FSKILL.md",[],[29,99,100,101,37,102,103,104,34,33,32,105,9,106,107,108,27,109],"yaml development","yaml","sdk","sdks","concepts","environment setup","environment","code","setup","python","testing",{"skillNo":111,"name":112,"nameZh":6,"description":113,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":114,"categories":115,"keywords":116,"publishedAt":39},"01M6ACDVK2M4QNJ2T0423H23SY","runners","Guides understanding and working with Apache Beam runners (Direct, Dataflow, Flink, Spark, etc.). Use when configuring pipelines for different execution environments or debugging runner-specific issues.","https:\u002F\u002Fgithub.com\u002Fapache\u002Fbeam\u002Fblob\u002Fmaster\u002F.agent\u002Fskills\u002Frunners\u002FSKILL.md",[],[112,117,118,9,30,28,119,34,120,27,32,37,121,122,33,123,124],"direct","flink","execution","spark","for","environments","runner","pipelines",{"skillNo":126,"name":127,"nameZh":6,"description":128,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":129,"categories":130,"keywords":132,"publishedAt":39},"01M6ACDRVH48A1WBYH9DEETW7F","python-development","Guides Python SDK development in Apache Beam, including environment setup, testing, building, and running pipelines. Use when working with Python code in sdks\u002Fpython\u002F.","https:\u002F\u002Fgithub.com\u002Fapache\u002Fbeam\u002Fblob\u002Fmaster\u002F.agent\u002Fskills\u002Fpython-development\u002FSKILL.md",[131],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[108,133,29,134,37,102,135,104,34,33,124,107,105,136,9,106,101,27,109,32],"python development","running","python code","python sdk",{"skillNo":138,"name":139,"nameZh":6,"description":140,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":141,"categories":142,"keywords":148,"publishedAt":39},"01M6ACDPYBMSHSQNCFXVJ7VJW3","license-compliance","Ensures all new files include proper Apache 2.0 license headers. Use when creating any new file in the Apache Beam repository.","https:\u002F\u002Fgithub.com\u002Fapache\u002Fbeam\u002Fblob\u002Fmaster\u002F.agent\u002Fskills\u002Flicense-compliance\u002FSKILL.md",[143],{"categoryNo":144,"categoryName":145,"taxonomyType":146,"taxonomyTypeDesc":147},"01JBSEEDCAT000000000000037","律师与法务","PROFESSION","适用职业",[149,150,151,152,38,37,153,32,154,155,9,27],"compliance","license compliance","license","headers","files","repository","file",{"skillNo":157,"name":158,"nameZh":6,"description":159,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":160,"categories":161,"keywords":163,"publishedAt":39},"01M6ACDM2W664NC4FH95B3NC14","java-development","Guides Java SDK development in Apache Beam, including building, testing, running examples, and understanding the project structure. Use when working with Java code in sdks\u002Fjava\u002F, runners\u002F, or examples\u002Fjava\u002F.","https:\u002F\u002Fgithub.com\u002Fapache\u002Fbeam\u002Fblob\u002Fmaster\u002F.agent\u002Fskills\u002Fjava-development\u002FSKILL.md",[162],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[164,165,29,109,166,167,32,168,112,9,106,169,101,27,33,134,37,102,34],"java development","java","project","structure","examples","project structure",{"skillNo":171,"name":172,"nameZh":6,"description":173,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":174,"categories":175,"keywords":176,"publishedAt":39},"01M6ACDF6YTQG62GC4JKAVQBJS","gradle-build","Guides understanding and using the Gradle build system in Apache Beam. Use when building projects, understanding dependencies, or troubleshooting build issues.","https:\u002F\u002Fgithub.com\u002Fapache\u002Fbeam\u002Fblob\u002Fmaster\u002F.agent\u002Fskills\u002Fgradle-build\u002FSKILL.md",[],[177,178,179,37,33,180,32,181,182,183,9,30,184,27],"gradle","build","gradle build","dependencies","troubleshooting","system","projects","building projects"]