从AWS S3 ORC格式数据库读取节点中的数据



我的客户拥有AWS s3 ORC格式的数据库。现在我必须查询以从s3中获取数据。为了做到这一点,我使用了亚马逊的雅典娜,但问题是使用它的成本价。所以我只想问一下,是否有其他方法可以在节点js中查询ORC格式。下面是雅典娜一世使用的密码。

"use strict";
const AthenaExpress = require("athena-express"),
aws = require("aws-sdk"),
awsCredentials = {
region: "<region>"
};
aws.config.update(awsCredentials);
const athenaExpressConfig = {
aws,
s3: "s3://<bucketName>/<folder>/<folder>",
getStats: true
};
const athenaExpress = new AthenaExpress(athenaExpressConfig);
// console.log('athenaExpress');
// console.log(athenaExpress);
//Invoking a query on Amazon Athena
(async () => {
let query = {
sql: "SELECT * FROM cityMaster LIMIT 3",
db: "<dbName>",
getStats: true
};
try {
let results = await athenaExpress.query(query);
console.log(results);
} catch (error) {
console.log(error);
}
})(); 

我一直在谷歌上搜索,但没有得到任何教程或博客来查询nodejs中的ORC格式。有人能指导我如何访问节点js中的S3 ORC数据吗。

我认为这里的主要问题是您需要Node.js的'查询服务'。需要注意的是,S3更像是数据存储的容器,而不是数据库本身(因此需要Amazon Athena,它是一个查询服务(。您要做的是首先将S3连接到某种查询服务或数据库,以便分析ORC数据,然后将生成的表/查询连接到Node.js。

我看到人们使用的S3数据分析的替代方案是PrestoSnowflake(Snowflake是这两种数据中不太常见的,可能是因为成本?(。

  • 关于将Presto与AWS Athena进行比较的文章
  • 关于将Snowflake与AWS Athena进行比较的文章

根据我能找到的材料,听起来Snowflake是两者中更容易的选择,如果你想在Docker容器上运行Hive元存储,Presto则是更难的选择。在开始使用服务之前,一定要了解服务的成本(查询和存储数据(。

  • 这是一篇关于使用Presto访问S3数据的文章(另一篇查询数据(
  • 下面是一篇关于在S3中查询ORC数据的文章装载前雪花

一旦数据在Presto或Snowflake中,将数据连接到Node.js看起来相对简单(请参阅Presto和Snowflak的npm包(。

最新更新