簡體   English   中英

通過 Athena 創建 Glue 數據目錄 SDK

[英]Create Glue data catalog via Athena SDK

我想使用 Athena 對另一個 AWS 賬戶中 S3 存儲桶中的數據運行查詢。 我正在使用 Javascript SDK。通過閱讀文檔,我明白我必須首先創建一個數據目錄,將 Athena 指向正確的 S3 位置。

我認為我必須調用createDataCatalog方法。 此方法的大部分 arguments 都是不言自明的,除了“參數”參數,它似乎包含有關如何創建數據目錄的信息。 但我無法在任何地方找到這些參數的外觀。

所以我的問題是:

  1. 提供給這里的參數是什么?
  2. 這是創建粘合數據目錄(包括數據庫和表)的正確方法嗎?
  3. 完成后,這是否允許我在數據目錄上運行 Athena 查詢?

對於具有 static S3 數據的簡單用例,

  • 我們首先需要使用指向 S3 位置的 Glue createTable API 創建 Glue Table。 cli 文檔中的幾個示例。
  • Athena對這個 Glue Table 運行查詢

下面是創建 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",
                  Type: "string",
                },
              ],
            },
          },
        },
        function (error, response) {
          console.log("error", error, "response", response);
        }
      );
    } else {
      console.log("dbCrtErr", dbCrtErr);
    }
  }
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM