如何解决通过 Athena SDK 创建 Glue 数据目录
我想使用 Athena 对另一个 AWS 账户中的 S3 存储桶中的数据运行查询。我正在使用 Javascript SDK。通读 documentation,我明白我必须首先创建一个数据目录,将 Athena 指向正确的 S3 位置。
我认为我必须调用 createDataCatalog 方法。此方法的大多数参数都是不言自明的,除了“参数”参数,它似乎包含有关如何创建数据目录的信息。但我无法在任何地方找到这些参数的外观。
所以我的问题是:
- 这里需要提供哪些参数?
- 这是创建粘合数据目录(包括数据库和表)的正确方法吗?
- 完成后,我是否可以在数据目录上运行 Athena 查询?
解决方法
对于静态 S3 数据的简单用例,
- 我们首先需要使用指向 S3 位置的 Glue createTable API 创建 Glue 表。 cli documentation 中的几个例子。
- 针对 Athena 中的此 Glue 表运行查询
这是一个创建胶水数据库和表的例子
const AWS = require("aws-sdk");
AWS.config.update({ region: "us-east-1" });
const glue = new AWS.Glue();
const dbName = "test-db";
glue.createDatabase(
{
DatabaseInput: {
Name: dbName,},function (dbCrtErr,dbRsp) {
if (dbCrtErr.message === "Database already exists." || dbRsp) {
console.log("dbRsp",dbRsp);
glue.createTable(
{
DatabaseName: dbName,TableInput: {
Name: "my-table",Parameters: {
classification: "json",compressionType: "none",TableType: "EXTERNAL_TABLE",StorageDescriptor: {
Location: "s3://my-s3-bucket-with-events/",InputFormat:
"org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat",OutputFormat:
"org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat",Columns: [
{
Name: "id",Type: "string",{
Name: "name",],function (error,response) {
console.log("error",error,"response",response);
}
);
} else {
console.log("dbCrtErr",dbCrtErr);
}
}
);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。