Sửa lỗi An error occurred while calling o84.getCatalogSource

Sửa lỗi An error occurred while calling o84.getCatalogSource

Share Everywhere

Table of contents

Nguyên nhân bạn gặp lỗi “An error occurred while calling o84.getCatalogSource. No classification or connection in <db_name>.<view_name>.” nhưng câu lệnh với bảng này lại được thực hiện bình thường trên Athena, kiểm tra thấy bảng bạn đang sử dụng có classification là Unknown thì rất có thể là do Presto views (view tạo bởi Athena) ngoài Athena sẽ không thể sử dụng. Glue Data Catalog chỉ lưu trữ định nghĩa metadata của view, nên không có thông tin classification. (Xem phần giải thích cuối bài viết để biết thêm thông tin chi tiết + docs dẫn chứng cho nhận định này).

Giải pháp cho lỗi này là bạn hãy sử dụng Athena JDBC driver như là custom JDBC driver trong Glue job để có thể query view mà bạn muốn sử dụng.

Để sử dụng Athena JDBC driver trong Glue job bạn làm như sau:

  • Bước 1: Download Athena JDBC driver tại đây: https://docs.aws.amazon.com/ja_jp/athena/latest/ug/connect-with-jdbc.html
  • Bước 2: Upload Athena JDBC driver đã download ở bước 1 lên S3 bucket.
  • Bước 3: Chỉ định Athena JDBC driver trong Glue job: Tại màn hình tạo job, Click chọn tab “Job details”, click chọn “Advanced properties”. Chỉ định S3 URI dẫn tới Athena JDBC driver tại mục “Dependent JARs path” (customjdbc.png)
  • Bước 4: Sửa lại script Glue job của bạn để query một Athena view như source cho data frame, như sample dưới đây:
athena_view_dataframe = ( 
     glueContext.read.format("jdbc") 
     .option("driver", "com.simba.athena.jdbc.Driver") 
     .option("AwsCredentialsProviderClass","com.simba.athena.amazonaws.auth.InstanceProfileCredentialsProvider") 
     .option("url", "jdbc:awsathena://athena.ap-northeast-1.amazonaws.com:443") 
     .option("dbtable", "AwsDataCatalog.<database>.<table>") 
     .option("S3OutputLocation","s3://<s3-output-bucket>/") 
     .load() 
     ) 
datasource0 = DynamicFrame.fromDF(athena_view_dataframe, glueContext, "athena_view_source") 

Tôi đã thực hiện kiểm chứng, và kết quả là:

  • Khi chưa sử dụng Athena JDBC driver: Glue job bị lỗi “getCatalogSource. No classification or connection” giống như lỗi bạn gặp.
  • Khi đã sử dụng Athena JDBC driver: Job thực hiện thành công.
custom jdbc
custom jdbc
custom jdbc
job error
job success
job success

Giải thích:

Để có được thông tin này, chúng tôi đã tham khảo ở 2 blog sau:

[1] Using Athena Views As A Source In Glue

https://dev.to/aws-builders/using-athena-views-as-a-source-in-glue-k09

[2]Extract and transform data from AWS Athena’s views and load into AWS S3 as a CSV file using AWS Glue.

https://medium.com/@teckonn/extract-and-transform-data-from-aws-athenas-views-and-load-into-aws-s3-as-a-csv-file-using-aws-bffe7e65db8d

Chúng tôi cũng đã kiểm chứng lại thông tin được nhắc đến trong blog tại các tài liệu sau:

[1] https://docs.aws.amazon.com/glue/latest/dg/tables-described.html

——

When you define a table manually using the console or an API, you specify the table schema and the value of a classification field that indicates the type and format of the data in the data source.

——

=> Bảng hiện tại đang có classification là Unknown nên Glue báo lỗi

[2] https://docs.aws.amazon.com/athena/latest/ug/views.html

——

You cannot use views created in Athena with federated data sources, external Hive metastores, or UDFs.

——

=> Hiện tại đang sử dụng view của Athena với Glue job, nên có lỗi xảy ra

[3] https://docs.aws.amazon.com/glue/latest/dg/console-tables.html

——

A table in the AWS Glue Data Catalog is the metadata definition that represents the data in a data store

——

=> Vì chỉ có metadata nên không có được thông tin classification

Bạn thấy bài viết này như thế nào?
0 reactions

Add new comment

Restricted HTML

  • Allowed HTML tags: <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • Lines and paragraphs break automatically.
  • Web page addresses and email addresses turn into links automatically.

Bài viết liên quan

Khám phá FinOps

Khám phá FinOps - công nghệ đám mây

Nhiều doanh nghiệp ngày nay lựa chọn chuyển sang công nghệ đám mây với hi vọng đạt được lợi thế cạnh tranh so với đối thủ nhờ tiềm năng về hiệu quả cao và tiết kiệm chi phí hơn của công nghệ này.
Microservices Roadmap

Microservices Roadmap

- Kafka, RabbitMQ, Amazon SQS: Efficient and reliable message brokers for seamless communication between microservices.
The Data Analyst Roadmap

The Data Analyst Roadmap

**Database Knowledge**: Gain proficiency in working with databases like MySQL, PostgreSQL, or MongoDB.
Architectural patterns in software design

Architectural patterns in software design

Choose the architecture that aligns with your application's unique needs and goals. Each pattern offers a tailored approach to elevate your software system!
Exploring the Technological Marvel Behind Netflix

Exploring the Technological Marvel Behind Netflix

Ever wondered about the tech wizardry that powers your binge-watching adventures on Netflix?