Avro 형식 읽기
컬렉션을 사용해 정리하기
내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.
BigQueryIO 커넥터를 사용하여 Avro 형식을 읽습니다.
더 살펴보기
이 코드 샘플이 포함된 자세한 문서는 다음을 참조하세요.
코드 샘플
Java
Dataflow에 인증하려면 애플리케이션 기본 사용자 인증 정보를 설정합니다.
자세한 내용은 로컬 개발 환경의 인증 설정을 참조하세요.
달리 명시되지 않는 한 이 페이지의 콘텐츠에는 Creative Commons Attribution 4.0 라이선스에 따라 라이선스가 부여되며, 코드 샘플에는 Apache 2.0 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 Google Developers 사이트 정책을 참조하세요. 자바는 Oracle 및/또는 Oracle 계열사의 등록 상표입니다.
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["이해하기 어려움","hardToUnderstand","thumb-down"],["잘못된 정보 또는 샘플 코드","incorrectInformationOrSampleCode","thumb-down"],["필요한 정보/샘플이 없음","missingTheInformationSamplesINeed","thumb-down"],["번역 문제","translationIssue","thumb-down"],["기타","otherDown","thumb-down"]],[],[[["\u003cp\u003eThis code sample demonstrates how to use the BigQueryIO connector to read data in Avro format from a BigQuery table.\u003c/p\u003e\n"],["\u003cp\u003eThe code defines a custom data type, \u003ccode\u003eMyData\u003c/code\u003e, to hold records read from the table, with fields for \u003ccode\u003ename\u003c/code\u003e and \u003ccode\u003eage\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eA \u003ccode\u003eFromSchemaAndRecord\u003c/code\u003e function is implemented to convert Avro records from BigQuery into \u003ccode\u003eMyData\u003c/code\u003e instances.\u003c/p\u003e\n"],["\u003cp\u003eThe pipeline reads data using \u003ccode\u003eBigQueryIO.read()\u003c/code\u003e and a custom parsing function, then maps it to the \u003ccode\u003eMyData\u003c/code\u003e type for processing.\u003c/p\u003e\n"],["\u003cp\u003eThe sample outputs the data to the system, providing name and age from each record that was read from the BigQuery table.\u003c/p\u003e\n"]]],[],null,["# Read Avro format\n\nUse the BigQueryIO connector to read in Avro format.\n\nExplore further\n---------------\n\n\nFor detailed documentation that includes this code sample, see the following:\n\n- [Read from BigQuery to Dataflow](/dataflow/docs/guides/read-from-bigquery)\n\nCode sample\n-----------\n\n### Java\n\n\nTo authenticate to Dataflow, set up Application Default Credentials.\nFor more information, see\n\n[Set up authentication for a local development environment](/docs/authentication/set-up-adc-local-dev-environment).\n\n import org.apache.avro.generic.GenericRecord;\n import org.apache.avro.util.Utf8;\n import org.apache.beam.sdk.Pipeline;\n import org.apache.beam.sdk.coders.DefaultCoder;\n import org.apache.beam.sdk.extensions.avro.coders.AvroCoder;\n import org.apache.beam.sdk.io.gcp.bigquery.BigQueryIO;\n import org.apache.beam.sdk.io.gcp.bigquery.BigQueryIO.TypedRead;\n import org.apache.beam.sdk.io.gcp.bigquery.SchemaAndRecord;\n import org.apache.beam.sdk.options.PipelineOptionsFactory;\n import org.apache.beam.sdk.transforms.MapElements;\n import org.apache.beam.sdk.transforms.SerializableFunction;\n import org.apache.beam.sdk.values.TypeDescriptor;\n\n public class BigQueryReadAvro {\n\n // A custom datatype to hold a record from the source table.\n @DefaultCoder(AvroCoder.class)\n public static class MyData {\n public String name;\n public Long age;\n\n // Function to convert Avro records to MyData instances.\n public static class FromSchemaAndRecord\n implements SerializableFunction\u003cSchemaAndRecord, MyData\u003e {\n @Override public MyData apply(SchemaAndRecord elem) {\n MyData data = new MyData();\n GenericRecord record = elem.getRecord();\n data.name = ((Utf8) record.get(\"user_name\")).toString();\n data.age = (Long) record.get(\"age\");\n return data;\n }\n }\n }\n\n public static void main(String[] args) {\n // Parse the pipeline options passed into the application. Example:\n // --projectId=$PROJECT_ID --datasetName=$DATASET_NAME --tableName=$TABLE_NAME\n // For more information, see https://beam.apache.org/documentation/programming-guide/#configuring-pipeline-options\n PipelineOptionsFactory.register(ExamplePipelineOptions.class);\n ExamplePipelineOptions options = PipelineOptionsFactory.fromArgs(args)\n .withValidation()\n .as(ExamplePipelineOptions.class);\n\n // Create a pipeline and apply transforms.\n Pipeline pipeline = Pipeline.create(options);\n pipeline\n // Read table data into Avro records, using an application-defined parsing function.\n .apply(BigQueryIO.read(new MyData.FromSchemaAndRecord())\n .from(String.format(\"%s:%s.%s\",\n options.getProjectId(),\n options.getDatasetName(),\n options.getTableName()))\n .withMethod(TypedRead.Method.DIRECT_READ))\n // The output from the previous step is a PCollection\u003cMyData\u003e.\n .apply(MapElements\n .into(TypeDescriptor.of(MyData.class))\n .via((MyData x) -\u003e {\n System.out.printf(\"Name: %s, Age: %d%n\", x.name, x.age);\n return x;\n }));\n pipeline.run().waitUntilFinish();\n }\n }\n\nWhat's next\n-----------\n\n\nTo search and filter code samples for other Google Cloud products, see the\n[Google Cloud sample browser](/docs/samples?product=dataflow)."]]